<?xml version="1.0"?>
<!--

    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.

-->
<configuration>
  <!--
  <property>
    <name>dt.application.{appName}.operator.{opName}.prop.{propName}</name>
    <value>some-default-value (if value is not specified, it is required from the user or custom config when launching)</value>
  </property>
  -->
  <property>
    <name>dt.application.*.operator.*.attr.MEMORY_MB</name>
    <value>2048</value>
  </property>
  <property>
    <name>dt.attr.MASTER_MEMORY_MB</name>
    <value>1024</value>
  </property>
  <property>
    <name>dt.application.PerformanceBenchmarkForFixedNumberOfTuples.operator.WordGenerator.count</name>
    <value>1000</value>
  </property>
  <property>
    <name>dt.rootDbUrl</name>
    <value></value>
    <description>Root DbUrl.</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.HiveOperator.store.filepath</name>
    <value></value>
    <description>Filepath</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.DateGenerator.tuplesPerWindow</name>
    <value>100</value>
    <description>Max windows with no data</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.HiveOperator.tablename</name>
    <value>temp</value>
    <description>tablename for insert string</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.RollingFsWriter.filePermission</name>
    <value>511</value>
    <description>Permission</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.RollingFsWriter.maxLength</name>
    <value>512</value>
    <description>Max Length</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.HiveOperator.store.connectionProperties</name>
    <value></value>
    <description>The connection properties for the database.</description>
  </property>
  <property>
    <name>dt.application.HiveMapInsertBenchmarkingApp.operator.HiveOperator.store.filepath</name>
    <value></value>
    <description>Filepath</description>
  </property>
  <property>
    <name>dt.application.HiveMapInsertBenchmarkingApp.operator.HiveOperator.tablename</name>
    <value>tempMap</value>
    <description>tablename for insert map</description>
  </property>
  <property>
    <name>dt.application.HiveInsertBenchmarkingApp.operator.HiveOperator.store.dbUrl</name>
    <value></value>
    <description>Test database connector string.</description>
  </property>
  <property>
    <name>dt.application.HiveMapInsertBenchmarkingApp.operator.RollingFsMapWriter.delimiter</name>
    <value>:</value>
    <description>Delimiter for map</description>
  </property>
  <property>
    <name>dt.application.HiveMapInsertBenchmarkingApp.operator.HiveOperator.store.dbUrl</name>
    <value></value>
    <description>Test database connector string.</description>
  </property>
  <property>
    <name>dt.application.HiveMapInsertBenchmarkingApp.operator.HiveOperator.store.connectionProperties</name>
    <value></value>
    <description>Test database connector string.</description>
  </property>
  <property>
    <name>dt.application.HiveMapInsertBenchmarkingApp.operator.RollingFsMapWriter.maxLength</name>
    <value>512</value>
    <description>Max Length</description>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseOuput.port.*.QUEUE_CAPACITY</name>
    <value>32768</value>
    <description>Specify queue capacity for all output ports</description>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseInput.port.*.QUEUE_CAPACITY</name>
    <value>32768</value>
    <description>Specify queue capacity for all input ports</description>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseUpdate.port.*.QUEUE_CAPACITY</name>
    <value>32768</value>
    <description>Specify queue capacity for all update ports</description>
  </property>

  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseOutput.store.uriString</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseOutput.store.bucket</name>
    <value>default</value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseOutput.store.password</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseOutput.store.bucketMeta</name>
    <value>default</value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppOutput.operator.couchbaseOutput.store.passwordMeta</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.couchbaseAppOutput.operator.couchbaseOutput.store.max_tuples</name>
    <value>1000</value>
  </property>
  <property>
    <name>dt.application.couchbaseAppOutput.operator.couchbaseOutput.store.queueSize</name>
    <value>100</value>
  </property>
  <property>
    <name>dt.application.couchbaseAppOutput.operator.couchbaseOutput.store.blocktime</name>
    <value>10000</value>
  </property>
  <property>
    <name>dt.application.couchbaseAppOutput.operator.couchbaseOutput.store.timeout</name>
    <value>10000</value>
  </property>
  <property>
    <name>dt.application.couchbaseAppOutput.operator.couchbaseOutput.store.userConfig</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.couchbaseAppOutput.operator.couchbaseOutput.store.passwordConfig</name>
    <value></value>
  </property>

  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.uriString</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.blocktime</name>
    <value>1000</value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.timeout</name>
    <value>1000</value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.bucket</name>
    <value>default</value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.password</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.bucketMeta</name>
    <value>default</value>
  </property>
  <property>
    <name>dt.application.CouchBaseAppInput.operator.couchbaseInput.store.passwordMeta</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.ManagedStateBenchmark.operator.Store.execModeStr</name>
    <!-- valid value are: INSERT, UPDATE_SYNC, UPDATE_ASYNC -->
    <value>INSERT</value>
  </property>

</configuration>

