<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="testConf.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.
-->

<configuration>
    <!-- Normal mode is test. To run just the commands and dump the output
         to the log, set it to nocompare -->
    <mode>test</mode>

    <!--  Comparator types:
             ExactComparator
             SubstringComparator
             RegexpComparator
             TokenComparator
             -->
    <tests>
        <test>  <!-- TESTED -->
            <description>rm -r directory that meet warning criteria when -safely is not used</description>
            <test-commands>
                <command>-fs NAMENODE -mkdir /dir0</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /dir0/data15bytes</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data30bytes /dir0/data30bytes</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data60bytes /dir0/data60bytes</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data120bytes /dir0/data120bytes</command>
                <command>-fs NAMENODE -mkdir /dir0/dir00</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /dir0/dir00/data15bytes</command>
                <command>-fs NAMENODE -mkdir /dir0/dir01</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data30bytes /dir0/dir01/data30bytes</command>
                <command>-fs NAMENODE -ls /dir0</command>
                <command>-fs NAMENODE -rm -r /dir0</command>
            </test-commands>
            <cleanup-commands>
                <command>-fs NAMENODE -rm -r /dir0</command>
            </cleanup-commands>
            <comparators>
                <comparator>
                    <type>RegexpComparator</type>
                    <expected-output>Deleted /dir0</expected-output>
                </comparator>
            </comparators>
        </test>
        <test>  <!-- TESTED -->
            <description>rm -r directory that does not meet warning criteria when -safely is used</description>
            <test-commands>
                <command>-fs NAMENODE -mkdir /dir0</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /dir0/data15bytes</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data30bytes /dir0/data30bytes</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data60bytes /dir0/data60bytes</command>
                <command>-fs NAMENODE -mkdir /dir0/dir00</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /dir0/dir00/data15bytes</command>
                <command>-fs NAMENODE -mkdir /dir0/dir01</command>
                <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data30bytes /dir0/dir01/data30bytes</command>
                <command>-fs NAMENODE -ls /dir0</command>
                <command>-fs NAMENODE -rm -r -safely /dir0</command>
            </test-commands>
            <cleanup-commands>
                <command>-fs NAMENODE -rm -r /dir0</command>
            </cleanup-commands>
            <comparators>
                <comparator>
                    <type>RegexpComparator</type>
                    <expected-output>Deleted /dir0</expected-output>
                </comparator>
            </comparators>
        </test>
    </tests>
</configuration>
