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

state.store.fs.uri=file:///
state.store.dir=gobblin-test/state-store

taskexecutor.threadpool.size=2
tasktracker.threadpool.coresize=2
tasktracker.threadpool.maxsize=2

metrics.dir=gobblin-test/metrics
metrics.report.interval=1000

writer.staging.dir=gobblin-test/basicTest/tmp/taskStaging
writer.output.dir=gobblin-test/basicTest/tmp/taskOutput

data.publisher.replace.final.dir=false
data.publisher.final.dir=gobblin-test/jobOutput

launcher.type=MAPREDUCE
job.lock.enabled=false
mr.job.root.dir=gobblin-test/mr-jobs
