소스 검색

HDFS-2131. Add new tests for the -overwrite/-f option in put and copyFromLocal by HADOOP-7361. Contributed by Uma Maheswara Rao G

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1145843 13f79535-47bb-0310-9956-ffa450edef68
Tsz-wo Sze 14 년 전
부모
커밋
13a26379ed
3개의 변경된 파일127개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      hdfs/CHANGES.txt
  2. 55 0
      hdfs/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml
  3. 69 0
      hdfs/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSShell.java

+ 3 - 0
hdfs/CHANGES.txt

@@ -549,6 +549,9 @@ Trunk (unreleased changes)
     HDFS-1977. Stop using StringUtils.stringifyException(). 
     (Bharath Mundlapudi via jitendra)
 
+    HDFS-2131. Add new tests for the -overwrite/-f option in put and
+    copyFromLocal by HADOOP-7361.  (Uma Maheswara Rao G via szetszwo)
+
   OPTIMIZATIONS
 
     HDFS-1458. Improve checkpoint performance by avoiding unnecessary image

+ 55 - 0
hdfs/src/test/hdfs/org/apache/hadoop/cli/testHDFSConf.xml

@@ -2670,6 +2670,24 @@
       </comparators>
     </test>
 
+    <test> <!-- TESTED -->
+       <description>cp: putting file into an already existing destination with -f option(absolute path)</description>
+      <test-commands>
+        <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>
@@ -4076,6 +4094,24 @@
       </comparators>
     </test>
     
+    <test> <!-- TESTED -->
+      <description>put: putting file into an already existing destination with -f option(absolute path)</description>
+      <test-commands>
+        <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>
@@ -4593,6 +4629,25 @@
     </test>
     
     <test> <!-- TESTED -->
+      <description>copyFromLocal: copying file into an already existing destination with -f option(absolute path)</description>
+      <test-commands>
+        <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 -touchz file0</command>

+ 69 - 0
hdfs/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSShell.java

@@ -1354,4 +1354,73 @@ public class TestDFSShell extends TestCase {
     int res = admin.run(new String[] {"-refreshNodes"});
     assertEquals("expected to fail -1", res , -1);
   }
+
+  // force Copy Option is -f
+  public void testCopyCommandsWithForceOption() throws Exception {
+    Configuration conf = new Configuration();
+    MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1)
+        .format(true).build();
+    FsShell shell = null;
+    FileSystem fs = null;
+    File localFile = new File("testFileForPut");
+    Path hdfsTestDir = new Path("ForceTestDir");
+    try {
+      fs = cluster.getFileSystem();
+      fs.mkdirs(hdfsTestDir);
+      localFile.createNewFile();
+      writeFile(fs, new Path("testFileForPut"));
+      shell = new FsShell();
+
+      // Tests for put
+      String[] argv = new String[] { "-put", "-f", localFile.getName(),
+          "ForceTestDir" };
+      int res = ToolRunner.run(shell, argv);
+      int SUCCESS = 0;
+      int ERROR = 1;
+      assertEquals("put -f is not working", SUCCESS, res);
+
+      argv = new String[] { "-put", localFile.getName(), "ForceTestDir" };
+      res = ToolRunner.run(shell, argv);
+      assertEquals("put command itself is able to overwrite the file", ERROR,
+          res);
+
+      // Tests for copyFromLocal
+      argv = new String[] { "-copyFromLocal", "-f", localFile.getName(),
+          "ForceTestDir" };
+      res = ToolRunner.run(shell, argv);
+      assertEquals("copyFromLocal -f is not working", SUCCESS, res);
+
+      argv = new String[] { "-copyFromLocal", localFile.getName(),
+          "ForceTestDir" };
+      res = ToolRunner.run(shell, argv);
+      assertEquals(
+          "copyFromLocal command itself is able to overwrite the file", ERROR,
+          res);
+
+      // Tests for cp
+      argv = new String[] { "-cp", "-f", localFile.getName(), "ForceTestDir" };
+      res = ToolRunner.run(shell, argv);
+      assertEquals("cp -f is not working", SUCCESS, res);
+
+      argv = new String[] { "-cp", localFile.getName(),
+          "ForceTestDir" };
+      res = ToolRunner.run(shell, argv);
+      assertEquals("cp command itself is able to overwrite the file", ERROR,
+          res);
+    } finally {
+      if (null != shell)
+        shell.close();
+
+      if (localFile.exists())
+        localFile.delete();
+
+      if (null != fs) {
+        fs.delete(hdfsTestDir, true);
+        fs.close();
+      }
+      cluster.shutdown();
+    }
+
+  }
+
 }