#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

# Operations to be done.
description: Operations to be run before Controller upgrade
operations:
  - type: streamOp
    description: create Kafka topic PinotRealtimeFeatureTest2Event
    op: CREATE
    streamConfigFileName: feature-test-2-realtime-stream-config.json
  - type: streamOp
    description: create Kafka topic PinotRealtimeFeatureTest3Event
    op: CREATE
    streamConfigFileName: feature-test-3-realtime-stream-config.json
  - type: tableOp
    description: Create realtime table FeatureTest2
    op: CREATE
    schemaFileName: FeatureTest2-schema.json
    tableConfigFileName: feature-test-2-realtime.json
    recordReaderConfigFileName: data/recordReaderConfig.json
  - type: tableOp
    description: Create realtime table FeatureTest3
    op: CREATE
    schemaFileName: FeatureTest3-schema.json
    tableConfigFileName: feature-test-3-realtime.json
    recordReaderConfigFileName: data/recordReaderConfig-FeatureTest3.json
  - type: tableOp
    description: Create offline table FeatureTest1
    op: CREATE
    schemaFileName: FeatureTest1-schema.json
    tableConfigFileName: feature-test-1.json
  - type: segmentOp
    description: Add segment FeatureTest1_Segment to table FeatureTest1
    op: UPLOAD
    inputDataFileName: data/FeatureTest1-data-00.csv
    schemaFileName: FeatureTest1-schema.json
    tableConfigFileName: feature-test-1.json
    recordReaderConfigFileName: data/recordReaderConfig.json
    segmentName: FeatureTest1_Segment
  - type: streamOp
    description: publish rows to PinotRealtimeFeatureTest2Event
    op: PRODUCE
    streamConfigFileName: feature-test-2-realtime-stream-config.json
    numRows: 66
    inputDataFileName: data/FeatureTest2-data-realtime-00.csv
    recordReaderConfigFileName: data/recordReaderConfig.json
    tableConfigFileName: feature-test-2-realtime.json
  - type: streamOp
    description: publish rows to PinotRealtimeFeatureTest3Event
    op: PRODUCE
    streamConfigFileName: feature-test-3-realtime-stream-config.json
    numRows: 300
    inputDataFileName: data/FeatureTest3-data-realtime-00.csv
    recordReaderConfigFileName: data/recordReaderConfig-FeatureTest3.json
    tableConfigFileName: feature-test-3-realtime.json
  - type: queryOp
    description: Run query on FeatureTest1 using SQL
    queryFileName: queries/feature-test-1-sql.queries
    expectedResultsFileName: query-results/feature-test-1-rest-sql.results
  - type: queryOp
    description: Run query on FeatureTest2 using SQL
    queryFileName: queries/feature-test-2-sql-realtime.queries
    expectedResultsFileName: query-results/feature-test-2-sql-realtime.results
  - type: queryOp
    description: Run query on FeatureTest3 using SQL
    queryFileName: queries/feature-test-3-sql-realtime.queries
    expectedResultsFileName: query-results/feature-test-3-sql-realtime.results


