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

app.runner.class=org.apache.samza.runtime.LocalApplicationRunner

app.class=org.apache.samza.test.integration.TestStandaloneIntegrationApplication

app.name=test-app-name
app.id=test-app-id
job.name=test-app-name
job.id=test-app-id

## Kafka I/O system properties.
task.inputs=standalone_integration_test_kafka_input_topic
input.stream.name=standalone_integration_test_kafka_input_topic
job.default.system=testSystemName
systems.testSystemName.samza.factory=org.apache.samza.system.kafka.KafkaSystemFactory
systems.testSystemName.producer.bootstrap.servers=localhost:9092
systems.testSystemName.consumer.zookeeper.connect=localhost:2181

## Zookeeper coordination properties
job.coordinator.zk.connect=localhost:2181
job.coordinator.factory=org.apache.samza.zk.ZkJobCoordinatorFactory
task.shutdown.ms=4000
job.debounce.time.ms=4000
job.coordinator.zk.consensus.timeout.ms=4000
job.coordinator.zk.session.timeout.ms=4000

job.systemstreampartition.grouper.factory=org.apache.samza.container.grouper.stream.GroupByPartitionFactory
task.name.grouper.factory=org.apache.samza.container.grouper.task.GroupByContainerIdsFactory