<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
   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.
-->
<!--
  Properties set here are picked up in the client.
  They are not passed to the AM
-->
<configuration>
  <property>
    <name>slider.client.resource.origin</name>
    <value>configs/sandbox/slider</value>
    <description>This is just for diagnostics</description>
  </property>

  <property>
    <name>yarn.resourcemanager.address</name>
    <value>sandbox:8050</value>
  </property>
  
  <property>
    <name>fs.defaultFS</name>
    <value>file:///</value>
  </property>

  <property>
    <name>slider.funtest.enabled</name>
    <value>false</value>
  </property>
  
  <property>
    <name>slider.security.enabled</name>
    <value>false</value>
  </property>
  
  <property>
    <name>yarn.application.classpath</name>
    <value>
      /etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*
    </value>
  </property>
  
  <property>
    <name>slider.test.hbase.tar</name>
    <description>Path to the HBase Tar file in HDFS</description>
    <value></value>
  </property>
  
  <property>
    <name>slider.test.hbase.appconf</name>
    <description>Path to the directory containing the HBase application config</description>
    <value></value>
  </property>
 
  <property>
    <name>slider.test.zkhosts</name>
    <description>list of the zookeeper hosts</description>
    <value></value>
  </property>
  
  <property>
    <name>slider.test.accumulo.enabled</name>
    <description>Flag to enable/disable Accumulo tests</description>
    <value>false</value>
  </property>
  
  <property>
    <name>slider.test.hbase.enabled</name>
    <description>Flag to enable/disable HBase tests</description>
    <value>false</value>
  </property>

  <property>
    <name>slider.test.accumulo.tar</name>
    <description>Path to the Accumulo Tar file in HDFS</description>
    <value></value>
  </property>


  <property>
    <name>slider.test.am.restart.time</name>
    <description>Time in millis to await an AM restart</description>
    <value></value>
  </property>


  <property>
    <name>slider.test.accumulo.appconf</name>
    <description>Path to the directory containing the Accumulo application
      config
    </description>
    <value>file://${user.dir}/src/test/configs/sandbox/accumulo</value>
  </property>


  <property>
    <name>zk.home</name>
    <value>/usr/lib/zookeeper</value>
    <description>Zookeeper home dir on target systems</description>
  </property>

  <property>
    <name>hadoop.home</name>
    <value>/usr/lib/hadoop</value>
    <description>Hadoop home dir on target systems</description>
  </property>

</configuration>
