mukund-thakur commented on a change in pull request #1881: HADOOP-16910 Adding 
file system counters in ABFS
URL: https://github.com/apache/hadoop/pull/1881#discussion_r394121291
 
 

 ##########
 File path: 
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/ITestAbfsStreamStatistics.java
 ##########
 @@ -46,66 +46,89 @@ public void testAbfsStreamOps() throws Exception {
         + "Abfs");
 
     final AzureBlobFileSystem fs = getFileSystem();
-    Path smallOperaionsFile = new Path("testOneReadWriteOps");
+    Path smallOperationsFile = new Path("testOneReadWriteOps");
     Path largeOperationsFile = new Path("testLargeReadWriteOps");
     FileSystem.Statistics statistics = fs.getFsStatistics();
     String testReadWriteOps = "test this";
     statistics.reset();
 
     //Test for zero read and write operation
-    Assert.assertEquals("Mismatch in read operations", 0,
-        statistics.getReadOps());
-    Assert.assertEquals("Mismatch in write operations", 0,
-        statistics.getWriteOps());
-
-    FSDataOutputStream outForOneOperation = fs.create(smallOperaionsFile);
-    statistics.reset();
-    outForOneOperation.write(testReadWriteOps.getBytes());
-    FSDataInputStream inForOneCall = fs.open(smallOperaionsFile);
-    inForOneCall.read(testReadWriteOps.getBytes(), 0,
-        testReadWriteOps.getBytes().length);
-
-    //Test for one read and write operation
-    Assert.assertEquals("Mismatch in read operations", 1,
-        statistics.getReadOps());
-    Assert.assertEquals("Mismatch in write operations", 1,
-        statistics.getWriteOps());
-
-    outForOneOperation.close();
-    //Validating if Content is being written in the smallFile
-    Assert.assertEquals("Mismatch in content validation", true,
-        validateContent(fs, smallOperaionsFile,
+    assertReadWriteOps(0, statistics);
+
+    FSDataOutputStream outForOneOperation = null;
+    FSDataInputStream inForOneOperation = null;
+    try {
+      outForOneOperation = fs.create(smallOperationsFile);
+      statistics.reset();
+      outForOneOperation.write(testReadWriteOps.getBytes());
+      inForOneOperation = fs.open(smallOperationsFile);
+      inForOneOperation.read(testReadWriteOps.getBytes(), 0,
+          testReadWriteOps.getBytes().length);
+
+      //Test for one read and write operation
+      assertReadWriteOps(1, statistics);
+    } finally {
+      if (inForOneOperation != null) {
+        inForOneOperation.close();
+      }
+      if (outForOneOperation != null) {
+        outForOneOperation.close();
+      }
+    }
+    //Validating if content is being written in the smallOperationsFile
+    Assert.assertTrue("Mismatch in content validation",
+        validateContent(fs, smallOperationsFile,
             testReadWriteOps.getBytes()));
 
-    FSDataOutputStream outForLargeOperations = fs.create(largeOperationsFile);
-    statistics.reset();
-
+    FSDataOutputStream outForLargeOperations = null;
+    FSDataInputStream inForLargeOperations = null;
     StringBuilder largeOperationsValidationString = new StringBuilder();
-    for (int i = 0; i < 1000000; i++) {
-      outForLargeOperations.write(testReadWriteOps.getBytes());
-
-      //Creating the String for content Validation
-      largeOperationsValidationString.append(testReadWriteOps);
+    try {
+      outForLargeOperations = fs.create(largeOperationsFile);
+      statistics.reset();
+      int largeValue = 1000000;
+      for (int i = 0; i < largeValue; i++) {
+        outForLargeOperations.write(testReadWriteOps.getBytes());
+
+        //Creating the String for content Validation
+        largeOperationsValidationString.append(testReadWriteOps);
+      }
+
+      inForLargeOperations = fs.open(largeOperationsFile);
+      for (int i = 0; i < largeValue; i++)
+        inForLargeOperations
+            .read(testReadWriteOps.getBytes(), 0,
+                testReadWriteOps.getBytes().length);
+
+      //Test for one million read and write operations
+      assertReadWriteOps(largeValue, statistics);
+    } finally {
+      if (inForLargeOperations != null) {
+        inForLargeOperations.close();
+      }
+      if (outForLargeOperations != null) {
+        outForLargeOperations.close();
+      }
     }
 
-    FSDataInputStream inForLargeCalls = fs.open(largeOperationsFile);
+    //Validating if content is being written in largeOperationsFile
+    Assert.assertTrue("Mismatch in content validation",
+        validateContent(fs, largeOperationsFile,
+            largeOperationsValidationString.toString().getBytes()));
 
-    for (int i = 0; i < 1000000; i++)
-      inForLargeCalls
-          .read(testReadWriteOps.getBytes(), 0,
-              testReadWriteOps.getBytes().length);
+  }
 
-    //Test for one million read and write operations
-    Assert.assertEquals("Mismatch in read operations", 1000000,
+  /**
+   * Method for Read and Write Ops Assertion.
+   *
+   * @param expectedReadWriteOps Expected Value
+   * @param statistics           fs stats to get Actual Values
+   */
+  private void assertReadWriteOps(long expectedReadWriteOps,
 
 Review comment:
   This is wrong. How can you compare the expected value with both read and 
write value? What if read and write values are different?
    assertReadWriteOps(operation, expected, actual) is what we discussed right?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to