private void logOpResponseCount(String opName, long base) { LOG.info("{} took {} web responses to complete.", opName, getCurrentWebResponses() - base); }
/** * Checks that the wasb_web_responses counter is in the given range. * @param base The base value (before the operation of interest). * @param inclusiveLowerLimit The lower limit for what it should increase by. * @param inclusiveUpperLimit The upper limit for what it should increase by. * @return The new base value now. */ private long assertWebResponsesInRange(long base, long inclusiveLowerLimit, long inclusiveUpperLimit) { long currentResponses = getCurrentWebResponses(); long justOperation = currentResponses - base; assertTrue(String.format( "Web responses expected in range [%d, %d], but was %d.", inclusiveLowerLimit, inclusiveUpperLimit, justOperation), justOperation >= inclusiveLowerLimit && justOperation <= inclusiveUpperLimit); return currentResponses; }
@Test public void testMetricsOnDirRename() throws Exception { long base = getBaseWebResponses(); Path originalDirName = new Path("/metricsTestDirectory_RenameStart"); Path innerFileName = new Path(originalDirName, "innerFile"); Path destDirName = new Path("/metricsTestDirectory_RenameFinal"); // Create an empty directory assertTrue(getFileSystem().mkdirs(originalDirName)); base = getCurrentWebResponses(); // Create an inner file assertTrue(getFileSystem().createNewFile(innerFileName)); base = getCurrentWebResponses(); // Rename the directory assertTrue(getFileSystem().rename(originalDirName, destDirName)); // At the time of writing this code it takes 11 requests/responses // to rename the directory with one file. Check for range 1-20 for now. logOpResponseCount("Renaming a directory", base); base = assertWebResponsesInRange(base, 1, 20); assertNoErrors(); }
@Test public void testMetricsOnFileExistsDelete() throws Exception { long base = getBaseWebResponses(); Path filePath = new Path("/metricsTest_delete"); // Check existence assertFalse(getFileSystem().exists(filePath)); // At the time of writing this code it takes 2 requests/responses to // check existence, which seems excessive, plus initial request for // container check, plus 2 ancestor checks only in the secure case. logOpResponseCount("Checking file existence for non-existent file", base); base = assertWebResponsesInRange(base, 1, 5); // Create an empty file assertTrue(getFileSystem().createNewFile(filePath)); base = getCurrentWebResponses(); // Check existence again assertTrue(getFileSystem().exists(filePath)); logOpResponseCount("Checking file existence for existent file", base); base = assertWebResponsesInRange(base, 1, 4); // Delete the file assertEquals(0, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_FILES_DELETED)); assertTrue(getFileSystem().delete(filePath, false)); // At the time of writing this code it takes 4 requests/responses to // delete, which seems excessive. Check for range 1-4 for now. logOpResponseCount("Deleting a file", base); base = assertWebResponsesInRange(base, 1, 4); assertEquals(1, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_FILES_DELETED)); assertNoErrors(); }