<?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.operator.lineInput.prop.files</name>
     <value>/user/appuser/test</value>
  </property>
  <property>
    <name>dt.operator.*.attr.MEMORY_MB</name>
     <value>5000</value>
  </property>
  <property>
    <name>dt.operator.s3output.prop.accessKey</name>
    <value>ACCESS_KEY_ID</value>
  </property>
  <property>
    <name>dt.operator.s3output.prop.secretAccessKey</name>
    <value>SECRET_ACCESS_KEY</value>
  </property>
  <property>
    <name>dt.operator.s3output.prop.bucketName</name>
    <value>BUCKET_NAME</value>
  </property>
  <property>
    <name>dt.operator.s3output.prop.outputDirectoryPath</name>
    <value>test</value>
  </property>
  <property>
    <name>dt.operator.s3output.prop.maxTuplesPerSecPerPartition</name>
    <value>300000</value>
  </property>
  <property>
    <name>dt.operator.s3output.prop.maxS3UploadPartitions</name>
    <value>8</value>
  </property>
  <property>
    <name>dt.operator.lineInput.prop.maxReaders</name>
     <value>8</value>
  </property>
  <property>
    <name>dt.operator.lineInput.prop.minReaders</name>
     <value>1</value>
  </property>
  <!--property>
    <name>dt.loggers.level</name>
    <value>org.apache.apex.malhar.lib.fs.s3.*:DEBUG,org.apache.apex.*:DEBUG,com.datatorrent.stram.plan.physical.*:DEBUG,org.apache.apex.malhar.lib.*:DEBUG</value>
  </property-->
</configuration>
