Search in sources :

Example 1 with ManualEnvironmentEdge

use of org.apache.hadoop.hbase.util.ManualEnvironmentEdge in project hbase by apache.

the class TestHCM method testErrorBackoffTimeCalculation.

@Test
public void testErrorBackoffTimeCalculation() throws Exception {
    // TODO: This test would seem to presume hardcoded RETRY_BACKOFF which it should not.
    final long ANY_PAUSE = 100;
    ServerName location = ServerName.valueOf("127.0.0.1", 1, 0);
    ServerName diffLocation = ServerName.valueOf("127.0.0.1", 2, 0);
    ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();
    EnvironmentEdgeManager.injectEdge(timeMachine);
    try {
        long largeAmountOfTime = ANY_PAUSE * 1000;
        ConnectionImplementation.ServerErrorTracker tracker = new ConnectionImplementation.ServerErrorTracker(largeAmountOfTime, 100);
        // The default backoff is 0.
        assertEquals(0, tracker.calculateBackoffTime(location, ANY_PAUSE));
        // Check some backoff values from HConstants sequence.
        tracker.reportServerError(location);
        assertEqualsWithJitter(ANY_PAUSE * HConstants.RETRY_BACKOFF[0], tracker.calculateBackoffTime(location, ANY_PAUSE));
        tracker.reportServerError(location);
        tracker.reportServerError(location);
        tracker.reportServerError(location);
        assertEqualsWithJitter(ANY_PAUSE * HConstants.RETRY_BACKOFF[3], tracker.calculateBackoffTime(location, ANY_PAUSE));
        // All of this shouldn't affect backoff for different location.
        assertEquals(0, tracker.calculateBackoffTime(diffLocation, ANY_PAUSE));
        tracker.reportServerError(diffLocation);
        assertEqualsWithJitter(ANY_PAUSE * HConstants.RETRY_BACKOFF[0], tracker.calculateBackoffTime(diffLocation, ANY_PAUSE));
        // Check with different base.
        assertEqualsWithJitter(ANY_PAUSE * 2 * HConstants.RETRY_BACKOFF[3], tracker.calculateBackoffTime(location, ANY_PAUSE * 2));
    } finally {
        EnvironmentEdgeManager.reset();
    }
}
Also used : ServerName(org.apache.hadoop.hbase.ServerName) ManualEnvironmentEdge(org.apache.hadoop.hbase.util.ManualEnvironmentEdge) Test(org.junit.Test)

Example 2 with ManualEnvironmentEdge

use of org.apache.hadoop.hbase.util.ManualEnvironmentEdge in project hbase by apache.

the class TestDeadServer method testSortExtract.

@Test
public void testSortExtract() {
    ManualEnvironmentEdge mee = new ManualEnvironmentEdge();
    EnvironmentEdgeManager.injectEdge(mee);
    mee.setValue(1);
    DeadServer d = new DeadServer();
    d.add(hostname123);
    mee.incValue(1);
    d.add(hostname1234);
    mee.incValue(1);
    d.add(hostname12345);
    List<Pair<ServerName, Long>> copy = d.copyDeadServersSince(2L);
    Assert.assertEquals(2, copy.size());
    Assert.assertEquals(hostname1234, copy.get(0).getFirst());
    Assert.assertEquals(new Long(2L), copy.get(0).getSecond());
    Assert.assertEquals(hostname12345, copy.get(1).getFirst());
    Assert.assertEquals(new Long(3L), copy.get(1).getSecond());
    EnvironmentEdgeManager.reset();
}
Also used : ManualEnvironmentEdge(org.apache.hadoop.hbase.util.ManualEnvironmentEdge) Pair(org.apache.hadoop.hbase.util.Pair) Test(org.junit.Test)

Example 3 with ManualEnvironmentEdge

use of org.apache.hadoop.hbase.util.ManualEnvironmentEdge in project hbase by apache.

the class TestQuotaThrottle method setUpBeforeClass.

@BeforeClass
public static void setUpBeforeClass() throws Exception {
    TEST_UTIL.getConfiguration().setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);
    TEST_UTIL.getConfiguration().setInt(QuotaCache.REFRESH_CONF_KEY, REFRESH_TIME);
    TEST_UTIL.getConfiguration().setInt("hbase.hstore.compactionThreshold", 10);
    TEST_UTIL.getConfiguration().setInt("hbase.regionserver.msginterval", 100);
    TEST_UTIL.getConfiguration().setInt("hbase.client.pause", 250);
    TEST_UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 6);
    TEST_UTIL.getConfiguration().setBoolean("hbase.master.enabletable.roundrobin", true);
    TEST_UTIL.startMiniCluster(1);
    TEST_UTIL.waitTableAvailable(QuotaTableUtil.QUOTA_TABLE_NAME);
    QuotaCache.TEST_FORCE_REFRESH = true;
    tables = new Table[TABLE_NAMES.length];
    for (int i = 0; i < TABLE_NAMES.length; ++i) {
        tables[i] = TEST_UTIL.createTable(TABLE_NAMES[i], FAMILY);
    }
    envEdge = new ManualEnvironmentEdge();
    envEdge.setValue(EnvironmentEdgeManager.currentTime());
    EnvironmentEdgeManagerTestHelper.injectEdge(envEdge);
}
Also used : ManualEnvironmentEdge(org.apache.hadoop.hbase.util.ManualEnvironmentEdge) BeforeClass(org.junit.BeforeClass)

Example 4 with ManualEnvironmentEdge

