You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by rv...@apache.org on 2011/10/06 20:09:02 UTC

svn commit: r1179731 [2/3] - in /incubator/bigtop/branches/hadoop-0.22: bigtop-packages/src/common/hadoop/patch bigtop-packages/src/rpm/hadoop/SPECS/hadoop.spec bigtop.mk

Modified: incubator/bigtop/branches/hadoop-0.22/bigtop-packages/src/common/hadoop/patch
URL: http://svn.apache.org/viewvc/incubator/bigtop/branches/hadoop-0.22/bigtop-packages/src/common/hadoop/patch?rev=1179731&r1=1179730&r2=1179731&view=diff
==============================================================================
--- incubator/bigtop/branches/hadoop-0.22/bigtop-packages/src/common/hadoop/patch (original)
+++ incubator/bigtop/branches/hadoop-0.22/bigtop-packages/src/common/hadoop/patch Thu Oct  6 18:09:02 2011
@@ -245,3 +245,3386 @@ index 0000000..1b1a85b
 +    }
 +  }
 +}
+diff --git common/src/test/core/org/apache/hadoop/cli/CLITestHelper.java common/src/test/core/org/apache/hadoop/cli/CLITestHelper.java
+index 5df10b2..f7f25e5 100644
+--- common/src/test/core/org/apache/hadoop/cli/CLITestHelper.java
++++ common/src/test/core/org/apache/hadoop/cli/CLITestHelper.java
+@@ -59,7 +59,9 @@ public class CLITestHelper {
+   public static final String TESTMODE_NOCOMPARE = "nocompare";
+   public static final String TEST_CACHE_DATA_DIR =
+     System.getProperty("test.cache.data", "build/test/cache");
+-  
++  public static final String TEST_DIR_ABSOLUTE = "/tmp/testcli";
++  protected static String testDirAbsolute = TEST_DIR_ABSOLUTE;
++
+   //By default, run the tests. The other mode is to run the commands and not
+   // compare the output
+   protected String testMode = TESTMODE_TEST;
+@@ -72,7 +74,7 @@ public class CLITestHelper {
+   protected Configuration conf = null;
+   protected String clitestDataDir = null;
+   protected String username = null;
+-  
++
+   /**
+    * Read the test config file - testConfig.xml
+    */
+@@ -80,10 +82,16 @@ public class CLITestHelper {
+     String testConfigFile = getTestFile();
+     if (testsFromConfigFile == null) {
+       boolean success = false;
+-      testConfigFile = TEST_CACHE_DATA_DIR + File.separator + testConfigFile;
++      String configFile = System.getProperty("test.cli.config");
++      if (configFile == null) {
++        testConfigFile = TEST_CACHE_DATA_DIR + File.separator + testConfigFile;
++      } else {
++        testConfigFile = configFile;
++      }
+       try {
+         SAXParser p = (SAXParserFactory.newInstance()).newSAXParser();
+         p.parse(testConfigFile, new TestConfigFileParser());
++        LOG.info("Using test config file " + testConfigFile);
+         success = true;
+       } catch (Exception e) {
+         LOG.info("File: " + testConfigFile + " not found");
+@@ -110,6 +118,8 @@ public class CLITestHelper {
+ 
+     clitestDataDir = new File(TEST_CACHE_DATA_DIR).
+     toURI().toString().replace(' ', '+');
++    // Many of the tests expect a replication value of 1 in the output
++    conf.setInt("dfs.replication", 1);
+   }
+   
+   /**
+@@ -128,7 +138,8 @@ public class CLITestHelper {
+     String expCmd = cmd;
+     expCmd = expCmd.replaceAll("CLITEST_DATA", clitestDataDir);
+     expCmd = expCmd.replaceAll("USERNAME", username);
+-    
++    expCmd = expCmd.replaceAll("TEST_DIR_ABSOLUTE", testDirAbsolute);
++
+     return expCmd;
+   }
+   
+diff --git common/src/test/core/org/apache/hadoop/cli/util/CommandExecutor.java common/src/test/core/org/apache/hadoop/cli/util/CommandExecutor.java
+index a250e24..50afe05 100644
+--- common/src/test/core/org/apache/hadoop/cli/util/CommandExecutor.java
++++ common/src/test/core/org/apache/hadoop/cli/util/CommandExecutor.java
+@@ -43,6 +43,8 @@ public abstract class CommandExecutor {
+       args[i] = args[i].replaceAll("CLITEST_DATA", 
+         new File(CLITestHelper.TEST_CACHE_DATA_DIR).
+         toURI().toString().replace(' ', '+'));
++      args[i] = args[i].replaceAll("TEST_DIR_ABSOLUTE",
++        CLITestHelper.TEST_DIR_ABSOLUTE);
+       args[i] = args[i].replaceAll("USERNAME", System.getProperty("user.name"));
+ 
+       i++;
+diff --git hdfs/build.xml hdfs/build.xml
+index 4f55064..3ddb60a 100644
+--- hdfs/build.xml
++++ hdfs/build.xml
+@@ -636,6 +636,9 @@
+         <syspropertyset id="FaultProbabilityProperties">
+           <propertyref regex="fi.*"/>
+         </syspropertyset>
++        <syspropertyset id="TestCLIProperties">
++          <propertyref regex="test.cli.*" />
++        </syspropertyset>
+         <sysproperty key="test.system.hdrc.deployed.hadoopconfdir"
+                      value="@{hadoop.conf.dir.deployed}" />
+         <formatter type="${test.junit.output.format}" />
+diff --git hdfs/src/test/hdfs/org/apache/hadoop/cli/TestHDFSCLI.java hdfs/src/test/hdfs/org/apache/hadoop/cli/TestHDFSCLI.java
+index 895c863..1043f61 100644
+--- hdfs/src/test/hdfs/org/apache/hadoop/cli/TestHDFSCLI.java
++++ hdfs/src/test/hdfs/org/apache/hadoop/cli/TestHDFSCLI.java
+@@ -21,6 +21,7 @@ package org.apache.hadoop.cli;
+ import org.apache.hadoop.cli.util.CLITestData.TestCmd;
+ import org.apache.hadoop.cli.util.CommandExecutor.Result;
+ import org.apache.hadoop.fs.FileSystem;
++import org.apache.hadoop.fs.Path;
+ import org.apache.hadoop.hdfs.DFSConfigKeys;
+ import org.apache.hadoop.hdfs.DistributedFileSystem;
+ import org.apache.hadoop.hdfs.HDFSPolicyProvider;
+@@ -36,7 +37,7 @@ public class TestHDFSCLI extends CLITestHelper {
+   protected MiniDFSCluster dfsCluster = null;
+   protected DistributedFileSystem dfs = null;
+   protected String namenode = null;
+-  
++
+   @Before
+   @Override
+   public void setUp() throws Exception {
+@@ -52,16 +53,24 @@ public class TestHDFSCLI extends CLITestHelper {
+                         "/rack2", "/rack3", "/rack4", "/rack4" };
+     String [] hosts = {"host1", "host2", "host3", "host4",
+                        "host5", "host6", "host7", "host8" };
+-    dfsCluster = new MiniDFSCluster.Builder(conf).numDataNodes(8)
+-                                                 .racks(racks)
+-                                                 .hosts(hosts)
+-                                                 .build();
+-    
+-    namenode = conf.get(DFSConfigKeys.FS_DEFAULT_NAME_KEY, "file:///");
+-    
++
++    FileSystem fs;
++    namenode = System.getProperty("test.cli.fs.default.name");
++    if (namenode == null) {
++      // Start up the mini dfs cluster
++      dfsCluster = new MiniDFSCluster.Builder(conf).numDataNodes(8)
++                                                   .racks(racks)
++                                                   .hosts(hosts)
++                                                   .build();
++      namenode = conf.get(DFSConfigKeys.FS_DEFAULT_NAME_KEY, "file:///");
++      fs = dfsCluster.getFileSystem();
++    } else {
++      conf.set(DFSConfigKeys.FS_DEFAULT_NAME_KEY, namenode);
++      fs = FileSystem.get(conf);
++    }
++
+     username = System.getProperty("user.name");
+ 
+-    FileSystem fs = dfsCluster.getFileSystem();
+     assertTrue("Not a HDFS: "+fs.getUri(),
+                fs instanceof DistributedFileSystem);
+     dfs = (DistributedFileSystem) fs;
+@@ -75,10 +84,16 @@ public class TestHDFSCLI extends CLITestHelper {
+   @After
+   @Override
+   public void tearDown() throws Exception {
+-    dfs.close();
+-    dfsCluster.shutdown();
+-    Thread.sleep(2000);
+-    super.tearDown();
++    dfs.delete(new Path(testDirAbsolute), true);
++    if (dfsCluster != null) {
++      boolean success = false;
++      dfs.close();
++      dfsCluster.shutdown();
++      success = true;
++      Thread.sleep(2000);
++      assertTrue("Error tearing down Mini DFS cluster", success);
++      super.tearDown();
++    }
+   }
+ 
+   @Override
+diff --git hdfs/src/test/org/apache/hadoop/cli/testConfCluster.xml hdfs/src/test/org/apache/hadoop/cli/testConfCluster.xml
+new file mode 100644
+index 0000000..bbed80f
+--- /dev/null
++++ hdfs/src/test/org/apache/hadoop/cli/testConfCluster.xml
+@@ -0,0 +1,3154 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<?xml-stylesheet type="text/xsl" href="testConf.xsl"?>
++
++<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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/file1</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>ls: file using relative 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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file1</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>ls: 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 -ls file*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr file*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file4</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>ls: directory using absolute path</description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir1/dir2</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/dir1</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir1/dir2</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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir1/dir2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>ls: directory using relative path</description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir dir0/dir1</command>
++        <command>-fs NAMENODE -ls dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir0</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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>ls: directory 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 -ls </command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/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: Cannot access /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/username</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^ls: Cannot access /user/username: No such file or directory.</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <!-- Tests for lsr -->
++    <test> <!-- TESTED -->
++      <description>lsr: files/directories using absolute path</description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2/dir2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file0</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir1/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir1/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir2/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir2/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir1/dir1/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir1/dir1/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir2/dir2/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/dir2/dir2/file2</command>
++        <command>-fs NAMENODE -lsr TEST_DIR_ABSOLUTE/dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1/dir1/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir1/dir1/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2/dir2/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/dir2/dir2/file2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>lsr: files/directories using relative 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 -lsr dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/file0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir1/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir1/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir2/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir2/file2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>lsr: files/directories 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 -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 -lsr dir0/*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <!-- JIRA?
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^/user/[a-z]*/dir0/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^/user/[a-z]*/dir0/dir2</expected-output>
++        </comparator>
++       -->
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^drwxr-xr-x( )*-( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/file0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir1/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir1/dir1/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir2/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/dir0/dir2/dir2/file2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>lsr: file/directory that does not exist in /tmp/testcli/</description>
++      <test-commands>
++        <command>-fs NAMENODE -lsr TEST_DIR_ABSOLUTE/file1</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^lsr: Cannot access /tmp/testcli/file1: No such file or directory.</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>lsr: file/directory that does not exist in home directory (/user/username)</description>
++      <test-commands>
++        <command>-fs NAMENODE -lsr /user/username</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^lsr: Cannot access /user/username: No such file or directory.</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 TEST_DIR_ABSOLUTE/data15bytes</command>
++        <command>-fs NAMENODE -du TEST_DIR_ABSOLUTE/data15bytes</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/data15bytes</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 1 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/data15bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>du: file using relative 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 -rmr data15bytes</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 1 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/data15bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>du: files using globbing</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 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 -rmr data*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 4 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/data15bytes</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^30( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/data30bytes</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^60( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/data60bytes</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^120( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/data120bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>du: directory using absolute path</description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/dir0/data15bytes</command>
++        <command>-fs NAMENODE -du TEST_DIR_ABSOLUTE/dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 1 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/data15bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>du: directory using relative 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 -rmr dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 1 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir0/data15bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>du: directory using globbing</description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/dir0/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes TEST_DIR_ABSOLUTE/dir0/data30bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes TEST_DIR_ABSOLUTE/dir0/data60bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes TEST_DIR_ABSOLUTE/dir0/data120bytes</command>
++        <command>-fs NAMENODE -du TEST_DIR_ABSOLUTE/dir0/*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 4 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/data15bytes</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^30( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/data30bytes</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^60( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/data60bytes</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^120( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/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 TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2/dir2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file0</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/dir0/dir1/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes TEST_DIR_ABSOLUTE/dir0/dir1/data30bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/dir0/dir2/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes TEST_DIR_ABSOLUTE/dir0/dir2/data30bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes TEST_DIR_ABSOLUTE/dir0/dir1/dir1/data60bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes TEST_DIR_ABSOLUTE/dir0/dir1/dir2/data120bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes TEST_DIR_ABSOLUTE/dir0/dir2/dir1/data60bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes TEST_DIR_ABSOLUTE/dir0/dir2/dir2/data120bytes</command>
++        <command>-fs NAMENODE -dus TEST_DIR_ABSOLUTE/dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0( |\t)*450</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>dus: directories/files using relative 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 -dus dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir0( |\t)*450</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>dus: directories/files using globbing</description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir1/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0/dir2/dir2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file0</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/dir0/dir1/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes TEST_DIR_ABSOLUTE/dir0/dir1/data30bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/dir0/dir2/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data30bytes TEST_DIR_ABSOLUTE/dir0/dir2/data30bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes TEST_DIR_ABSOLUTE/dir0/dir1/dir1/data60bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes TEST_DIR_ABSOLUTE/dir0/dir1/dir2/data120bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data60bytes TEST_DIR_ABSOLUTE/dir0/dir2/dir1/data60bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data120bytes TEST_DIR_ABSOLUTE/dir0/dir2/dir2/data120bytes</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/donotcountdir0</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/donotcountdir0/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/donotcountdir0/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/donotcountdir0/data15bytes</command>
++        <command>-fs NAMENODE -put CLITEST_DATA/data15bytes TEST_DIR_ABSOLUTE/donotcountdir0/data15bytes</command>
++        <command>-fs NAMENODE -dus TEST_DIR_ABSOLUTE/dir*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/donotcountdir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0( |\t)*450</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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -mv TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/file*</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -mv TEST_DIR_ABSOLUTE/file1 file2</command>
++        <command>-fs NAMENODE -ls file2</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr 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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file2</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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mv TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -lsr TEST_DIR_ABSOLUTE/dir0</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>        
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>ls: Cannot access /tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mv TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/dir0/file2</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/dir0</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>        
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>ls: Cannot access /tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mv TEST_DIR_ABSOLUTE/file* TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -lsr TEST_DIR_ABSOLUTE/*</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0 TEST_DIR_ABSOLUTE/file*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file*</command>        
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>ls: Cannot access /tmp/testcli/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 -touchz file1</command>
++        <command>-fs NAMENODE -mv file1 file2</command>
++        <command>-fs NAMENODE -ls file*</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm file*</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-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file[^1]</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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/file*</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/file*</command>
++      </cleanup-commands>:
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>cp: file (absolute path) to file (relative path)</description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 file2</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/file1 file2</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/file1 file2</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>cp: file (relative path) to file (absolute path)</description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz file1</command>
++        <command>-fs NAMENODE -cp file1 TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -ls file1 TEST_DIR_ABSOLUTE/file2</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr file1 TEST_DIR_ABSOLUTE/file2</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file2</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>cp: file (relative path) to file (relative path)</description>
++      <test-commands>
++        <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 -rmr file1 file2</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/user/[a-z]*/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/dir0</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/dir0/file2</command>
++        <command>-fs NAMENODE -ls TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/dir0</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file* TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -lsr TEST_DIR_ABSOLUTE/*</command>        
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file4</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/file2 TEST_DIR_ABSOLUTE/file3 TEST_DIR_ABSOLUTE/file4 TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -lsr TEST_DIR_ABSOLUTE/*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/file4</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file3</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^-rw-r--r--( )*1( )*[a-z]*( )*supergroup( )*0( )*[0-9]{4,}-[0-9]{2,}-[0-9]{2,} [0-9]{2,}:[0-9]{2,}( )*/tmp/testcli/dir0/file4</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>cp: copying non existent file (absolute path)</description>
++      <test-commands>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file TEST_DIR_ABSOLUTE/file1</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^cp: File does not exist: /tmp/testcli/file</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>cp: copying non existent file (relative path)</description>
++      <test-commands>
++        <command>-fs NAMENODE -cp file1 file2</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^cp: File does not exist: file1</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>cp: files to an existent file using globbing</description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file5</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file* TEST_DIR_ABSOLUTE/file5</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/file*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^cp: When copying multiple files, destination should be 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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file5</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/file2 TEST_DIR_ABSOLUTE/file3 TEST_DIR_ABSOLUTE/file4 TEST_DIR_ABSOLUTE/file5</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/file*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^cp: When copying multiple files, destination /tmp/testcli/file5 should be 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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file* dir</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/file*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^cp: When copying multiple files, destination should be a 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 TEST_DIR_ABSOLUTE/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file3</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/file4</command>
++        <command>-fs NAMENODE -cp TEST_DIR_ABSOLUTE/file1 TEST_DIR_ABSOLUTE/file2 TEST_DIR_ABSOLUTE/file3 TEST_DIR_ABSOLUTE/file4 dir</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/file*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^cp: When copying multiple files, destination dir should be a directory.</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <!-- Tests for rm -->
++    <test> <!-- TESTED -->
++      <description>rm: removing a file (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file0</command>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir0/file0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/file0</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rm: removing a file (relative path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz file0</command>
++        <command>-fs NAMENODE -rm file0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm file0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/file0</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rm: removing files by globbing (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file0</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file1</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file2</command>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file3</command>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir0/file*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/file0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/file3</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rm: removing files by globbing (relative path) </description>
++      <test-commands>
++        <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 file0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/file0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/file1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/file2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/file3</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rm: removing a directory (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^rm: Cannot remove directory "hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0", use -rmr instead</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rm: removing a directory (relative path) </description>
++      <test-commands>
++        <command>-fs NAMENODE mkdir dir0</command>
++        <command>-fs NAMENODE -rm dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^rm: cannot remove 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 TEST_DIR_ABSOLUTE/dir0/file0</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^rm: cannot remove /tmp/testcli/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>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^rm: cannot remove file0: No such file or directory.</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <!--Tests for rmr-->
++    <test> <!-- TESTED -->
++      <description>rmr: removing a file (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0/file0</command>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0/file0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/user</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0/file0</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rmr: removing a file (relative path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz file0</command>
++        <command>-fs NAMENODE -rmr file0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr file0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/file0</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rmr: removing a directory (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -touchz TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rmr: removing a directory (relative path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir dir0</command>
++        <command>-fs NAMENODE -rmr dir0</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir0</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir0</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rmr: removing directories by globbing (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir0</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir1</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir2</command>
++        <command>-fs NAMENODE -mkdir TEST_DIR_ABSOLUTE/dir3</command>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/dir*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/dir3</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rmr: removing directories by globbing (relative 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 -rmr dir*</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr dir*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir0</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir1</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir2</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^Deleted hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/dir3</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!--TESTED-->
++      <description>rmr: removing a nonexistent file (absolute path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0/file0</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^rmr: cannot remove /tmp/testcli/dir0/file0: No such file or directory.</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>rmr: removing a nonexistent file (relative path) </description>
++      <test-commands>
++        <command>-fs NAMENODE -rmr file0</command>
++      </test-commands>
++      <cleanup-commands>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^rmr: cannot remove file0: No such file or directory.</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 TEST_DIR_ABSOLUTE/data15bytes</command>
++        <command>-fs NAMENODE -du TEST_DIR_ABSOLUTE/data15bytes</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rm TEST_DIR_ABSOLUTE/data15bytes</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 1 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/tmp/testcli/data15bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>put: putting file into a file (relative 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 -rmr data*</command>
++      </cleanup-commands>
++      <comparators>
++        <comparator>
++          <type>TokenComparator</type>
++          <expected-output>Found 1 items</expected-output>
++        </comparator>
++        <comparator>
++          <type>RegexpComparator</type>
++          <expected-output>^15( |\t)*hdfs://\w+[.a-z]*:[0-9]*/user/[a-z]*/data15bytes</expected-output>
++        </comparator>
++      </comparators>
++    </test>
++    
++    <test> <!-- TESTED -->
++      <description>put: putting file into a directory(absolute path)</description>
++      <test-commands>
++        <command>-fs NAMENODE -put CLITEST_DATA TEST_DIR_ABSOLUTE/dir0/dir1/data</command>
++        <command>-fs NAMENODE -du TEST_DIR_ABSOLUTE/dir0/dir1/data</command>
++      </test-commands>
++      <cleanup-commands>
++        <command>-fs NAMENODE -rmr TEST_DIR_ABSOLUTE/dir0</command>
++      </cleanup-commands>

[... 1541 lines stripped ...]