#
# 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.
#

# test for defining topology as property file
apex.operator.O1.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$DummyInputOperator
apex.operator.O1.inputOperatorProp=1

apex.operator.O2.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$DummyOperator
apex.operator.O2.operatorProp=2

apex.operator.Ma.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$Level2ModuleA
apex.operator.Ma.level2ModuleAProp1=11
apex.operator.Ma.level2ModuleAProp2=12
apex.operator.Ma.level2ModuleAProp3=13

apex.operator.Mb.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$Level2ModuleB
apex.operator.Mb.level2ModuleBProp1=21
apex.operator.Mb.level2ModuleBProp2=22
apex.operator.Mb.level2ModuleBProp3=23

apex.operator.Mc.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$Level2ModuleA
apex.operator.Mc.level2ModuleAProp1=31
apex.operator.Mc.level2ModuleAProp2=32
apex.operator.Mc.level2ModuleAProp3=33

apex.operator.Md.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$Level2ModuleB
apex.operator.Md.level2ModuleBProp1=41
apex.operator.Md.level2ModuleBProp2=42
apex.operator.Md.level2ModuleBProp3=43

apex.operator.Me.classname=com.datatorrent.stram.plan.logical.module.TestModuleExpansion$Level3Module

apex.stream.O1_O2.source=O1.out
apex.stream.O1_O2.sinks=O2.in,Me.mIn

apex.stream.O2_Ma.source=O2.out1
apex.stream.O2_Ma.sinks=Ma.mIn

apex.stream.Ma_Mb.source=Ma.mOut1
apex.stream.Ma_Mb.sinks=Mb.mIn

apex.stream.Ma_Md.source=Ma.mOut2
apex.stream.Ma_Md.sinks=Md.mIn

apex.stream.Mb_Mc.source=Mb.mOut2
apex.stream.Mb_Mc.sinks=Mc.mIn
