Explorar o código

HADOOP-17018. Intermittent failing of ITestAbfsStreamStatistics in ABFS (#1990)

Contributed by: Mehakmeet Singh

In some cases, ABFS-prefetch thread runs in the background which returns some bytes from the buffer and gives an extra readOp. Thus, making readOps values arbitrary and giving intermittent failures in some cases. Hence, readOps values of 2 or 3 are seen in different setups.
Mehakmeet Singh %!s(int64=5) %!d(string=hai) anos
pai
achega
a2f44344c3

+ 14 - 5
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/ITestAbfsStreamStatistics.java

@@ -84,12 +84,21 @@ public class ITestAbfsStreamStatistics extends AbstractAbfsIntegrationTest {
 
 
       LOG.info("Result of Read operation : {}", result);
       LOG.info("Result of Read operation : {}", result);
       /*
       /*
-      Testing if 2 read_ops value is coming after reading full content from a
-      file (3 if anything to read from Buffer too).
-      Reason: read() call gives read_ops=1,
-      reading from AbfsClient(http GET) gives read_ops=2.
+       * Testing if 2 read_ops value is coming after reading full content
+       * from a file (3 if anything to read from Buffer too). Reason: read()
+       * call gives read_ops=1, reading from AbfsClient(http GET) gives
+       * read_ops=2.
+       *
+       * In some cases ABFS-prefetch thread runs in the background which
+       * returns some bytes from buffer and gives an extra readOp.
+       * Thus, making readOps values arbitrary and giving intermittent
+       * failures in some cases. Hence, readOps values of 2 or 3 is seen in
+       * different setups.
+       *
        */
        */
-      assertReadWriteOps("read", 2, statistics.getReadOps());
+      assertTrue(String.format("The actual value of %d was not equal to the "
+              + "expected value of 2 or 3", statistics.getReadOps()),
+          statistics.getReadOps() == 2 || statistics.getReadOps() == 3);
 
 
     } finally {
     } finally {
       IOUtils.cleanupWithLogger(LOG, inForOneOperation,
       IOUtils.cleanupWithLogger(LOG, inForOneOperation,