<?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>
    <!-- Tests for ls -->
    <test> <!-- TESTED -->
      <description>ls: file using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -ls /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: file using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -ls file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -ls file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: directory using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -ls /</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: directory using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -ls </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: directory using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir3</command>
        <command>-fs NAMENODE -mkdir -p dir4</command>
        <command>-fs NAMENODE -ls </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir4</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: file/directory that does not exist in /</description>
      <test-commands>
        <command>-fs NAMENODE -ls /file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: file/directory that does not exist in home directory (/user/username)</description>
      <test-commands>
        <command>-fs NAMENODE -ls /user</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `/user': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Non-URI input file at Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: file at hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -ls hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Non-URI input file at Namenode's path using globing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -ls NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: file at hdfs:// path using globing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -ls hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Non-URI input dir at Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p NAMENODE/user/dir1</command>
        <command>-fs NAMENODE -ls hdfs:///user/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///user/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Found [0-9] items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: dir at hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p hdfs:///user/dir1</command>
        <command>-fs NAMENODE -ls hdfs:///user/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///user/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Found [0-9] items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Non-URI input dir at Namenode's path using globing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p NAMENODE/user/dir1</command>
        <command>-fs NAMENODE -mkdir -p NAMENODE/user/dir2</command>
        <command>-fs NAMENODE -mkdir -p NAMENODE/user/dir3</command>
        <command>-fs NAMENODE -ls hdfs:///user/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///user/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Found [0-9] items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: dir at hdfs:// path using globing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p hdfs:///user/dir1</command>
        <command>-fs NAMENODE -mkdir -p hdfs:///user/dir2</command>
        <command>-fs NAMENODE -mkdir -p hdfs:///user/dir3</command>
        <command>-fs NAMENODE -ls hdfs:///user/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///user/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Found [0-9] items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///user/dir3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls:  non-existent file/directory at hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -ls hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <!-- no cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls:  non-existent file/directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <!-- no cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for ls -R -->
    <test> <!-- TESTED -->
      <description>ls: files/directories using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -touchz /dir0/dir2/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir2/file2</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/dir1/file2</command>
        <command>-fs NAMENODE -touchz /dir0/dir2/dir2/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir2/dir2/file2</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2/dir2/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir2/dir2/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: files/directories using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -touchz dir0/dir2/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir2/file2</command>
        <command>-fs NAMENODE -touchz dir0/dir1/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/dir1/file2</command>
        <command>-fs NAMENODE -touchz dir0/dir2/dir2/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir2/dir2/file2</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir2/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir2/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: files/directories using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -touchz dir0/dir2/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir2/file2</command>
        <command>-fs NAMENODE -touchz dir0/dir1/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/dir1/file2</command>
        <command>-fs NAMENODE -touchz dir0/dir2/dir2/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir2/dir2/file2</command>
        <command>-fs NAMENODE -ls -R dir0/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <!-- JIRA?
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^/user/[a-zA-z0-9]*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^/user/[a-zA-z0-9]*/dir0/dir2</expected-output>
        </comparator>
       -->
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir2/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir2/dir2/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: file/directory that does not exist in /</description>
      <test-commands>
        <command>-fs NAMENODE -ls -R /file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: file/directory that does not exist in home directory (/user/username)</description>
      <test-commands>
        <command>-fs NAMENODE -ls -R /user</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `/user': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: dir at hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -ls -R hdfs:///</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///dir0</command>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: files/directories in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
      </comparators>
    </test>
     
    <test> <!-- TESTED -->
      <description>ls: Non-existent file/directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -ls -R hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>ls: dir at Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///dir0</command>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Non-URI input files/directories in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Non-URI input for non-existent file/directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -ls -R NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Negative test for quoted /*/* globbing </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -ls -R /\*/\*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `/*/*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>ls: Test for quoted globbing </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/\*</command>
        <command>-fs NAMENODE -touchz /dir0/\*/file</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -ls -R /dir0/\*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/\*/file</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: Test for quoted globbing </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/\*</command>
        <command>-fs NAMENODE -touchz /dir0/\*/file</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -rm -r /dir0/\*</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for du -->
    <test> <!-- TESTED -->
      <description>du: file using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -du /data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: file using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytesZZ</command>
        <command>-fs NAMENODE -du data15bytesZZ</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm data15bytesZZ</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+data15bytesZZ</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p CLITEST_DATA</command> 
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes data120bytes</command>
        <command>-fs NAMENODE -du data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm data*bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^120\s+data120bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+data30bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^60\s+data60bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: directory using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/data15bytes</command>
        <command>-fs NAMENODE -du /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/dir0/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: directory using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/data15bytes</command>
        <command>-fs NAMENODE -du dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+dir0/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: directory using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/data120bytes</command>
        <command>-fs NAMENODE -du /dir0/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15( |\t)*/dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30( |\t)*/dir0/data30bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^60( |\t)*/dir0/data60bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^120( |\t)*/dir0/data120bytes</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>du: Test for hdfs:// path - file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -du hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for hdfs:// path - files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///data120bytes</command>
        <command>-fs NAMENODE -du hdfs:///data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^120\s+hdfs:///data120bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+hdfs:///data30bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^60\s+hdfs:///data60bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for hdfs:// path - directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/data15bytes</command>
        <command>-fs NAMENODE -du hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///dir0/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>duh: Test for hdfs:// path - directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data1k hdfs:///dir0/data1k</command>
        <command>-fs NAMENODE -du -h hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^1\.0 K\s+hdfs:///dir0/data1k</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for hdfs:// path - directory using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/data120bytes</command>
        <command>-fs NAMENODE -du hdfs:///dir0/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15( |\t)*hdfs:///dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30( |\t)*hdfs:///dir0/data30bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^60( |\t)*hdfs:///dir0/data60bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^120( |\t)*hdfs:///dir0/data120bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for Namenode's path - file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -du NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15( |\t)*NAMENODE/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for Namenode's path - files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/data120bytes</command>
        <command>-fs NAMENODE -du NAMENODE/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15( |\t)*NAMENODE/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30( |\t)*NAMENODE/data30bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^60( |\t)*NAMENODE/data60bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^120( |\t)*NAMENODE/data120bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for Namenode's path - directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/data15bytes</command>
        <command>-fs NAMENODE -du NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15( |\t)*NAMENODE/dir0/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>du: Test for Namenode's path - directory using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/data120bytes</command>
        <command>-fs NAMENODE -du NAMENODE/dir0/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15( |\t)*NAMENODE/dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30( |\t)*NAMENODE/dir0/data30bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^60( |\t)*NAMENODE/dir0/data60bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^120( |\t)*NAMENODE/dir0/data120bytes</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <!-- Tests for dus -->
    <test> <!-- TESTED -->
      <description>dus: directories/files using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -du -s /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+/dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>dus: directories/files using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -du -s dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>dus: directories/files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir /dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -mkdir /donotcountdir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -du -s /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
        <command>-fs NAMENODE -rm -r /donotcountdir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+/dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Tests for dus -->
    <test> <!-- TESTED -->
      <description>dus: Test for hdfs:// path - directories/files</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -du -s hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+hdfs:///dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>dus: Test for hdfs:// path - directories/files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -mkdir /donotcountdir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -du -s hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
        <command>-fs NAMENODE -rm -r hdfs:///donotcountdir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+hdfs:///dir0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>dus: Test for Namenode's path - directories/files</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -du -s NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+NAMENODE/dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>dus: Test for Namenode's path - directories/files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir2/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir2/dir2</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/dir1/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/dir1/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/dir2/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/dir2/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/dir1/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/dir1/dir2/data120bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/dir2/dir1/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/dir2/dir2/data120bytes</command>
        <command>-fs NAMENODE -mkdir NAMENODE/donotcountdir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/donotcountdir0/data15bytes</command>
        <command>-fs NAMENODE -du -s NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
        <command>-fs NAMENODE -rm -r NAMENODE/donotcountdir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^450\s+NAMENODE/dir0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <!-- Tests for mv -->
    <test> <!-- TESTED -->
      <description>mv: file (absolute path) to file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -mv /file1 /file2</command>
        <command>-fs NAMENODE -ls /file*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file2</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file[^1]</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: file (absolute path) to file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -mv /file1 file2</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^mv: `file2': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: file (absolute path) to directory (absolute path); keep the same name at the destination</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mv /file1 /dir0</command>
        <command>-fs NAMENODE -ls -R /dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: file (absolute path) to directory (absolute path); keep the same name at the destination [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls /file1</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: file (absolute path) to directory (absolute path); change the name at the destination</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mv /file1 /dir0/file2</command>
        <command>-fs NAMENODE -ls /dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: file (absolute path) to directory (absolute path); change the name at the destination [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls /file1</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: files (absolute path) to directory (absolute path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mv /file* /dir0</command>
        <command>-fs NAMENODE -ls -R /*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file4</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: files (absolute path) to directory (absolute path) using globbing [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls /file*</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `/file*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: file (relative) to file (relative)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -mv file1 file2</command>
        <command>-fs NAMENODE -ls file*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file[^1]</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving file to file(rename in for hdfs:// path) </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -mv hdfs:///file1 hdfs:///file2</command>
        <command>-fs NAMENODE -ls hdfs:///file*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file2</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file[^1]</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving file to directory (keep the same name at the destination) in hdfs:// path - </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mv hdfs:///file1 hdfs:///dir0</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving files to directory in hdfs:// path -  [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls hdfs:///file*</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `hdfs:///file*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving file that does not exist in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mv hdfs:///file1 hdfs:///file2</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>mv: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving file to directory (different name at the destination) in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mv hdfs:///file1 hdfs:///dir0/file2</command>
        <command>-fs NAMENODE -ls hdfs:///dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving file to directory (different name at the destination) in hdfs:// path [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls hdfs:///file1</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving group of files to directory using globbing in hdfs:// path - </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mv hdfs:///file* hdfs:///dir0</command>
        <command>-fs NAMENODE -ls -R hdfs:///*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mv: moving files to directory using globbing in hdfs:// [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls hdfs:///file*</command>        
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>ls: `hdfs:///file*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving file to file(rename) in Namenode's path - </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -mv NAMENODE/file1 NAMENODE/file2</command>
        <command>-fs NAMENODE -ls NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file2</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file[^1]</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving file to directory (keep the same name at the destination) in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mv NAMENODE/file1 NAMENODE/dir0</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving files to directory in Namenode's path -  [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving file that does not exist in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mv NAMENODE/file1 NAMENODE/file2</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^mv: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving file to directory (different name at the destination) in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mv NAMENODE/file1 NAMENODE/dir0/file2</command>
        <command>-fs NAMENODE -ls NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving file to directory (different name at the destination) in Namenode's path [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving group of files to directory using globbing in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mv NAMENODE/file* NAMENODE/dir0</command>
        <command>-fs NAMENODE -ls -R NAMENODE/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving files to directory using globbing in Namenode's path [ TIED to previous test ]</description>
      <test-commands>
        <command>-fs NAMENODE -ls NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^ls: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file\*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mv: moving directory to directory in hdfs:// path </description>
      <test-commands>
	<command>-fs NAMENODE -mkdir hdfs:///dir0</command>
	<command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file1</command>
        <command>-fs NAMENODE -mv hdfs:///dir0 hdfs:///dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir1</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir1/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir1/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>mv: moving directory to directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file1</command>
        <command>-fs NAMENODE -mv NAMENODE/dir0 NAMENODE/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir1/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir1/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <!-- Tests for cp-->
    <test> <!-- TESTED -->
      <description>cp: file (absolute path) to file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -cp /file1 /file2</command>
        <command>-fs NAMENODE -ls /file*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file (absolute path) to file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -cp /file1 file2</command>
        <command>-fs NAMENODE -ls /file1 file2</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /file1 file2</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file (relative path) to file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -cp file1 /file2</command>
        <command>-fs NAMENODE -ls file1 /file2</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r file1 /file2</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file (relative path) to file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -cp file1 file2</command>
        <command>-fs NAMENODE -ls file1 file2</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r file1 file2</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file (absolute path) to directory (absolute path); keep the same name at the destination</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -cp /file1 /dir0</command>
        <command>-fs NAMENODE -ls /file1 /dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file (absolute path) to directory (absolute path); change the name at the destination</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -cp /file1 /dir0/file2</command>
        <command>-fs NAMENODE -ls /file1 /dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to directory (absolute path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -cp /file* /dir0</command>
        <command>-fs NAMENODE -ls -R /*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file4</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to directory (absolute path) without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -cp /file1 /file2 /file3 /file4 /dir0</command>
        <command>-fs NAMENODE -ls -R /*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0 /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file4</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: copying non existent file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -cp /file /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: copying non existent file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -cp touchz test</command>
        <command>-fs NAMENODE -cp file1 file2</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `file2': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to an existent file using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -touchz /file5</command>
        <command>-fs NAMENODE -cp /file* /file5</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `/file5': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to an existent file without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -touchz /file5</command>
        <command>-fs NAMENODE -cp /file1 /file2 /file3 /file4 /file5</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `/file5': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to a non existent directory using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -cp /file* dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `dir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to a non existent directory without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -cp /file1 /file2 /file3 /file4 dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `dir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>cp: file to file copy in hdfs:// path </description>
      <test-commands>
       <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -cp hdfs:///file1 hdfs:///file2</command>
        <command>-fs NAMENODE -ls hdfs:///file*</command>        
      </test-commands>
      <cleanup-commands>
       <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>:
      <comparators>
       <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
         <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file to directory copy (same name at the destination) in hdfs:// path</description>
     <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -cp hdfs:///file1 hdfs:///dir0</command>
        <command>-fs NAMENODE -ls hdfs:///file1 hdfs:///dir0</command>        
      </test-commands>
     <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0/ hdfs://file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: file to directory (different name at the destination) in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -cp hdfs:///file1 hdfs:///dir0/file2</command>
        <command>-fs NAMENODE -ls hdfs:///file1 hdfs:///dir0</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0/</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to directory using globbing in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -cp hdfs:///file* hdfs:///dir0</command>
        <command>-fs NAMENODE -ls -R hdfs:///*</command>        
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
        <command>-fs NAMENODE -rm -r hdfs:///dir0/</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: files to directory in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -cp hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///dir0</command>
        <command>-fs NAMENODE -ls -R hdfs:///*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
        <command>-fs NAMENODE -rm -r hdfs:///dir0/</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: copying non existent file in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -cp hdfs:///file hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs:///file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>cp: copying files to an existent file in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -touchz hdfs:///file5</command>
        <command>-fs NAMENODE -cp hdfs:///file* hdfs:///file5</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs:///file5': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: copying files to an existent file in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -touchz hdfs:///file5</command>
        <command>-fs NAMENODE -cp hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4 hdfs:///file5</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs:///file5': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: copying files to a non existent directory in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -cp hdfs:///file* hdfs:///dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs:///dir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cp: copying files to a non existent directory in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -cp hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4 hdfs:///dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs:///dir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying non existent directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -cp hdfs:///dir0 hdfs:///dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMNEODE -rm -r hdfs:///dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs:///dir0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
       <description>cp: putting file into an already existing destination with -f option(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /user</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz /user/file0</command>
        <command>-fs NAMENODE -cp -f CLITEST_DATA/data120bytes /user/file0</command>
        <command>-fs NAMENODE -cat /user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
     <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying directory to directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
	<command>-fs NAMENODE -touchz hdfs:///dir0/file1</command>
       <command>-fs NAMENODE -cp hdfs:///dir0 hdfs:///dir1</command>
	<command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
	<command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir1/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir1/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying multiple directories to directory using globbing in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
	<command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dest</command>
        <command>-fs NAMENODE -cp hdfs:///dir* hdfs:///dest</command>
        <command>-fs NAMENODE -ls -R hdfs:///d*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMNEODE -rm -r hdfs:///d*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dest/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dest/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dest/dir2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying multiple directories to directory in hdfs:// path without using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dest</command>
        <command>-fs NAMENODE -cp hdfs:///dir0 hdfs:///dir1 hdfs:///dir2 hdfs:///dest</command>
        <command>-fs NAMENODE -ls -R hdfs:///d*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMNEODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dest/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dest/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dest/dir2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: file to file copy in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -cp NAMENODE/file1 NAMENODE/file2</command>
        <command>-fs NAMENODE -ls NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: file to directory copy (same name at the destination) in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -cp NAMENODE/file1 NAMENODE/dir0</command>
        <command>-fs NAMENODE -ls NAMENODE/file1 NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0/ NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: file to directory (different name at the destination) in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -cp NAMENODE/file1 NAMENODE/dir0/file2</command>
        <command>-fs NAMENODE -ls NAMENODE/file1 NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0/</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: files to directory in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -cp NAMENODE/file* NAMENODE/dir0</command>
        <command>-fs NAMENODE -ls -R NAMENODE/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0/</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: files to directory in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -cp NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/dir0</command>
        <command>-fs NAMENODE -ls -R NAMENODE/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0/</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying non existent file in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -cp NAMENODE/file NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>:
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying files to an existent file in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -touchz NAMENODE/file5</command>
        <command>-fs NAMENODE -cp NAMENODE/file* NAMENODE/file5</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file5': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying files to an existent file in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -touchz NAMENODE/file5</command>
        <command>-fs NAMENODE -cp NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4 NAMENODE/file5</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file5': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying files to a non existent directory in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -cp NAMENODE/file* NAMENODE/dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
     <description>cp: copying files to a non existent directory in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -cp NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4 NAMENODE/dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cp: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying directory to directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file1</command>
        <command>-fs NAMENODE -cp NAMENODE/dir0 NAMENODE/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir1/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir1/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying multiple directories to directory in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dest</command>
        <command>-fs NAMENODE -cp NAMENODE/dir* NAMENODE/dest</command>
        <command>-fs NAMENODE -ls -R NAMENODE/d*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMNEODE -rm -r NAMENODE/d*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dest/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dest/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dest/dir2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>cp: copying multiple directories to directory in Namenode's path without using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dest</command>
        <command>-fs NAMENODE -cp NAMENODE/dir0 NAMENODE/dir1 NAMENODE/dir2 NAMENODE/dest</command>
        <command>-fs NAMENODE -ls -R NAMENODE/d*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMNEODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dest/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dest/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dest/dir2</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <!-- Tests for rm -->
    <test> <!-- TESTED -->
      <description>rm: removing a file (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -rm /dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a file (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -rm file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing files by globbing (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/file1</command>
        <command>-fs NAMENODE -touchz /dir0/file2</command>
        <command>-fs NAMENODE -touchz /dir0/file3</command>
        <command>-fs NAMENODE -rm /dir0/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0/file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing files by globbing (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir dir</command>
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -rm file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a directory (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE mkdir /dir0</command>
        <command>-fs NAMENODE -rm /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `/dir0': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a directory (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE mkdir -p dir0</command>
        <command>-fs NAMENODE -rm dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `dir0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a nonexistent file (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -rm /dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `/dir0/file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a nonexistent file (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -rm file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: removing a file in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -rm hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file0</expected-output>
        </comparator>
      </comparators>
    </test>
     
    <test> <!-- TESTED -->
      <description>rm: removing files by globbing in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
     <description>rm: removing a directory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -rm hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `hdfs:///dir0': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    
    <test> <!-- TESTED -->
      <description>rm: removing a nonexistent file or dirctory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -rm hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `hdfs:///file0': No such file or directory</expected-output>
        </comparator>
     </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing files without globbing in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -rm hdfs:///file0 hdfs:///file1 hdfs:///file2 hdfs:///file3</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file0</expected-output>
       </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file1</expected-output>
       </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file2</expected-output>
       </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file3</expected-output>
       </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a file in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -rm NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file0</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>rm: removing files by globbing in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -rm NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>rm: `NAMENODE/dir0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    
    <test> <!-- TESTED -->
      <description>rm: removing a nonexistent file or directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -rm NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `NAMENODE/file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: Tremoving files without globbing in Namenode path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -rm NAMENODE/file0 NAMENODE/file1 NAMENODE/file2 NAMENODE/file3</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file3</expected-output>
       </comparator>
      </comparators>
    </test>
    
    <!--Tests for rmr-->
    <test> <!-- TESTED -->
      <description>rm: removing a file (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -rm -r /dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a file (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -rm -r file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a directory (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -touchz /dir0</command>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a directory (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -rm -r dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing directories by globbing (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted /dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing directories by globbing (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir3</command>
        <command>-fs NAMENODE -rm -r dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--TESTED-->
      <description>rm: removing a nonexistent file (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -rm -r /dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `/dir0/file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a nonexistent file (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -rm -r file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: removing a file in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -rm -r hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing a directory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///dir0</command>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>rm: removing directories by globbing in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir3</command>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--TESTED-->
      <description>rm: removing a nonexistent file or directory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `hdfs:///file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
   <test> <!-- TESTED -->
      <description>rm: removing directories without globbing in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir3</command>
        <command>-fs NAMENODE -rm -r hdfs:///dir0 hdfs:///dir1 hdfs:///dir2 hdfs:///dir3</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted hdfs:///dir3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: Test for Namenode's path - removing a file</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -rm -r NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: Test for Namenode's path - removing a directory</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/dir0</command>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: removing directories by globbing in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir3</command>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir3</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--TESTED-->
      <description>rm: removing a nonexistent file or directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^rm: `NAMENODE/file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>rm: removing directories without globbing in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir3</command>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0 NAMENODE/dir1 NAMENODE/dir2 NAMENODE/dir3</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Deleted NAMENODE/dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Tests for expunge -->
    <!-- Not yet implemented -->

    <!-- Tests for put -->
    <test> <!-- TESTED -->
      <description>put: putting file into a file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -du /data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into a file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -du data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into a directory(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p /dir0/dir1/data</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/dir1/data</command> -->
        <command>-fs NAMENODE -du /dir0/dir1/data</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/dir0/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into a directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/data</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/dir1/data</command>
        <command>-fs NAMENODE -du dir0/dir1/data</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+dir0/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting many files into an existing directory(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes /dir0</command>
        <command>-fs NAMENODE -du /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+/dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting many files into an existing directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes dir0</command>
        <command>-fs NAMENODE -du dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting non existent file(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put /user/wrongdata file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>put: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting non existent file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put wrongdata file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>put: `wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into an already existing destination(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /user</command>
        <command>-fs NAMENODE -touchz /user/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>put: `/user/file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into an already existing destination with -f option(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /user</command>
        <command>-fs NAMENODE -touchz /user/file0</command>
        <command>-fs NAMENODE -put -f CLITEST_DATA/data120bytes /user/file0</command>
        <command>-fs NAMENODE -cat /user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
     </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into an already existing destination(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>put: `file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting many files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /data30bytes</command>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -put /data15bytes /data30bytes file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting many files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /data30bytes</command>
        <command>-fs NAMENODE -put /data15bytes /data30bytes wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting a local file into hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -du hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into a directory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p /dir1/data</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir1/data</command>
        <command>-fs NAMENODE -du hdfs:///dir1/data/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir1/data</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting many local files into an existing directory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///dir0</command>
        <command>-fs NAMENODE -du hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+hdfs:///dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting non existent file in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -put /user/wrongdata hdfs:///file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>put: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting local file into an already existing destination in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///user/</command>
        <command>-fs NAMENODE -touchz hdfs:///user/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>put: `hdfs:///user/file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting many local files into an existing file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `hdfs:///file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>put: putting file into a non existent directory in hdfs:// path </description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `hdfs:///wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting a local file into in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -du NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+NAMENODE/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting file into a directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p /dir1/data</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir1/data</command>
        <command>-fs NAMENODE -du NAMENODE/dir1/data</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir1/data</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+NAMENODE/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting many local files into an existing directory in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/dir0</command>
        <command>-fs NAMENODE -du NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+NAMENODE/dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+NAMENODE/dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting non existent file in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -put /user/wrongdata NAMENODE/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting local file into an already existing destination in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/user/</command>
        <command>-fs NAMENODE -touchz NAMENODE/user/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `hdfs://\w+[-.a-z0-9]*:[0-9]+/user/file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting many local files into an existing file in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>put: putting many files into a non existent directory in Namenode's path </description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^put: `hdfs://\w+[-.a-z0-9]*:[0-9]+/wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for copyFromLocal -->
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying file into a file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -du /data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying file into a file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -du data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying file into a directory(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p /dir0/dir1/data</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /dir0/dir1/data</command>
        <command>-fs NAMENODE -du /dir0/dir1/data/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/dir0/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying file into a directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0/dir1/data</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes dir0/dir1/data</command>
        <command>-fs NAMENODE -du dir0/dir1/data/*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+dir0/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying many files into an existing directory(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes /dir0</command>
        <command>-fs NAMENODE -du /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+/dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+/dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying many files into an existing directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes dir0</command>
        <command>-fs NAMENODE -du dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying non existent file(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -copyFromLocal /user/wrongdata file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying non existent file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -copyFromLocal wrongdata file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying file into an already existing destination(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /user</command> 
        <command>-fs NAMENODE -touchz /user/file0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `/user/file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying file into an already existing destination with -f option(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /user</command> 
        <command>-fs NAMENODE -touchz /user/file0</command>
        <command>-fs NAMENODE -copyFromLocal -f CLITEST_DATA/data120bytes /user/file0</command>
        <command>-fs NAMENODE -cat /user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
    
      <description>copyFromLocal: copying file into an already existing destination(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying many files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data30bytes /data30bytes</command>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -copyFromLocal /data15bytes /data30bytes file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^copyFromLocal: `file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: copying many files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data30bytes /data30bytes</command>
        <command>-fs NAMENODE -copyFromLocal /data15bytes /data30bytes wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^copyFromLocal: `wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path - copying local file into a hdfs://file</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -du hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
     
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path - copying local file into a hdfs directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1/data</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes hdfs:///dir0/dir1/data/</command>
        <command>-fs NAMENODE -du hdfs:///dir0/dir1/data/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///dir0/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
     
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path copying many local files into an existing hdfs directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///dir0</command>
        <command>-fs NAMENODE -du hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+hdfs:///dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+hdfs:///dir0/data30bytes</expected-output>
        </comparator>
     </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path - copying non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal /user/wrongdata hdfs:///file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path - copying local file into an already existing destination</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///user/</command>
        <command>-fs NAMENODE -touchz hdfs:///user/file0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes hdfs:///user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `hdfs:///user/file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path - copying many local files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^copyFromLocal: `hdfs:///file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for hdfs:// path - copying many local files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^copyFromLocal: `hdfs:///wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Tests for copyFromLocal using Namenode's path-->
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path - copying local file into a hdfs://file</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -du NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+NAMENODE/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path - copying local file into a hdfs directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1/data</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes NAMENODE/dir0/dir1/data/</command>
        <command>-fs NAMENODE -du NAMENODE/dir0/dir1/data/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+NAMENODE/dir0/dir1/data/data15bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path copying many local files into an existing hdfs directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/dir0</command>
        <command>-fs NAMENODE -du NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^15\s+NAMENODE/dir0/data15bytes</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^30\s+NAMENODE/dir0/data30bytes</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path - copying non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal /user/wrongdata NAMENODE/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>copyFromLocal: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path - copying local file into an already existing destination</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/user/</command>
        <command>-fs NAMENODE -touchz NAMENODE/user/file0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes NAMENODE/user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>copyFromLocal: `hdfs://\w+[-.a-z0-9]*:[0-9]+/user/file0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path - copying many local files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^copyFromLocal: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyFromLocal: Test for Namenode's path - copying many local files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^copyFromLocal: `hdfs://\w+[-.a-z0-9]*:[0-9]+/wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <!-- Tests for get -->
    <test> <!-- TESTED -->
      <description>get: getting non existent(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -get /user/file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>get: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>get: getting non existent file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -get file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>get: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>get: Test for hdfs:// path - getting non existent</description>
      <test-commands>
        <command>-fs NAMENODE -get hdfs:///user/file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>get: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>get: Test for Namenode's path - getting non existent</description>
      <test-commands>
        <command>-fs NAMENODE -get NAMENODE/user/file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>get: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Tests for getmerge -->
    <!-- Manual Testing -->

    <!-- Tests for cat -->
    <test> <!-- TESTED -->
      <description>cat: contents of file(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -cat /data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>
      <description>cat: contents of file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -cat data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r  /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>  <!-- TESTED -->
      <description>cat: contents of files(absolute path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/data120bytes</command>
        <command>-fs NAMENODE -cat /dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED-->
      <description>cat: contents of files(relative path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes dir0/data120bytes</command>
        <command>-fs NAMENODE -cat dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>  <!-- TESTED -->
      <description>cat: contents of files(absolute path) without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/data120bytes</command>
        <command>-fs NAMENODE -cat /dir0/data15bytes /dir0/data30bytes /dir0/data60bytes /dir0/data120bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED-->
      <description>cat: contents of files(relative path) without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes dir0/data120bytes</command>
        <command>-fs NAMENODE -cat dir0/data15bytes dir0/data30bytes dir0/data60bytes dir0/data120bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    
    <test> <!-- TESTED -->
      <description>cat: contents of file(absolute path) that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -cat /file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: contents of file(relative path) that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -cat file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: contents of directory(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -cat /dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `/dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: contents of directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -cat dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>cat: Test for hdfs:// path - content of file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -cat hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>  <!-- TESTED -->
      <description>cat: Test for hdfs:// path - contents of files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/data120bytes</command>
        <command>-fs NAMENODE -cat hdfs:///dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>  <!-- TESTED -->
      <description>cat: Test for hdfs:// path - contents of files without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/data120bytes</command>
        <command>-fs NAMENODE -cat hdfs:///dir0/data15bytes hdfs:///dir0/data30bytes hdfs:///dir0/data60bytes hdfs:///dir0/data120bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: Test for hdfs:// path - contents of file that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -cat hdfs:///file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `hdfs:///file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: Test for hdfs:// path - contents of directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -cat hdfs:///dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `hdfs:///dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for cat using Namenode's path -->
    <test> <!-- TESTED -->
      <description>cat: Test for Namenode's path - content of file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -cat NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>  <!-- TESTED -->
      <description>cat: Test for Namenode's path - contents of files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/data120bytes</command>
        <command>-fs NAMENODE -cat NAMENODE/dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test>  <!-- TESTED -->
      <description>cat: Test for Namenode's path - contents of files without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/data120bytes</command>
        <command>-fs NAMENODE -cat NAMENODE/dir0/data15bytes NAMENODE/dir0/data30bytes NAMENODE/dir0/data60bytes NAMENODE/dir0/data120bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>12345678901234.*</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: Test for Namenode's path - contents of file that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -cat NAMENODE/file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `NAMENODE/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>cat: Test for Namenode's path - contents of directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -cat NAMENODE/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^cat: `NAMENODE/dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for copyToLocal -->
    <test> <!-- TESTED -->
      <description>copyToLocal: non existent relative path</description>
      <test-commands>
        <command>-fs NAMENODE -copyToLocal file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>copyToLocal: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyToLocal: non existent absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -copyToLocal /user/file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>copyToLocal: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>copyToLocal: Test for hdfs:// path - non existent file/directory</description>
      <test-commands>
        <command>-fs NAMENODE -copyToLocal hdfs:///file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>copyToLocal: `.*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>copyToLocal: Test for Namenode's path - non existent file/directory</description>
      <test-commands>
        <command>-fs NAMENODE -copyToLocal NAMENODE/file CLITEST_DATA/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>copyToLocal: `.*': No such file or directory</expected-output>
        </comparator>
     </comparators>
    </test>

    <test> <!-- TESTED-->
      <description>checksum: checksum of files(relative path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes dir0/data120bytes</command>
        <command>-fs NAMENODE -checksum dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^dir0/data120bytes\tMD5-of-0MD5-of-512CRC32C\t000002000000000000000000a58cdc3c0967fc8cddb7fed5960d06f2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^dir0/data15bytes\tMD5-of-0MD5-of-512CRC32C\t0000020000000000000000007267e9528002723a30939aefc238d665</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^dir0/data30bytes\tMD5-of-0MD5-of-512CRC32C\t000002000000000000000000fc09371298117c4943cf089b4bd79c96</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^dir0/data60bytes\tMD5-of-0MD5-of-512CRC32C\t000002000000000000000000009476431d851dd7b0a8d057a404d7b9</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Tests for moveToLocal -->
    <!-- Not yet implemented -->

    <!-- Tests for mkdir -->
    <test> <!-- TESTED -->
      <description>mkdir: creating directory (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -du -s /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/dir0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>mkdir: creating directory (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/b/</command>
        <command>-fs NAMENODE -du -s /dir0/b</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/dir0/b</expected-output>
        </comparator>
      </comparators>
    </test>
    
   
    <test> <!-- TESTED -->
      <description>mkdir: creating directory (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0 </command>
        <command>-fs NAMENODE -du -s dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: creating many directories (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0 </command>
        <command>-fs NAMENODE -mkdir /dir1 </command>        
        <command>-fs NAMENODE -mkdir /dir2 </command>
        <command>-fs NAMENODE -mkdir /dir3 </command>
        <command>-fs NAMENODE -du -s /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: creating many directories (relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0 </command>
        <command>-fs NAMENODE -mkdir -p dir1 </command>
        <command>-fs NAMENODE -mkdir -p dir2 </command>
        <command>-fs NAMENODE -mkdir -p dir3 </command>
        <command>-fs NAMENODE -du -s dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: creating a directory with the name of an already existing directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>mkdir: `/dir0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: creating a directory with the name of an already existing file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -mkdir -p data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>mkdir: `data15bytes': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>mkdir: Test for hdfs:// path - creating directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -du -s hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs:///dir0</expected-output>
        </comparator>
      </comparators>
    </test>
     
    <test> <!-- TESTED -->
      <description>mkdir: Test for hdfs:// path - creating many directories</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0 hdfs:///dir1 hdfs:///dir2 hdfs:///dir3 </command>
        <command>-fs NAMENODE -du -s hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs:///dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs:///dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test for hdfs:// path - creating a directory with the name of an already existing directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>mkdir: `hdfs:///dir0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test for hdfs:// path - creating a directory with the name of an already existing file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -mkdir hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>mkdir: `hdfs:///data15bytes': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test for Namenode's path - creating directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -du -s NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+NAMENODE/dir0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test for Namenode's path - creating many directories</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0 NAMENODE/dir1 NAMENODE/dir2 NAMENODE/dir3</command>
        <command>-fs NAMENODE -du -s NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+NAMENODE/dir0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+NAMENODE/dir3</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test for NAMENODE path - creating a directory with the name of an already existing directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>mkdir: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir0': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test for Namenode's path - creating a directory with the name of an already existing file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -mkdir NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>mkdir: `hdfs://\w+[-.a-z0-9]*:[0-9]+/data15bytes': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>mkdir: Test create of directory with no parent and no -p fails</description>
      <test-commands>
        <command>-fs NAMENODE -rm -r -f dir0</command>
        <command>-fs NAMENODE -mkdir dir0/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>mkdir: `dir0/dir1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test recreate of existing directory fails</description>
      <test-commands>
        <command>-fs NAMENODE -rm -r -f dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -mkdir dir0/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>mkdir: `dir0/dir1': File exists</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>mkdir: Test recreate of existing directory with -p succeeds</description>
      <test-commands>
        <command>-fs NAMENODE -rm -r -f dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!--Tests for setrep-->
    <test> <!-- TESTED -->
      <description>setrep: existent file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command> 
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -setrep 2 /dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: /dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: existent file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -setrep 2 file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: existent directory (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/file1</command>
        <command>-fs NAMENODE -setrep -R 2 /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: /dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: /dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: existent directory (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/file1</command>
        <command>-fs NAMENODE -setrep -R 2 dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: non existent file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -setrep 2 /dir0/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^setrep: `/dir0/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: non existent file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -setrep 2 file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^setrep: `file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>setrep: Test for hdfs:// path - existent file</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -setrep 2 hdfs:///dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: Test for hdfs:// path - existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file1</command>
        <command>-fs NAMENODE -setrep -R 2 hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: hdfs:///dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: Test for hdfs:// path - non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/</command>
        <command>-fs NAMENODE -setrep 2 hdfs:///dir0/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^setrep: `hdfs:///dir0/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: Test for Namenode's path - existent file</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -setrep 2 NAMENODE/dir0/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: Test for Namenode's path - existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p NAMENODE/dir0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file1</command>
        <command>-fs NAMENODE -setrep -R 2 NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^Replication 2 set: NAMENODE/dir0/file1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>setrep: Test for Namenode's path - non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -setrep 2 NAMENODE/dir0/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^setrep: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir0/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Tests for touchz-->
    <test> <!-- TESTED -->
      <description>touchz: touching file (absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /user</command>
        <command>-fs NAMENODE -touchz /user/file0</command>
        <command>-fs NAMENODE -du /user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+/user/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>touchz: touching file in non-existent directory </description>
      <test-commands>
        <command>-fs NAMENODE -touchz file0 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>touchz: `file0': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>touchz: touching file(relative path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0 </command>
        <command>-fs NAMENODE -du file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: touching many files </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0 file1 file2</command>
        <command>-fs NAMENODE -du file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0( |\t)*file0</expected-output>
          <expected-output>^0( |\t)*file1</expected-output>
          <expected-output>^0( |\t)*file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: touching already existing file </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -touchz data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>touchz: `data15bytes': Not a zero-length file</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>touchz: Test for hdfs:// path - touching file</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p hdfs:///user/</command>
        <command>-fs NAMENODE -touchz hdfs:///user/file0</command>
        <command>-fs NAMENODE -du hdfs:///user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs:///user/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: Test for hdfs:// path - touching many files </description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0 hdfs:///file1 hdfs:///file2</command>
        <command>-fs NAMENODE -du hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0( |\t)*hdfs:///file0</expected-output>
          <expected-output>^0( |\t)*hdfs:///file1</expected-output>
          <expected-output>^0( |\t)*hdfs:///file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: Test for hdfs:// path - touching already existing file </description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -touchz hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>touchz: `hdfs:///data15bytes': Not a zero-length file</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: Test for Namenode's path - touching file</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/user/file0</command>
        <command>-fs NAMENODE -du NAMENODE/user/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+NAMENODE/user/file0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: Test for Namenode path - touching many files </description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0 NAMENODE/file1 NAMENODE/file2</command>
        <command>-fs NAMENODE -du NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^0\s+hdfs://\w+[-.a-z0-9]*:[0-9]+/file0</expected-output>
          <expected-output>^0\s+hdfs://\w+[-.a-z0-9]*:[0-9]+/file1</expected-output>
          <expected-output>^0\s+hdfs://\w+[-.a-z0-9]*:[0-9]+/file2</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>touchz: Test for Namenode's path - touching already existing file </description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -touchz NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/data15bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>touchz: `hdfs://\w+[-.a-z0-9]*:[0-9]+/data15bytes': Not a zero-length file</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <!--Tests for test-->
    <test> <!-- TESTED -->
      <description>test: non existent file (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -test -z /dir0/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>test: non existent file (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -test -z file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>test: non existent directory (absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -test -d /dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>test: non existent directory (relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -test -d dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>test: Test for hdfs:// path - non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -test -z hdfs:///dir0/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>test: Test for hdfs:// path - non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -test -d hdfs:///dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>test: Test for Namenode's path - non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -test -z NAMENODE/dir0/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>test: Test for Namenode's path - non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -test -d NAMENODE/dir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>
   
    <!--Tests for stat -->
    <test> <!-- TESTED -->
      <description>stat: statistics about file(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /data60bytes</command>
        <command>-fs NAMENODE -stat "%n-%b" /data60bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /data60bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>data60bytes-60</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes data60bytes</command>
        <command>-fs NAMENODE -stat "%n-%b" data60bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>data60bytes-60</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about directory(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dirtest</command>
        <command>-fs NAMENODE -stat "%n-%b-%o" /dirtest</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dirtest</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>dirtest-0-0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dirtest</command>
        <command>-fs NAMENODE -stat "%n-%b-%o" dirtest</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>dirtest-0-0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about files (absolute path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes /dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes /dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes /dir0/data120bytes</command>
        <command>-fs NAMENODE -mkdir /dir0/datadir</command>
        <command>-fs NAMENODE -stat "%n-%b" /dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data15bytes-15"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data30bytes-30"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data60bytes-60"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data120bytes-120"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"datadir-0"</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about files (relative path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes data120bytes</command>
        <command>-fs NAMENODE -mkdir -p datadir</command>
        <command>-fs NAMENODE -stat "%n-%b" data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data15bytes-15"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data30bytes-30"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data60bytes-60"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data120bytes-120"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"datadir-0"</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about file or directory(absolute path) that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -stat /file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^stat: `/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: statistics about file or directory(relative path) that does not exist </description>
      <test-commands>
        <command>-fs NAMENODE -stat file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^stat: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for hdfs:// path - statistics about file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///data60bytes</command>
        <command>-fs NAMENODE -stat "%n-%b" hdfs:///data60bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///data60bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>data60bytes-60</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for hdfs:// path - statistics about directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dirtest</command>
        <command>-fs NAMENODE -stat "%n-%b-%o" hdfs:///dirtest</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dirtest</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>dirtest-0-0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for hdfs:// path - statistics about files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes hdfs:///dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes hdfs:///dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes hdfs:///dir0/data120bytes</command>
        <command>-fs NAMENODE -mkdir -p hdfs:///dir0/datadir</command>
        <command>-fs NAMENODE -stat "%n-%b" hdfs:///dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data15bytes-15"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data30bytes-30"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data60bytes-60"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data120bytes-120"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"datadir-0"</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for hdfs:// path - statistics about file or directory that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -stat hdfs:///file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^stat: `hdfs:///file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for Namenode's path - statistics about file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/data60bytes</command>
        <command>-fs NAMENODE -stat "%n-%b" NAMENODE/data60bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/data60bytes</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>data60bytes-60</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for Namenode's path - statistics about directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dirtest</command>
        <command>-fs NAMENODE -stat "%n-%b-%o" NAMENODE/dirtest</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dirtest</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>dirtest-0-0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for Namenode's path - statistics about files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/dir0/data15bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes NAMENODE/dir0/data30bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes NAMENODE/dir0/data60bytes</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes NAMENODE/dir0/data120bytes</command>
        <command>-fs NAMENODE -mkdir -p NAMENODE/dir0/datadir</command>
        <command>-fs NAMENODE -stat "%n-%b" NAMENODE/dir0/data*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data15bytes-15"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data30bytes-30"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data60bytes-60"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"data120bytes-120"</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>"datadir-0"</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>stat: Test for Namenode's path - statistics about file or directory that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -stat NAMENODE/file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^stat: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
  
    <!-- Tests for tail -->
    <test> <!-- TESTED -->
      <description>tail: contents of file(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -tail /data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--TESTED-->
      <description>tail: contents of file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes data15bytes</command>
        <command>-fs NAMENODE -tail data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r  /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: contents of files(absolute path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -tail /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `/file\*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: contents of files(relative path) using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -tail file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `file\*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: contents of file(absolute path) that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -tail /file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: contents of file(relative path) that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -tail file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: contents of directory(absolute path) </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -tail /dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `/dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: contents of directory(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -tail dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>tail: Test for hdfs:// path - contents of file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes hdfs:///data15bytes</command>
        <command>-fs NAMENODE -tail hdfs:///data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: Test for hdfs:// path - contents of files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -tail hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `hdfs:///file\*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: Test for hdfs:// path - contents of file that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -tail hdfs:///file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `hdfs:///file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: Test for hdfs:// path - contents of directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -tail hdfs:///dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `hdfs:///dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: Test for Namenode's path - contents of file</description>
      <test-commands>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes NAMENODE/data15bytes</command>
        <command>-fs NAMENODE -tail NAMENODE/data15bytes</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>12345678901234</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>tail: Test for Namenode's path - contents of files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -tail NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file\*': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: Test for Namenode's path - contents of file that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -tail NAMENODE/file</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!-- TESTED -->
      <description>tail: Test for Namenode's path - contents of directory</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -tail NAMENODE/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^tail: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir1': Is a directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <!-- Tests for count -->
    <test> <!-- TESTED -->
      <description>count: file using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -count /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: file using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -count file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: directory using absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -count /dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: directory using relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -count dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to file/directory that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -count /file1 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>count: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to file/directory that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -count file1</command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>count: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -count /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -count file*</command>
      </test-commands>
      <cleanup-commands>
       <command>-fs NAMENODE -rm -r /user</command>
     </cleanup-commands>
     <comparators>
       <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple files without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -count /file1 /file2 /file3 /file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 /file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple files without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -count file1 file2 file3 file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple directories using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <command>-fs NAMENODE -mkdir /dir4</command>
        <command>-fs NAMENODE -count /dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple directories using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir3</command>
        <command>-fs NAMENODE -mkdir -p dir4</command>
        <command>-fs NAMENODE -count dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple directories without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <command>-fs NAMENODE -mkdir /dir4</command>
        <command>-fs NAMENODE -count /dir1 /dir2 /dir3 /dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 /dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple directories without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir3</command>
        <command>-fs NAMENODE -mkdir -p dir4</command>
        <command>-fs NAMENODE -count dir1 dir2 dir3 dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: file using absolute path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -count -q /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: file using relative path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -count -q file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: directory using absolute path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir1 </dfs-admin-command>
        <command>-fs NAMENODE -count -q /dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: directory using relative path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir1 </dfs-admin-command>
        <command>-fs NAMENODE -count -q dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to file/directory that does not exist with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -count -q /file1 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
         <type>TokenComparator</type>
          <expected-output>count: `/file1': No such file or directory</expected-output>
       </comparator>
     </comparators>
   </test>
   
   <test> <!-- TESTED -->
      <description>count: relative path to file/directory that does not exist with -q option</description>
     <test-commands>
        <command>-fs NAMENODE -count -q file1</command>
     </test-commands>
     <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>count: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple files using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -count -q /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple files using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -count -q file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file4</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!-- TESTED -->
      <description>count: absolute path to multiple files without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -count -q /file1 /file2 /file3 /file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 /file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple files without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -count -q file1 file2 file3 file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple directories using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <command>-fs NAMENODE -mkdir /dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q /dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple directories using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir3</command>
        <command>-fs NAMENODE -mkdir -p dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: absolute path to multiple directories without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <command>-fs NAMENODE -mkdir /dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 /dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m /dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q /dir1 /dir2 /dir3 /dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 /dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: relative path to multiple directories without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir1</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir3</command>
        <command>-fs NAMENODE -mkdir -p dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q dir1 dir2 dir3 dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
      <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for file using hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -count hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for directory using hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -count hdfs:///dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - file/directory that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -count hdfs:///file1 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>count: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -count hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple files without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -count hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple directories using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir4</command>
        <command>-fs NAMENODE -count hdfs:///dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple directories without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir4</command>
        <command>-fs NAMENODE -count hdfs:///dir1 hdfs:///dir2 hdfs:///dir3 hdfs:///dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for file using hdfs:// path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -count -q hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for directory using hdfs:// path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir1 </dfs-admin-command>
        <command>-fs NAMENODE -count -q hdfs:///dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - file/directory that does not exist with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -count -q hdfs:///file1 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>count: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple files using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -count -q hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
         <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple files without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -count -q hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple directories using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q hdfs:///dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for hdfs:// path - multiple directories without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir1</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir3</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 hdfs:///dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m hdfs:///dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q hdfs:///dir1 hdfs:///dir2 hdfs:///dir3 hdfs:///dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 hdfs:///dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for file using Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -count NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for directory using Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -count NAMENODE/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - file/directory that does not exist</description>
      <test-commands>
        <command>-fs NAMENODE -count NAMENODE/file1 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>count: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple files using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -count NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple files without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -count NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple directories using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir4</command>
        <command>-fs NAMENODE -count NAMENODE/dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple directories without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir4</command>
        <command>-fs NAMENODE -count NAMENODE/dir1 NAMENODE/dir2 NAMENODE/dir3 NAMENODE/dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for file using Namenode's path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -count -q NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for directory using Namenode's path with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir1 </dfs-admin-command>
        <command>-fs NAMENODE -count -q NAMENODE/dir1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - file/directory that does not exist with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -count -q NAMENODE/file1 </command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>count: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple files using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -count -q NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
         <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple files without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -count -q NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*none( |\t)*inf( |\t)*none( |\t)*inf( |\t)*0( |\t)*1( |\t)*0 NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple directories using globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q NAMENODE/dir* </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>count: Test for Namenode's path - multiple directories without globbing with -q option</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir1</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir3</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir4</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir1 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir2 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir3 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 10 NAMENODE/dir4 </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1m NAMENODE/dir4 </dfs-admin-command>
        <command>-fs NAMENODE -count -q NAMENODE/dir1 NAMENODE/dir2 NAMENODE/dir3 NAMENODE/dir4 </command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>( |\t)*10( |\t)*9( |\t)*1048576( |\t)*1048576( |\t)*1( |\t)*0( |\t)*0 NAMENODE/dir4</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for chmod -->
    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chmod 777 /file1</command>
        <command>-fs NAMENODE -ls /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chmod 666 file1</command>
        <command>-fs NAMENODE -ls file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chmod a+rw /file1</command>
        <command>-fs NAMENODE -ls /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chmod a+rw file1</command>
        <command>-fs NAMENODE -ls file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in absolute path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in relative path recursively</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in absolute path recursively</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in relative path recursively</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of non existent file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -chmod 777 /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of non existent file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -chmod 666 file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of non existent file in absolute path</description>
      <test-commands>
         <command>-fs NAMENODE -chmod a+rw /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of non existent file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -chmod a+rw file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chmod 777 /file* </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chmod 777 file* </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chmod 777 /file1 /file2 /file3 /file4 </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chmod 777 file1 file2 file3 file4 </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chmod a+rw /file* </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chmod a+rw file* </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chmod a+rw /file1 /file2 /file3 /file4 </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chmod a+rw file1 file2 file3 file4 </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in absolute path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in relative path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in absolute path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in relative path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in absolute path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in relative path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in absolute path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in relative path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in octal mode of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chmod 999 /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode '999' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in octal mode of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chmod 999 file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode '999' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in normal mode of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chmod r+def /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode \'r\+def\' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in normal mode of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chmod r+def file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode \'r\+def\' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chmod 777 hdfs:///file1</command>
        <command>-fs NAMENODE -ls hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chmod a+rw hdfs:///file1</command>
        <command>-fs NAMENODE -ls hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in hdfs:// path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in hdfs:// path recursively</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of non existent file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -chmod 777 hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of non existent file in hdfs:// path</description>
      <test-commands>
         <command>-fs NAMENODE -chmod a+rw hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chmod 777 hdfs:///file* </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chmod 777 hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4 </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chmod a+rw hdfs:///file* </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chmod a+rw hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4 </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in hdfs:// path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in hdfs:// path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in hdfs:// path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in hdfs:// path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in octal mode of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chmod 999 hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode '999' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in normal mode of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chmod rdef hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode \'rdef\' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for chmod -->
    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chmod 777 NAMENODE/file1</command>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chmod a+rw NAMENODE/file1</command>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of directory in Namenode's path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of directory in Namenode's path recursively</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of non existent file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -chmod 777 NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of non existent file in Namenode's path</description>
      <test-commands>
         <command>-fs NAMENODE -chmod a+rw NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chmod: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chmod 777 NAMENODE/file* </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple files in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chmod 777 NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4 </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod 777 NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
     <description>chmod: change permission(normal mode) of multiple files in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chmod a+rw NAMENODE/file* </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple files in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chmod a+rw NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4 </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod a+rwx NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in Namenode's path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(octal mode) of multiple directories in Namenode's path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R 777 NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in Namenode's path recursively using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: change permission(normal mode) of multiple directories in Namenode's path recursively without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chmod -R a+rwx NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxrwxrwx( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-rw-rw-( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in octal mode of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chmod 999 NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode '999' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chmod: invalid value in normal mode of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chmod rdef NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chmod: chmod : mode \'rdef\' does not match the expected pattern.</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for chown -->
    <test> <!-- TESTED -->
      <description>chown: change ownership of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///file1</command>
        <command>-fs NAMENODE -ls hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>

     <test> <!-- TESTED -->
      <description>chown: change ownership of directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of directory in hdfs:// path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of non existent file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chown: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///file* </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4 </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: invalid option for owner of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chown %:newgroup hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: '%:newgroup' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: invalid option for group of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chown newowner:% hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: 'newowner:%' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

   <!-- Tests for chown -->
    <test> <!-- TESTED -->
      <description>chown: change ownership of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chown newowner:newgroup /file1</command>
        <command>-fs NAMENODE -ls /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chown newowner:newgroup file1</command>
        <command>-fs NAMENODE -ls file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
      </comparators>
     </test>

     <test> <!-- TESTED -->
      <description>chown: change ownership of directory in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of directory in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of directory in absolute path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of directory in relative path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of non existent file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -chown newowner:newgroup /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chown: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of non existent file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -chown newowner:newgroup file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chown: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup /file* </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup file* </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup /file1 /file2 /file3 /file4 </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup file1 file2 file3 file4 </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: invalid option for owner of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chown %:newgroup /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: '%:newgroup' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: invalid option for owner of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chown %:newgroup file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: '%:newgroup' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: invalid option for group of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chown newowner:% /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: 'newowner:%' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: invalid option for group of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chown newowner:% file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: 'newowner:%' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/file1</command>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of directory in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of directory in Namenode's path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chown: change ownership of non existent file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chown: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/file* </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple files in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4 </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown newowner:newgroup NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: change ownership of multiple directories recursively in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chown -R newowner:newgroup NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*newowner( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: invalid option for owner of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chown %:newgroup NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: '%:newgroup' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chown: invalid option for group of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chown newowner:% NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chown: 'newowner:%' does not match expected pattern for \[owner\]\[:group\].</expected-output>
        </comparator>
      </comparators>
    </test>

   <!-- Tests for chgrp -->
    <test> <!-- TESTED -->
      <description>chgrp: change group of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chgrp newgroup /file1</command>
        <command>-fs NAMENODE -ls /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chgrp newgroup file1</command>
        <command>-fs NAMENODE -ls file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
       </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in absolute path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup /dir0/dir1</command>
        <command>-fs NAMENODE -ls -R /dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in relative path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup dir0/dir1</command>
        <command>-fs NAMENODE -ls -R dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of non existent file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -chgrp newgroup /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chgrp: `/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of non existent file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -chgrp newgroup file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chgrp: `file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple files in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chgrp newgroup /file* </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple files in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chgrp newgroup file* </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change of multiple files in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -touchz /file2</command>
        <command>-fs NAMENODE -touchz /file3</command>
        <command>-fs NAMENODE -touchz /file4</command>
        <command>-fs NAMENODE -chgrp newgroup /file1 /file2 /file3 /file4 </command>
        <command>-fs NAMENODE -ls -R /file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple files in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -touchz file2</command>
        <command>-fs NAMENODE -touchz file3</command>
        <command>-fs NAMENODE -touchz file4</command>
        <command>-fs NAMENODE -chgrp newgroup file1 file2 file3 file4 </command>
        <command>-fs NAMENODE -ls -R file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*file4</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in absolute path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup /dir*</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in relative path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup dir*</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in absolute path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir0</command>
        <command>-fs NAMENODE -mkdir /dir0/dir1</command>
        <command>-fs NAMENODE -touchz /dir0/file0</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir2/dir1</command>
        <command>-fs NAMENODE -touchz /dir2/file0</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz /dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup /dir0 /dir2</command>
        <command>-fs NAMENODE -ls -R /dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file1</expected-output>
        </comparator>
       <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in relative path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir0</command>
        <command>-fs NAMENODE -mkdir -p dir0/dir1</command>
        <command>-fs NAMENODE -touchz dir0/file0</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir -p dir2</command>
        <command>-fs NAMENODE -mkdir -p dir2/dir1</command>
        <command>-fs NAMENODE -touchz dir2/file0</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup dir0 dir2</command>
        <command>-fs NAMENODE -ls -R dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: invalid option for group of file in absolute path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz /file1</command>
        <command>-fs NAMENODE -chgrp % /file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm /file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chgrp: '%' does not match expected pattern for group</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: invalid option for group of file in relative path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz file1</command>
        <command>-fs NAMENODE -chgrp % file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chgrp: '%' does not match expected pattern for group</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>chgrp: change group of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///file1</command>
        <command>-fs NAMENODE -ls hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in hdfs:// path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of non existent file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chgrp: `hdfs:///file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple files in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///file* </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change of multiple files in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -touchz hdfs:///file2</command>
        <command>-fs NAMENODE -touchz hdfs:///file3</command>
        <command>-fs NAMENODE -touchz hdfs:///file4</command>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///file1 hdfs:///file2 hdfs:///file3 hdfs:///file4 </command>
        <command>-fs NAMENODE -ls -R hdfs:///file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///file4</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in hdfs:// path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup hdfs:///dir*</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
         <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in hdfs:// path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir hdfs:///dir0</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir0/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2</command>
        <command>-fs NAMENODE -mkdir hdfs:///dir2/dir1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/file0</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz hdfs:///dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup hdfs:///dir0 hdfs:///dir2</command>
        <command>-fs NAMENODE -ls -R hdfs:///dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*hdfs:///dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: invalid option for group of file in hdfs:// path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file1</command>
        <command>-fs NAMENODE -chgrp % hdfs:///file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm hdfs:///file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chgrp: '%' does not match expected pattern for group</expected-output>
        </comparator>
      </comparators>
    </test>
 
   <!-- Tests for chgrp -->
    <test> <!-- TESTED -->
      <description>chgrp: change group of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/file1</command>
        <command>-fs NAMENODE -ls NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Found 1 items</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of directory in Namenode's path recursively </description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir0</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of non existent file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^chgrp: `NAMENODE/file1': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple files in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/file* </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change of multiple files in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/file2</command>
        <command>-fs NAMENODE -touchz NAMENODE/file3</command>
        <command>-fs NAMENODE -touchz NAMENODE/file4</command>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/file1 NAMENODE/file2 NAMENODE/file3 NAMENODE/file4 </command>
        <command>-fs NAMENODE -ls -R NAMENODE/file*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file3</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/file4</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp newgroup NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in Namenode's path using globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup NAMENODE/dir*</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
         <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
         <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
   </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: change group of multiple directories recursively in Namenode's path without globbing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir0/dir1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir0/dir1/file2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2</command>
        <command>-fs NAMENODE -mkdir NAMENODE/dir2/dir1</command>
       <command>-fs NAMENODE -touchz NAMENODE/dir2/file0</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file1</command>
        <command>-fs NAMENODE -touchz NAMENODE/dir2/dir1/file2</command>
        <command>-fs NAMENODE -chgrp -R newgroup NAMENODE/dir0 NAMENODE/dir2</command>
        <command>-fs NAMENODE -ls -R NAMENODE/dir*</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/dir*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir0/file0</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^drwxr-xr-x( )*-( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file1</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/dir1/file2</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-rw-r--r--( )*1( )*[a-zA-z0-9]*( )*newgroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*NAMENODE/dir2/file0</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!-- TESTED -->
      <description>chgrp: invalid option for group of file in Namenode's path</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file1</command>
        <command>-fs NAMENODE -chgrp % NAMENODE/file1</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm NAMENODE/file1</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-chgrp: '%' does not match expected pattern for group</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin report</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help report</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-report:( |\t)*Reports basic filesystem information and statistics.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin safemode</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help safemode</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-safemode &lt;enter\|leave\|get\|wait&gt;:( |\t)*Safe mode maintenance command.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Safe mode is a Namenode state in which it( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*1.( )*does not accept changes to the name space \(read-only\)( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*2.( )*does not replicate or delete blocks.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Safe mode is entered automatically at Namenode startup, and( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*leaves safe mode automatically when the configured minimum( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*percentage of blocks satisfies the minimum replication( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*condition.  Safe mode can also be entered manually, but then( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*it can only be turned off manually as well.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin refreshNodes</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help refreshNodes</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-refreshNodes:( |\t)*Updates the namenode with the set of datanodes allowed to connect to the namenode.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Namenode re-reads datanode hostnames from the file defined by( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*dfs.hosts, dfs.hosts.exclude configuration parameters.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Hosts defined in dfs.hosts are the datanodes that are part of( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*the cluster. If there are entries in dfs.hosts, only the hosts( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*in it are allowed to register with the namenode.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Entries in dfs.hosts.exclude are datanodes that need to be( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*decommissioned. Datanodes complete decommissioning when ( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*all the replicas from them are replicated to other datanodes.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Decommissioned nodes are not automatically shutdown and( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*are not chosen for writing new replicas.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin finalizeUpgrade</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help finalizeUpgrade</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-finalizeUpgrade:( )*Finalize upgrade of HDFS.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Datanodes delete their previous version working directories,( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*followed by Namenode doing the same.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*This completes the upgrade process.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin metasave</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help metasave</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-metasave &lt;filename&gt;:( |\t)*Save Namenode's primary data structures( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*to &lt;filename&gt; in the directory specified by hadoop.log.dir property.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*&lt;filename&gt; will contain one line for each of the following( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*1. Datanodes heart beating with Namenode( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*2. Blocks waiting to be replicated( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*3. Blocks currrently being replicated( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*4. Blocks waiting to be deleted( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin setQuota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help setQuota</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-setQuota &lt;quota&gt; &lt;dirname&gt;...&lt;dirname&gt;: Set the quota &lt;quota&gt; for each directory &lt;dirName&gt;.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*The directory quota is a long integer that puts a hard limit( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*on the number of names in the directory tree( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*For each directory, attempt to set the quota. An error will be reported if( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*1. N is not a positive integer, or( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*2. User is not an administrator, or( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*3. The directory does not exist or is a file.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin clrQuota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help clrQuota</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-clrQuota &lt;dirname&gt;...&lt;dirname&gt;: Clear the quota for each directory &lt;dirName&gt;.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*For each directory, attempt to clear the quota. An error will be reported if( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*1. the directory does not exist or is a file, or( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*2. user is not an administrator.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*It does not fault if the directory has no quota.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin setSpaceQuota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help setSpaceQuota</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-setSpaceQuota &lt;quota&gt; &lt;dirname&gt;...&lt;dirname&gt;: Set the disk space quota &lt;quota&gt; for each directory &lt;dirName&gt;.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*The space quota is a long integer that puts a hard limit( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*on the total size of all the files under the directory tree.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*2. user is not an administrator, or( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin clrSpaceQuota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help clrSpaceQuota</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-clrSpaceQuota &lt;dirname&gt;...&lt;dirname&gt;: Clear the disk space quota for each directory &lt;dirName&gt;.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*For each directory, attempt to clear the quota. An error will be reported if( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*1. the directory does not exist or is a file, or( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*2. user is not an administrator.( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*It does not fault if the directory has no quota.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin refreshServiceAcl</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help refreshServiceAcl</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-refreshServiceAcl: Reload the service-level authorization policy file( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*Namenode will reload the authorization policy file.( )*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>help: help for dfsadmin help</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -help help</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^-help \[cmd\]:( |\t)*Displays help for the given command or all commands if none( )*</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^( |\t)*is specified.( )*</expected-output>
        </comparator>
      </comparators>
    </test>
 
    <test> <!--Tested -->
      <description>verifying error messages for quota commands - setting quota on a file</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <command>-fs NAMENODE -touchz /test/file1 </command>
        <dfs-admin-command>-fs NAMENODE -setQuota 1 /test/file1 </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      	<dfs-admin-command>-fs NAMENODE -setQuota 5 /test </dfs-admin-command>
        <!-- Same directory will be used in the next test -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>setQuota: `/test/file1': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--Tested -->
      <description>verifying error messages for quota commands - setting quota on non-existing file</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1g /test1 </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
             <!-- Same directory will be used in the next test -->   
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>setSpaceQuota: Directory does not exist: /test1</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--Tested -->
      <description>verifying error messages for quota commands - exceeding quota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -setQuota 3 /test </dfs-admin-command>
        <command>-fs NAMENODE -touchz /test/file0 </command>
        <command>-fs NAMENODE -mkdir /test/test1 </command>
      </test-commands>
      <cleanup-commands>
             <!-- Same directory(/test) will be used in the next test -->   
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>The NameSpace quota (directories and files) of directory /test is exceeded</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>verifying error messages for quota commands - setting not valid quota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -setQuota 0 /test </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
             <!-- Same directory will be used in the next test -->   
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>Invalid values for quota : 0</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--Tested -->
      <description>verifying error messages for quota commands - setting not valid space quota</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota a5 /test </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
             <!-- Same directory will be used in the next test -->   
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>setSpaceQuota: "a5" is not a valid value for a quota.</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <test> <!--Tested -->
      <description>verifying error messages for quota commands - clearQuota on non existing file</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -clrQuota /test1 </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
      	<command>-fs NAMENODE -rm -r /test </command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>clrQuota: Directory does not exist: /test1</expected-output>
        </comparator>
      </comparators>
    </test>
   
    <test> <!--Tested -->
      <description>verifying error messages for quota commands - using globing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 1k /dir* </dfs-admin-command>
        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes /dir1/</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir* </command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>put: The DiskSpace quota of /dir1 is exceeded: quota = 1024 B = 1 KB but diskspace consumed = [0-9]+ B = [0-9.]+ [KMG]B*</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>verifying error messages for quota commands - setting quota using globing</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /dir1</command>
        <command>-fs NAMENODE -mkdir /dir2</command>
        <command>-fs NAMENODE -mkdir /dir3</command>
        <dfs-admin-command>-fs NAMENODE -setQuota 1 /dir* </dfs-admin-command>
        <command>-fs NAMENODE -mkdir /dir1/dir4</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /dir* </command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>mkdir: The NameSpace quota (directories and files) of directory /dir1 is exceeded: quota=1 file count=2</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!--Tested -->
      <description>refreshServiceAcl: refreshing security authorization policy for namenode</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -refreshServiceAcl </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test><!--
    
    <test> Tested 
      <description>refreshServiceAcl: verifying error message while refreshing security authorization policy for namenode</description>
      <test-commands>
         hadoop-policy.xml for tests has 
             security.refresh.policy.protocol.acl = ${user.name} 
        <dfs-admin-command>-fs NAMENODE -Dhadoop.job.ugi=blah,blah -refreshServiceAcl </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
         No cleanup 
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>access denied</expected-output>
        </comparator>
      </comparators>
    </test>
   
    --><!-- Test for safemode -->
    <test> <!-- TESTED -->
      <description>safemode: Test for enter - Namenode is not in safemode</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is ON</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode: Test for enter - Namenode is already in safemode</description>
      <test-commands>
	<dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is ON</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode: Test for leave - Namenode is already in safemode</description>
      <test-commands>
	<dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is OFF</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode: Test for leave - Namenode is not in safemode</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is OFF</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode: Test for get - Namenode is not in safemode</description>
      <test-commands>
	<dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode get</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is OFF</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode:Test for get - Namenode is already in safemode</description>
      <test-commands>
	<dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode get</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
	<dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is ON</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode: Test for wait - Namenode is not in safemode</description>
      <test-commands>
	<dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode wait</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is OFF</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>safemode: Test for wait - Namenode is already in safemode</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode wait &amp;</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Safe mode is OFF</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Test for report -->
    <test> <!-- TESTED -->
      <description>report: Displays the report about the Datanodes</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -report</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
	<!-- no cleanup cmd -->        
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Configured Capacity: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Present Capacity: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Remaining: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Used: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Used\%: [0-9\.]+%</expected-output>
        </comparator>
	<comparator>
          <type>RegexpComparator</type>
          <expected-output>Datanodes available: [0-9]+ \([0-9]+ total, [0-9]+ dead\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Name: [0-9\.:]+ \([-.a-zA-z0-9\.]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Hostname: [-.a-zA-z0-9\.]+</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Decommission Status : [a-zA-Z]+</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Non DFS Used: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Remaining%: [0-9\.]+%</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Last contact: [a-zA-Z]+ [a-zA-Z]+ [0-9]+ [0-9:]+ [A-Z\-\+\:0-9]+ [0-9]+</expected-output>
        </comparator>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>Live datanodes:</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Test for saveNamespace -->
    <test> <!-- TESTED -->
      <description>saveNamespace: to save the namespace when safemode is ON</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -safemode enter</dfs-admin-command>
	<dfs-admin-command>-fs NAMENODE -saveNamespace</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>saveNamespace: to save the namespace when safemode is OFF</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -saveNamespace</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave</dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>saveNamespace: Safe mode should be turned ON in order to create namespace image.</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Test for rollEdits -->
    <test> <!-- TESTED -->
      <description>rollEdits: test rollEdits admin command</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -rollEdits</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- no cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>New segment starts at txid \d+</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Test for refreshNodes -->
    <test> <!-- TESTED -->
      <description>refreshNodes: to refresh the nodes</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -refreshNodes</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -report</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- no cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Configured Capacity: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Present Capacity: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Remaining: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Used: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Used\%: [0-9\.]+%</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Datanodes available: [0-9]+ \([0-9]+ total, [0-9]+ dead\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Name: [0-9\.:]+ \([-.a-zA-z0-9\.]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Hostname: [-.a-zA-z0-9\.]+</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Decommission Status : [a-zA-Z]+</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Non DFS Used: [0-9]+ \([0-9\.]+ [BKMGT]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>DFS Remaining%: [0-9\.]+%</expected-output>
        </comparator>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Last contact: [a-zA-Z]+ [a-zA-Z]+ [0-9]+ [0-9:]+ [A-Z\-\+\:0-9]+ [0-9]+</expected-output>
        </comparator>
	<comparator>
          <type>TokenComparator</type>
          <expected-output>Live datanodes:</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Test for metasave -->
    <test> <!-- TESTED -->
      <description>metasave: to save metadata</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -metasave metafile</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>Created metasave file metafile in the log directory of namenode hdfs:\/\/[-.a-zA-Z0-9\.:]+</expected-output>
        </comparator>
      </comparators>
    </test>
    
    <!-- Test for clrSpacequota -->
    <test> <!-- TESTED -->
      <description>clrSpaceQuota: Namenode is already in safemode</description>
      <test-commands>
	<command>-fs NAMENODE -mkdir test</command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 15 test</dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -clrSpaceQuota test</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r test</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>ExactComparator</type>
          <expected-output></expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- Tested -->
      <description>printTopology: verifying that the topology map is what we expect</description>
      <test-commands>
        <dfs-admin-command>-fs NAMENODE -printTopology</dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <!-- No cleanup -->
      </cleanup-commands>
      <comparators>
        <!-- miniDFS cluster started in CLITestHelper is set to match this output -->
        <comparator>
          <type>RegexpAcrossOutputComparator</type>
          <expected-output>^Rack: \/rack1\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpAcrossOutputComparator</type>
          <expected-output>Rack: \/rack2\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpAcrossOutputComparator</type>
          <expected-output>Rack: \/rack3\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)</expected-output>
        </comparator>
        <comparator>
          <type>RegexpAcrossOutputComparator</type>
          <expected-output>Rack: \/rack4\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)\s*127\.0\.0\.1:\d+\s\([-.a-zA-Z0-9]+\)</expected-output>
        </comparator>
      </comparators>
    </test>

    <!-- Tests for moveFromLocal -->
    <test> <!-- TESTED -->
      <description>moveFromLocal: moving non existent file(absolute path)</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal /user/wrongdata file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>moveFromLocal: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: moving non existent file(relative path)</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz test</command>
        <command>-fs NAMENODE -moveFromLocal wrongdata file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>moveFromLocal: `wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: moving many files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data30bytes /data30bytes</command>
        <command>-fs NAMENODE -mkdir -p dir</command> <!-- make sure user home dir exists -->
        <command>-fs NAMENODE -touchz file0</command>
        <command>-fs NAMENODE -moveFromLocal /data15bytes /data30bytes file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^moveFromLocal: `file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: moving many files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data15bytes /data15bytes</command>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data30bytes /data30bytes</command>
        <command>-fs NAMENODE -moveFromLocal /data15bytes /data30bytes wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^moveFromLocal: `wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: Test for hdfs:// path - moving non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal /user/wrongdata hdfs:///file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>moveFromLocal: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: Test for hdfs:// path - moving many files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -touchz hdfs:///file0</command>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r hdfs:///*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^moveFromLocal: `hdfs:///file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: Test for hdfs:// path - moving many files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes hdfs:///wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^moveFromLocal: `hdfs:///wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: Test for Namenode's path - moving non existent file</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal /user/wrongdata NAMENODE/file</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>TokenComparator</type>
          <expected-output>moveFromLocal: `/user/wrongdata': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: Test for Namenode's path - moving many files into an existing file</description>
      <test-commands>
        <command>-fs NAMENODE -touchz NAMENODE/file0</command>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/file0</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r NAMENODE/*</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^moveFromLocal: `hdfs://\w+[-.a-z0-9]*:[0-9]+/file0': Is not a directory</expected-output>
        </comparator>
      </comparators>
    </test>

    <test> <!-- TESTED -->
      <description>moveFromLocal: Test for Namenode's path - moving many files into a non existent directory</description>
      <test-commands>
        <command>-fs NAMENODE -moveFromLocal CLITEST_DATA/data15bytes CLITEST_DATA/data30bytes NAMENODE/wrongdir</command>
      </test-commands>
      <cleanup-commands>
        <command>-fs NAMENODE -rm -r /user</command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>RegexpComparator</type>
          <expected-output>^moveFromLocal: `hdfs://\w+[-.a-z0-9]*:[0-9]+/wrongdir': No such file or directory</expected-output>
        </comparator>
      </comparators>
    </test>


     <test> <!--Tested -->
      <description>Verifying chmod operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <command>-fs NAMENODE -touchz /test/file1 </command>
        <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <command>-fs NAMENODE -chmod 777 /test/file1 </command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>Cannot set permission for /test/file1. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>
    <test> <!--Tested -->
      <description>Verifying chown operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <command>-fs NAMENODE -touchz /test/file1 </command>
        <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <command>-fs NAMENODE -chown newgroup /test/file1 </command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>Cannot set owner for /test/file1. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>

   <test> <!--Tested -->
      <description>Verifying chgrp operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <command>-fs NAMENODE -touchz /test/file1 </command>
        <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <command>-fs NAMENODE -chgrp newgroup /test/file1 </command>
     </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>Cannot set owner for /test/file1. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>

    
   <test> <!--Tested -->
      <description>Verifying setQuota operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setQuota 100 /test </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>setQuota: Cannot set quota on /test. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>
  
  <test> <!--Tested -->
      <description>Verifying clrQuota operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
       <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -clrQuota  /test </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>clrQuota: Cannot set quota on /test. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>
  
    
   <test> <!--Tested -->
      <description>Verifying setSpaceQuota operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -setSpaceQuota 100 /test </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
          <expected-output>setSpaceQuota: Cannot set quota on /test. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>
  
  <test> <!--Tested -->
      <description>Verifying clrSpaceQuota operation is not permitted in safemode</description>
      <test-commands>
        <command>-fs NAMENODE -mkdir /test </command>
        <dfs-admin-command>-fs NAMENODE -safemode enter </dfs-admin-command>
        <dfs-admin-command>-fs NAMENODE -clrSpaceQuota  /test </dfs-admin-command>
      </test-commands>
      <cleanup-commands>
        <dfs-admin-command>-fs NAMENODE -safemode leave </dfs-admin-command>
       <dfs-admin-command>-fs NAMENODE -rm -r  /test </dfs-admin-command>
      </cleanup-commands>
      <comparators>
        <comparator>
          <type>SubstringComparator</type>
         <expected-output>clrSpaceQuota: Cannot set quota on /test. Name node is in safe mode.</expected-output>
        </comparator>
      </comparators>
    </test>
  </tests>
</configuration>
