You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ae...@apache.org on 2017/09/18 22:12:03 UTC

[20/50] [abbrv] hadoop git commit: HADOOP-14553. Add (parallelized) integration tests to hadoop-azure Contributed by Steve Loughran

http://git-wip-us.apache.org/repos/asf/hadoop/blob/2d2d97fa/hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azure/metrics/TestAzureFileSystemInstrumentation.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azure/metrics/TestAzureFileSystemInstrumentation.java b/hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azure/metrics/TestAzureFileSystemInstrumentation.java
deleted file mode 100644
index 818a844..0000000
--- a/hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azure/metrics/TestAzureFileSystemInstrumentation.java
+++ /dev/null
@@ -1,579 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.fs.azure.metrics;
-
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_CLIENT_ERRORS;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_DIRECTORIES_CREATED;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_DOWNLOAD_LATENCY;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_DOWNLOAD_RATE;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_FILES_CREATED;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_FILES_DELETED;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_SERVER_ERRORS;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_UPLOAD_LATENCY;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_UPLOAD_RATE;
-import static org.apache.hadoop.fs.azure.metrics.AzureFileSystemInstrumentation.WASB_WEB_RESPONSES;
-import static org.apache.hadoop.test.MetricsAsserts.assertCounter;
-import static org.apache.hadoop.test.MetricsAsserts.getMetrics;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeNotNull;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Mockito.verify;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Date;
-
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.azure.AzureBlobStorageTestAccount;
-import org.apache.hadoop.fs.azure.AzureException;
-import org.apache.hadoop.fs.azure.AzureNativeFileSystemStore;
-import org.apache.hadoop.fs.azure.NativeAzureFileSystem;
-import org.apache.hadoop.io.IOUtils;
-import org.apache.hadoop.metrics2.MetricsRecordBuilder;
-import org.apache.hadoop.metrics2.MetricsTag;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class TestAzureFileSystemInstrumentation {
-  private FileSystem fs;
-  private AzureBlobStorageTestAccount testAccount;
-
-  @Before
-  public void setUp() throws Exception {
-    testAccount = AzureBlobStorageTestAccount.create();
-    if (testAccount != null) {
-      fs = testAccount.getFileSystem();
-    }
-    assumeNotNull(testAccount);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    if (testAccount != null) {
-      testAccount.cleanup();
-      testAccount = null;
-      fs = null;
-    }
-  }
-
-  @Test
-  public void testMetricTags() throws Exception {
-    String accountName =
-        testAccount.getRealAccount().getBlobEndpoint()
-        .getAuthority();
-    String containerName =
-        testAccount.getRealContainer().getName();
-    MetricsRecordBuilder myMetrics = getMyMetrics();
-    verify(myMetrics).add(argThat(
-        new TagMatcher("accountName", accountName)
-        ));
-    verify(myMetrics).add(argThat(
-        new TagMatcher("containerName", containerName)
-        ));
-    verify(myMetrics).add(argThat(
-        new TagMatcher("Context", "azureFileSystem")
-        ));
-    verify(myMetrics).add(argThat(
-        new TagExistsMatcher("wasbFileSystemId")
-        ));
-  }
-  
-
-  @Test
-  public void testMetricsOnMkdirList() throws Exception {
-    long base = getBaseWebResponses();
-
-    // Create a directory
-    assertTrue(fs.mkdirs(new Path("a")));
-    // At the time of writing
-    // getAncestor uses 2 calls for each folder level /user/<name>/a
-    // plus 1 call made by checkContainer
-    // mkdir checks the hierarchy with 2 calls per level
-    // mkdirs calls storeEmptyDir to create the empty folder, which makes 5 calls
-    // For a total of 7 + 6 + 5 = 18 web responses
-    base = assertWebResponsesInRange(base, 1, 18);
-    assertEquals(1,
-        AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_DIRECTORIES_CREATED));
-
-    // List the root contents
-    assertEquals(1, fs.listStatus(new Path("/")).length);
-    base = assertWebResponsesEquals(base, 1);
-
-    assertNoErrors();
-  }
-
-  private BandwidthGaugeUpdater getBandwidthGaugeUpdater() {
-    NativeAzureFileSystem azureFs = (NativeAzureFileSystem)fs;
-    AzureNativeFileSystemStore azureStore = azureFs.getStore();
-    return azureStore.getBandwidthGaugeUpdater();
-  }
-
-  private static byte[] nonZeroByteArray(int size) {
-    byte[] data = new byte[size];
-    Arrays.fill(data, (byte)5);
-    return data;
-  }
-
-  @Test
-  public void testMetricsOnFileCreateRead() throws Exception {
-    long base = getBaseWebResponses();
-
-    assertEquals(0, AzureMetricsTestUtil.getCurrentBytesWritten(getInstrumentation()));
-
-    Path filePath = new Path("/metricsTest_webResponses");
-    final int FILE_SIZE = 1000;
-
-    // Suppress auto-update of bandwidth metrics so we get
-    // to update them exactly when we want to.
-    getBandwidthGaugeUpdater().suppressAutoUpdate();
-
-    // Create a file
-    Date start = new Date();
-    OutputStream outputStream = fs.create(filePath);
-    outputStream.write(nonZeroByteArray(FILE_SIZE));
-    outputStream.close();
-    long uploadDurationMs = new Date().getTime() - start.getTime();
-
-    // The exact number of requests/responses that happen to create a file
-    // can vary  - at the time of writing this code it takes 10
-    // requests/responses for the 1000 byte file (33 for 100 MB),
-    // plus the initial container-check request but that
-    // can very easily change in the future. Just assert that we do roughly
-    // more than 2 but less than 15.
-    logOpResponseCount("Creating a 1K file", base);
-    base = assertWebResponsesInRange(base, 2, 15);
-    getBandwidthGaugeUpdater().triggerUpdate(true);
-    long bytesWritten = AzureMetricsTestUtil.getCurrentBytesWritten(getInstrumentation());
-    assertTrue("The bytes written in the last second " + bytesWritten +
-        " is pretty far from the expected range of around " + FILE_SIZE +
-        " bytes plus a little overhead.",
-        bytesWritten > (FILE_SIZE / 2) && bytesWritten < (FILE_SIZE * 2));
-    long totalBytesWritten = AzureMetricsTestUtil.getCurrentTotalBytesWritten(getInstrumentation());
-    assertTrue("The total bytes written  " + totalBytesWritten +
-        " is pretty far from the expected range of around " + FILE_SIZE +
-        " bytes plus a little overhead.",
-        totalBytesWritten >= FILE_SIZE && totalBytesWritten < (FILE_SIZE * 2));
-    long uploadRate = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(), WASB_UPLOAD_RATE);
-    System.out.println("Upload rate: " + uploadRate + " bytes/second.");
-    long expectedRate = (FILE_SIZE * 1000L) / uploadDurationMs;
-    assertTrue("The upload rate " + uploadRate +
-        " is below the expected range of around " + expectedRate +
-        " bytes/second that the unit test observed. This should never be" +
-        " the case since the test underestimates the rate by looking at " +
-        " end-to-end time instead of just block upload time.",
-        uploadRate >= expectedRate);
-    long uploadLatency = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(),
-        WASB_UPLOAD_LATENCY);
-    System.out.println("Upload latency: " + uploadLatency);
-    long expectedLatency = uploadDurationMs; // We're uploading less than a block.
-    assertTrue("The upload latency " + uploadLatency +
-        " should be greater than zero now that I've just uploaded a file.",
-        uploadLatency > 0);
-    assertTrue("The upload latency " + uploadLatency +
-        " is more than the expected range of around " + expectedLatency +
-        " milliseconds that the unit test observed. This should never be" +
-        " the case since the test overestimates the latency by looking at " +
-        " end-to-end time instead of just block upload time.",
-        uploadLatency <= expectedLatency);
-
-    // Read the file
-    start = new Date();
-    InputStream inputStream = fs.open(filePath);
-    int count = 0;
-    while (inputStream.read() >= 0) {
-      count++;
-    }
-    inputStream.close();
-    long downloadDurationMs = new Date().getTime() - start.getTime();
-    assertEquals(FILE_SIZE, count);
-
-    // Again, exact number varies. At the time of writing this code
-    // it takes 4 request/responses, so just assert a rough range between
-    // 1 and 10.
-    logOpResponseCount("Reading a 1K file", base);
-    base = assertWebResponsesInRange(base, 1, 10);
-    getBandwidthGaugeUpdater().triggerUpdate(false);
-    long totalBytesRead = AzureMetricsTestUtil.getCurrentTotalBytesRead(getInstrumentation());
-    assertEquals(FILE_SIZE, totalBytesRead);
-    long bytesRead = AzureMetricsTestUtil.getCurrentBytesRead(getInstrumentation());
-    assertTrue("The bytes read in the last second " + bytesRead +
-        " is pretty far from the expected range of around " + FILE_SIZE +
-        " bytes plus a little overhead.",
-        bytesRead > (FILE_SIZE / 2) && bytesRead < (FILE_SIZE * 2));
-    long downloadRate = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(), WASB_DOWNLOAD_RATE);
-    System.out.println("Download rate: " + downloadRate + " bytes/second.");
-    expectedRate = (FILE_SIZE * 1000L) / downloadDurationMs;
-    assertTrue("The download rate " + downloadRate +
-        " is below the expected range of around " + expectedRate +
-        " bytes/second that the unit test observed. This should never be" +
-        " the case since the test underestimates the rate by looking at " +
-        " end-to-end time instead of just block download time.",
-        downloadRate >= expectedRate);
-    long downloadLatency = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(),
-        WASB_DOWNLOAD_LATENCY);
-    System.out.println("Download latency: " + downloadLatency);
-    expectedLatency = downloadDurationMs; // We're downloading less than a block.
-    assertTrue("The download latency " + downloadLatency +
-        " should be greater than zero now that I've just downloaded a file.",
-        downloadLatency > 0);
-    assertTrue("The download latency " + downloadLatency +
-        " is more than the expected range of around " + expectedLatency +
-        " milliseconds that the unit test observed. This should never be" +
-        " the case since the test overestimates the latency by looking at " +
-        " end-to-end time instead of just block download time.",
-        downloadLatency <= expectedLatency);
-
-    assertNoErrors();
-  }
-
-  @Test
-  public void testMetricsOnBigFileCreateRead() throws Exception {
-    long base = getBaseWebResponses();
-
-    assertEquals(0, AzureMetricsTestUtil.getCurrentBytesWritten(getInstrumentation()));
-
-    Path filePath = new Path("/metricsTest_webResponses");
-    final int FILE_SIZE = 100 * 1024 * 1024;
-
-    // Suppress auto-update of bandwidth metrics so we get
-    // to update them exactly when we want to.
-    getBandwidthGaugeUpdater().suppressAutoUpdate();
-
-    // Create a file
-    OutputStream outputStream = fs.create(filePath);
-    outputStream.write(new byte[FILE_SIZE]);
-    outputStream.close();
-
-    // The exact number of requests/responses that happen to create a file
-    // can vary  - at the time of writing this code it takes 34
-    // requests/responses for the 100 MB file,
-    // plus the initial container check request, but that
-    // can very easily change in the future. Just assert that we do roughly
-    // more than 20 but less than 50.
-    logOpResponseCount("Creating a 100 MB file", base);
-    base = assertWebResponsesInRange(base, 20, 50);
-    getBandwidthGaugeUpdater().triggerUpdate(true);
-    long totalBytesWritten = AzureMetricsTestUtil.getCurrentTotalBytesWritten(getInstrumentation());
-    assertTrue("The total bytes written  " + totalBytesWritten +
-        " is pretty far from the expected range of around " + FILE_SIZE +
-        " bytes plus a little overhead.",
-        totalBytesWritten >= FILE_SIZE && totalBytesWritten < (FILE_SIZE * 2));
-    long uploadRate = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(), WASB_UPLOAD_RATE);
-    System.out.println("Upload rate: " + uploadRate + " bytes/second.");
-    long uploadLatency = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(),
-        WASB_UPLOAD_LATENCY);
-    System.out.println("Upload latency: " + uploadLatency);
-    assertTrue("The upload latency " + uploadLatency +
-        " should be greater than zero now that I've just uploaded a file.",
-        uploadLatency > 0);
-
-    // Read the file
-    InputStream inputStream = fs.open(filePath);
-    int count = 0;
-    while (inputStream.read() >= 0) {
-      count++;
-    }
-    inputStream.close();
-    assertEquals(FILE_SIZE, count);
-
-    // Again, exact number varies. At the time of writing this code
-    // it takes 27 request/responses, so just assert a rough range between
-    // 20 and 40.
-    logOpResponseCount("Reading a 100 MB file", base);
-    base = assertWebResponsesInRange(base, 20, 40);
-    getBandwidthGaugeUpdater().triggerUpdate(false);
-    long totalBytesRead = AzureMetricsTestUtil.getCurrentTotalBytesRead(getInstrumentation());
-    assertEquals(FILE_SIZE, totalBytesRead);
-    long downloadRate = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(), WASB_DOWNLOAD_RATE);
-    System.out.println("Download rate: " + downloadRate + " bytes/second.");
-    long downloadLatency = AzureMetricsTestUtil.getLongGaugeValue(getInstrumentation(),
-        WASB_DOWNLOAD_LATENCY);
-    System.out.println("Download latency: " + downloadLatency);
-    assertTrue("The download latency " + downloadLatency +
-        " should be greater than zero now that I've just downloaded a file.",
-        downloadLatency > 0);
-  }
-
-  @Test
-  public void testMetricsOnFileRename() throws Exception {
-    long base = getBaseWebResponses();
-
-    Path originalPath = new Path("/metricsTest_RenameStart");
-    Path destinationPath = new Path("/metricsTest_RenameFinal");
-
-    // Create an empty file
-    assertEquals(0, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_FILES_CREATED));
-    assertTrue(fs.createNewFile(originalPath));
-    logOpResponseCount("Creating an empty file", base);
-    base = assertWebResponsesInRange(base, 2, 20);
-    assertEquals(1, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_FILES_CREATED));
-
-    // Rename the file
-    assertTrue(fs.rename(originalPath, destinationPath));
-    // Varies: at the time of writing this code it takes 7 requests/responses.
-    logOpResponseCount("Renaming a file", base);
-    base = assertWebResponsesInRange(base, 2, 15);
-
-    assertNoErrors();
-  }
-
-  @Test
-  public void testMetricsOnFileExistsDelete() throws Exception {
-    long base = getBaseWebResponses();
-
-    Path filePath = new Path("/metricsTest_delete");
-
-    // Check existence
-    assertFalse(fs.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.
-    logOpResponseCount("Checking file existence for non-existent file", base);
-    base = assertWebResponsesInRange(base, 1, 3);
-
-    // Create an empty file
-    assertTrue(fs.createNewFile(filePath));
-    base = getCurrentWebResponses();
-
-    // Check existence again
-    assertTrue(fs.exists(filePath));
-    logOpResponseCount("Checking file existence for existent file", base);
-    base = assertWebResponsesInRange(base, 1, 2);
-
-    // Delete the file
-    assertEquals(0, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_FILES_DELETED));
-    assertTrue(fs.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();
-  }
-
-  @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(fs.mkdirs(originalDirName));
-    base = getCurrentWebResponses();
-
-    // Create an inner file
-    assertTrue(fs.createNewFile(innerFileName));
-    base = getCurrentWebResponses();
-
-    // Rename the directory
-    assertTrue(fs.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 testClientErrorMetrics() throws Exception {
-    String fileName = "metricsTestFile_ClientError";
-    Path filePath = new Path("/"+fileName);
-    final int FILE_SIZE = 100;
-    OutputStream outputStream = null;
-    String leaseID = null;
-    try {
-      // Create a file
-      outputStream = fs.create(filePath);
-      leaseID = testAccount.acquireShortLease(fileName);
-      try {
-        outputStream.write(new byte[FILE_SIZE]);
-        outputStream.close();
-        assertTrue("Should've thrown", false);
-      } catch (AzureException ex) {
-        assertTrue("Unexpected exception: " + ex,
-          ex.getMessage().contains("lease"));
-      }
-      assertEquals(1, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_CLIENT_ERRORS));
-      assertEquals(0, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_SERVER_ERRORS));
-    } finally {
-      if(leaseID != null){
-        testAccount.releaseLease(leaseID, fileName);
-      }
-      IOUtils.closeStream(outputStream);
-    }
-  }
-
-  private void logOpResponseCount(String opName, long base) {
-    System.out.println(opName + " took " + (getCurrentWebResponses() - base) +
-        " web responses to complete.");
-  }
-
-  /**
-   * Gets (and asserts) the value of the wasb_web_responses counter just
-   * after the creation of the file system object.
-   */
-  private long getBaseWebResponses() {
-    // The number of requests should start at 0
-    return assertWebResponsesEquals(0, 0);
-  }
-
-  /**
-   * Gets the current value of the wasb_web_responses counter.
-   */
-  private long getCurrentWebResponses() {
-	    return AzureMetricsTestUtil.getCurrentWebResponses(getInstrumentation());
-  }
-
-  /**
-   * Checks that the wasb_web_responses counter is at the given value.
-   * @param base The base value (before the operation of interest).
-   * @param expected The expected value for the operation of interest.
-   * @return The new base value now.
-   */
-  private long assertWebResponsesEquals(long base, long expected) {
-    assertCounter(WASB_WEB_RESPONSES, base + expected, getMyMetrics());
-    return base + expected;
-  }
-
-  private void assertNoErrors() {
-    assertEquals(0, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_CLIENT_ERRORS));
-    assertEquals(0, AzureMetricsTestUtil.getLongCounterValue(getInstrumentation(), WASB_SERVER_ERRORS));
-  }
-
-  /**
-   * 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;
-  }  
-
-  /**
-   * Gets the metrics for the file system object.
-   * @return The metrics record.
-   */
-  private MetricsRecordBuilder getMyMetrics() {
-    return getMetrics(getInstrumentation());
-  }
-
-  private AzureFileSystemInstrumentation getInstrumentation() {
-    return ((NativeAzureFileSystem)fs).getInstrumentation();
-  }
-
-  /**
-   * A matcher class for asserting that we got a tag with a given
-   * value.
-   */
-  private static class TagMatcher extends TagExistsMatcher {
-    private final String tagValue;
-
-    public TagMatcher(String tagName, String tagValue) {
-      super(tagName);
-      this.tagValue = tagValue;
-    }
-
-    @Override
-    public boolean matches(MetricsTag toMatch) {
-      return toMatch.value().equals(tagValue);
-    }
-
-    @Override
-    public void describeTo(Description desc) {
-      super.describeTo(desc);
-      desc.appendText(" with value " + tagValue);
-    }
-  }
-
-  /**
-   * A matcher class for asserting that we got a tag with any value.
-   */
-  private static class TagExistsMatcher extends BaseMatcher<MetricsTag> {
-    private final String tagName;
-
-    public TagExistsMatcher(String tagName) {
-      this.tagName = tagName;
-    }
-
-    @Override
-    public boolean matches(Object toMatch) {
-      MetricsTag asTag = (MetricsTag)toMatch;
-      return asTag.name().equals(tagName) && matches(asTag);
-    }
-
-    protected boolean matches(MetricsTag toMatch) {
-      return true;
-    }
-
-    @Override
-    public void describeTo(Description desc) {
-      desc.appendText("Has tag " + tagName);
-    }
-  }
-
-  /**
-   * A matcher class for asserting that a long value is in a
-   * given range.
-   */
-  private static class InRange extends BaseMatcher<Long> {
-    private final long inclusiveLowerLimit;
-    private final long inclusiveUpperLimit;
-    private long obtained;
-
-    public InRange(long inclusiveLowerLimit, long inclusiveUpperLimit) {
-      this.inclusiveLowerLimit = inclusiveLowerLimit;
-      this.inclusiveUpperLimit = inclusiveUpperLimit;
-    }
-
-    @Override
-    public boolean matches(Object number) {
-      obtained = (Long)number;
-      return obtained >= inclusiveLowerLimit &&
-          obtained <= inclusiveUpperLimit;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-      description.appendText("Between " + inclusiveLowerLimit +
-          " and " + inclusiveUpperLimit + " inclusively");
-    }
-  }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org