浏览代码

HADOOP-15154. Abstract new method assertCapability for StreamCapabilities testing. Contributed by Zsolt Venczel.

Xiao Chen 7 年之前
父节点
当前提交
89f5911392

+ 25 - 14
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/crypto/TestCryptoStreams.java

@@ -44,8 +44,7 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.apache.hadoop.fs.contract.ContractTestUtils.assertCapabilities;
 
 public class TestCryptoStreams extends CryptoStreamsTestBase {
   /**
@@ -419,21 +418,33 @@ public class TestCryptoStreams extends CryptoStreamsTestBase {
     // verify hasCapability returns what FakeOutputStream is set up for
     CryptoOutputStream cos =
         (CryptoOutputStream) getOutputStream(defaultBufferSize, key, iv);
-    assertTrue(cos instanceof StreamCapabilities);
-    assertTrue(cos.hasCapability(StreamCapabilities.HFLUSH));
-    assertTrue(cos.hasCapability(StreamCapabilities.HSYNC));
-    assertTrue(cos.hasCapability(StreamCapabilities.DROPBEHIND));
-    assertFalse(cos.hasCapability(StreamCapabilities.READAHEAD));
-    assertFalse(cos.hasCapability(StreamCapabilities.UNBUFFER));
+
+    assertCapabilities(cos,
+        new String[] {
+            StreamCapabilities.HFLUSH,
+            StreamCapabilities.HSYNC,
+            StreamCapabilities.DROPBEHIND
+        },
+        new String[] {
+            StreamCapabilities.READAHEAD,
+            StreamCapabilities.UNBUFFER
+        }
+    );
 
     // verify hasCapability for input stream
     CryptoInputStream cis =
         (CryptoInputStream) getInputStream(defaultBufferSize, key, iv);
-    assertTrue(cis instanceof StreamCapabilities);
-    assertTrue(cis.hasCapability(StreamCapabilities.DROPBEHIND));
-    assertTrue(cis.hasCapability(StreamCapabilities.READAHEAD));
-    assertTrue(cis.hasCapability(StreamCapabilities.UNBUFFER));
-    assertFalse(cis.hasCapability(StreamCapabilities.HFLUSH));
-    assertFalse(cis.hasCapability(StreamCapabilities.HSYNC));
+
+    assertCapabilities(cis,
+        new String[] {
+            StreamCapabilities.DROPBEHIND,
+            StreamCapabilities.READAHEAD,
+            StreamCapabilities.UNBUFFER
+        },
+        new String[] {
+            StreamCapabilities.HFLUSH,
+            StreamCapabilities.HSYNC
+        }
+    );
   }
 }

+ 29 - 0
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java

@@ -26,6 +26,7 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.LocatedFileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.RemoteIterator;
+import org.apache.hadoop.fs.StreamCapabilities;
 import org.apache.hadoop.io.IOUtils;
 import org.junit.Assert;
 import org.junit.internal.AssumptionViolatedException;
@@ -1437,6 +1438,34 @@ public class ContractTestUtils extends Assert {
     return list;
   }
 
+  /**
+   * Custom assert to test {@link StreamCapabilities}.
+   *
+   * @param stream The stream to test for StreamCapabilities
+   * @param shouldHaveCapabilities The array of expected capabilities
+   * @param shouldNotHaveCapabilities The array of unexpected capabilities
+   */
+  public static void assertCapabilities(
+      Object stream, String[] shouldHaveCapabilities,
+      String[] shouldNotHaveCapabilities) {
+    assertTrue("Stream should be instanceof StreamCapabilities",
+        stream instanceof StreamCapabilities);
+
+    if (shouldHaveCapabilities!=null) {
+      for (String shouldHaveCapability : shouldHaveCapabilities) {
+        assertTrue("Should have capability: " + shouldHaveCapability,
+            ((StreamCapabilities) stream).hasCapability(shouldHaveCapability));
+      }
+    }
+
+    if (shouldNotHaveCapabilities!=null) {
+      for (String shouldNotHaveCapability : shouldNotHaveCapabilities) {
+        assertFalse("Should not have capability: " + shouldNotHaveCapability,
+            ((StreamCapabilities) stream)
+                .hasCapability(shouldNotHaveCapability));
+      }
+    }
+  }
 
   /**
    * Results of recursive directory creation/scan operations.