use of org.apache.hadoop.hbase.util.ManualEnvironmentEdge in project hbase by apache.

the class TestRateLimiter method testExtremeLimiters.

@Test
public void testExtremeLimiters() throws InterruptedException {
    ManualEnvironmentEdge testEdge = new ManualEnvironmentEdge();
    EnvironmentEdgeManager.injectEdge(testEdge);
    long limit = Long.MAX_VALUE - 1;
    RateLimiter avgLimiter = new AverageIntervalRateLimiter();
    avgLimiter.set(limit, TimeUnit.SECONDS);
    RateLimiter fixLimiter = new FixedIntervalRateLimiter();
    fixLimiter.set(limit, TimeUnit.SECONDS);
    assertEquals(limit, avgLimiter.getAvailable());
    assertEquals(limit, fixLimiter.getAvailable());
    assertTrue(avgLimiter.canExecute(limit / 2));
    avgLimiter.consume(limit / 2);
    assertTrue(fixLimiter.canExecute(limit / 2));
    fixLimiter.consume(limit / 2);
    // Make sure that available is whatever left
    assertTrue((limit - (limit / 2)) == avgLimiter.getAvailable());
    assertTrue((limit - (limit / 2)) == fixLimiter.getAvailable());
    // after 100 millseconds, both should not be able to execute the limit
    testEdge.incValue(100);
    assertFalse(avgLimiter.canExecute(limit));
    assertFalse(fixLimiter.canExecute(limit));
    // after 500 millseconds, average interval limiter should be able to execute the limit
    testEdge.incValue(500);
    assertTrue(avgLimiter.canExecute(limit));
    assertFalse(fixLimiter.canExecute(limit));
    // Make sure that available is correct
    assertTrue(limit == avgLimiter.getAvailable());
    assertTrue((limit - (limit / 2)) == fixLimiter.getAvailable());
    // after 500 millseconds, both should be able to execute
    testEdge.incValue(500);
    assertTrue(avgLimiter.canExecute(limit));
    assertTrue(fixLimiter.canExecute(limit));
    // Make sure that available is Long.MAX_VALUE
    assertTrue(limit == avgLimiter.getAvailable());
    assertTrue(limit == fixLimiter.getAvailable());
    EnvironmentEdgeManager.reset();
}
Also used : ManualEnvironmentEdge(org.apache.hadoop.hbase.util.ManualEnvironmentEdge) Test(org.junit.Test)

Example 5 with ManualEnvironmentEdge

use of org.apache.hadoop.hbase.util.ManualEnvironmentEdge in project hbase by apache.

the class TestRateLimiter method testUnconfiguredLimiters.

@Test
public void testUnconfiguredLimiters() throws InterruptedException {
    ManualEnvironmentEdge testEdge = new ManualEnvironmentEdge();
    EnvironmentEdgeManager.injectEdge(testEdge);
    long limit = Long.MAX_VALUE;
    // For unconfigured limiters, it is supposed to use as much as possible
    RateLimiter avgLimiter = new AverageIntervalRateLimiter();
    RateLimiter fixLimiter = new FixedIntervalRateLimiter();
    assertEquals(limit, avgLimiter.getAvailable());
    assertEquals(limit, fixLimiter.getAvailable());
    assertTrue(avgLimiter.canExecute(limit));
    avgLimiter.consume(limit);
    assertTrue(fixLimiter.canExecute(limit));
    fixLimiter.consume(limit);
    // Make sure that available is Long.MAX_VALUE
    assertTrue(limit == avgLimiter.getAvailable());
    assertTrue(limit == fixLimiter.getAvailable());
    // after 100 millseconds, it should be able to execute limit as well
    testEdge.incValue(100);
    assertTrue(avgLimiter.canExecute(limit));
    avgLimiter.consume(limit);
    assertTrue(fixLimiter.canExecute(limit));
    fixLimiter.consume(limit);
    // Make sure that available is Long.MAX_VALUE
    assertTrue(limit == avgLimiter.getAvailable());
    assertTrue(limit == fixLimiter.getAvailable());
    EnvironmentEdgeManager.reset();
}
Also used : ManualEnvironmentEdge(org.apache.hadoop.hbase.util.ManualEnvironmentEdge) Test(org.junit.Test)

Aggregations

ManualEnvironmentEdge (org.apache.hadoop.hbase.util.ManualEnvironmentEdge)18 Test (org.junit.Test)14 Cell (org.apache.hadoop.hbase.Cell)4 Get (org.apache.hadoop.hbase.client.Get)4 Result (org.apache.hadoop.hbase.client.Result)4 Configuration (org.apache.hadoop.conf.Configuration)2 ScheduledChore (org.apache.hadoop.hbase.ScheduledChore)2 Stoppable (org.apache.hadoop.hbase.Stoppable)2 Put (org.apache.hadoop.hbase.client.Put)2 BinaryComparator (org.apache.hadoop.hbase.filter.BinaryComparator)2 StoreFile (org.apache.hadoop.hbase.regionserver.StoreFile)2 StripeInformationProvider (org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy.StripeInformationProvider)2 BeforeClass (org.junit.BeforeClass)2 InetSocketAddress (java.net.InetSocketAddress)1 ArrayList (java.util.ArrayList)1 ServerName (org.apache.hadoop.hbase.ServerName)1 TableName (org.apache.hadoop.hbase.TableName)1 Append (org.apache.hadoop.hbase.client.Append)1 Increment (org.apache.hadoop.hbase.client.Increment)1 RowMutations (org.apache.hadoop.hbase.client.RowMutations)1