org.apache.hadoop.hbase.client.Admin#setQuota ( )源码实例Demo

下面列出了org.apache.hadoop.hbase.client.Admin#setQuota ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testTableUnThrottleByType() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();
  // Add 6req/min limit
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0], ThrottleType.REQUEST_NUMBER,
    6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0], ThrottleType.REQUEST_SIZE, 6,
    TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[1], ThrottleType.REQUEST_NUMBER,
    6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[1], ThrottleType.REQUEST_SIZE, 6,
    TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.unthrottleTableByThrottleType(TABLE_NAMES[0],
    ThrottleType.REQUEST_NUMBER));
  assertEquals(3, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleTableByThrottleType(TABLE_NAMES[0],
    ThrottleType.REQUEST_SIZE));
  assertEquals(2, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleTable(TABLE_NAMES[1]));
  assertEquals(0, getQuotaSettingCount(admin));
}
 
源代码2 项目: hbase   文件: TestMasterQuotasObserver.java
@Test
public void testTableSpaceQuotaRemoved() throws Exception {
  final Connection conn = TEST_UTIL.getConnection();
  final Admin admin = conn.getAdmin();
  final TableName tn = TableName.valueOf(testName.getMethodName());
  // Drop the table if it somehow exists
  if (admin.tableExists(tn)) {
    dropTable(admin, tn);
  }
  createTable(admin, tn);
  assertEquals(0, getNumSpaceQuotas());

  // Set space quota
  QuotaSettings settings = QuotaSettingsFactory.limitTableSpace(
      tn, 1024L, SpaceViolationPolicy.NO_INSERTS);
  admin.setQuota(settings);
  assertEquals(1, getNumSpaceQuotas());

  // Drop the table and observe the Space quota being automatically deleted as well
  dropTable(admin, tn);
  assertEquals(0, getNumSpaceQuotas());
}
 
源代码3 项目: hbase   文件: TestClusterScopeQuotaThrottle.java
@Test
public void testUserClusterScopeQuota() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();

  // Add 6req/min limit for read request in cluster scope
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, ThrottleType.READ_NUMBER, 6,
    TimeUnit.MINUTES, QuotaScope.CLUSTER));
  // Add 6req/min limit for write request in machine scope
  admin.setQuota(
    QuotaSettingsFactory.throttleUser(userName, ThrottleType.WRITE_NUMBER, 6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES);
  // should execute at max 6 read requests and at max 3 write write requests
  assertEquals(6, doPuts(10, FAMILY, QUALIFIER, tables[0]));
  assertEquals(3, doGets(10, tables[0]));
  // Remove all the limits
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName));
  triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAMES);
}
 
源代码4 项目: hbase   文件: TestClusterScopeQuotaThrottle.java
@org.junit.Ignore @Test // Spews the log w/ triggering of scheduler? HBASE-24035
public void testUserNamespaceClusterScopeQuota() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();
  final String namespace = TABLE_NAMES[0].getNamespaceAsString();

  // Add 10req/min limit for read request in cluster scope
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, namespace, ThrottleType.READ_NUMBER,
    10, TimeUnit.MINUTES, QuotaScope.CLUSTER));
  // Add 6req/min limit for write request in machine scope
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, namespace, ThrottleType.WRITE_NUMBER,
    6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);
  // should execute at max 5 read requests and at max 6 write requests
  assertEquals(5, doGets(10, tables[0]));
  assertEquals(6, doPuts(10, FAMILY, QUALIFIER, tables[0]));

  // Remove all the limits
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName, namespace));
  triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAMES[0]);
}
 
源代码5 项目: hbase   文件: TestQuotaAdmin.java
private void testSetGetRemoveRPCQuota(ThrottleType throttleType) throws Exception {
  Admin admin = TEST_UTIL.getAdmin();
  final TableName tn = TableName.valueOf("sq_table1");
  QuotaSettings settings =
      QuotaSettingsFactory.throttleTable(tn, throttleType, 2L, TimeUnit.HOURS);
  admin.setQuota(settings);

  // Verify the Quota in the table
  verifyRecordPresentInQuotaTable(throttleType, 2L, TimeUnit.HOURS);

  // Verify we can retrieve it via the QuotaRetriever API
  verifyFetchableViaAPI(admin, throttleType, 2L, TimeUnit.HOURS);

  // Now, remove the quota
  QuotaSettings removeQuota = QuotaSettingsFactory.unthrottleTable(tn);
  admin.setQuota(removeQuota);

  // Verify that the record doesn't exist in the table
  verifyRecordNotPresentInQuotaTable();

  // Verify that we can also not fetch it via the API
  verifyNotFetchableViaAPI(admin);
}
 
源代码6 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testRegionServerUnThrottleByType() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String[] REGIONSERVER = { "RS01", "RS02" };

  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(REGIONSERVER[0],
    ThrottleType.READ_NUMBER, 4, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(REGIONSERVER[0],
    ThrottleType.WRITE_NUMBER, 4, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(REGIONSERVER[1],
    ThrottleType.READ_NUMBER, 4, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(REGIONSERVER[1],
    ThrottleType.WRITE_NUMBER, 4, TimeUnit.MINUTES));

  admin.setQuota(QuotaSettingsFactory.unthrottleRegionServerByThrottleType(REGIONSERVER[0],
    ThrottleType.READ_NUMBER));
  assertEquals(3, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleRegionServerByThrottleType(REGIONSERVER[0],
    ThrottleType.WRITE_NUMBER));
  assertEquals(2, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleRegionServer(REGIONSERVER[1]));
  assertEquals(0, getQuotaSettingCount(admin));
}
 
源代码7 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testUserTableThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();

  // Add 6req/min limit
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, TABLE_NAMES[0],
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  // should execute at max 6 requests on tables[0] and have no limit on tables[1]
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));
  assertEquals(30, doPuts(30, FAMILY, QUALIFIER, tables[1]));

  // wait a minute and you should get other 6 requests executed
  waitMinuteQuota();
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));

  // Remove all the limits
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName, TABLE_NAMES[0]));
  triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAMES);
  assertEquals(60, doPuts(60, FAMILY, QUALIFIER, tables));
  assertEquals(60, doGets(60, tables));
}
 
源代码8 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testUserNamespaceThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();
  final String NAMESPACE = "default";

  // Add 6req/min limit
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, NAMESPACE,
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  // should execute at max 6 requests on tables[0] and have no limit on tables[1]
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));

  // wait a minute and you should get other 6 requests executed
  waitMinuteQuota();
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[1]));

  // Remove all the limits
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName, NAMESPACE));
  triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAMES);
  assertEquals(60, doPuts(60, FAMILY, QUALIFIER, tables));
  assertEquals(60, doGets(60, tables));
}
 
源代码9 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testTableExistsGetThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();

  // Add throttle quota
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0], ThrottleType.REQUEST_NUMBER,
    100, TimeUnit.MINUTES));
  triggerTableCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  Table table = TEST_UTIL.getConnection().getTable(TABLE_NAMES[0]);
  // An exists call when having throttle quota
  table.exists(new Get(Bytes.toBytes("abc")));

  admin.setQuota(QuotaSettingsFactory.unthrottleTable(TABLE_NAMES[0]));
  triggerTableCacheRefresh(TEST_UTIL, true, TABLE_NAMES[0]);
}
 
源代码10 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testTableGlobalThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();

  // Add 6req/min limit
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0], ThrottleType.REQUEST_NUMBER,
    6, TimeUnit.MINUTES));
  triggerTableCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  // should execute at max 6 requests
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));
  // should have no limits
  assertEquals(30, doPuts(30, FAMILY, QUALIFIER, tables[1]));

  // wait a minute and you should get other 6 requests executed
  waitMinuteQuota();
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));

  // Remove all the limits
  admin.setQuota(QuotaSettingsFactory.unthrottleTable(TABLE_NAMES[0]));
  triggerTableCacheRefresh(TEST_UTIL, true, TABLE_NAMES[0]);
  assertEquals(80, doGets(80, tables[0], tables[1]));
}
 
源代码11 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testNameSpaceUnThrottleByType() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();
  // Add 6req/min limit
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(NAMESPACES[0],
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(NAMESPACES[0], ThrottleType.REQUEST_SIZE,
    6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(NAMESPACES[1],
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(NAMESPACES[1], ThrottleType.REQUEST_SIZE,
    6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.unthrottleNamespaceByThrottleType(NAMESPACES[0],
    ThrottleType.REQUEST_NUMBER));
  assertEquals(3, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleNamespaceByThrottleType(NAMESPACES[0],
    ThrottleType.REQUEST_SIZE));
  assertEquals(2, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACES[1]));
  assertEquals(0, getQuotaSettingCount(admin));
}
 
源代码12 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testUserTableUnThrottleByType() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();
  String userName01 = "user01";
  // Add 6req/min limit
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, TABLE_NAMES[0],
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, TABLE_NAMES[0],
    ThrottleType.REQUEST_SIZE, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName01, TABLE_NAMES[1],
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName01, TABLE_NAMES[1],
    ThrottleType.REQUEST_SIZE, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.unthrottleUserByThrottleType(userName, TABLE_NAMES[0],
    ThrottleType.REQUEST_NUMBER));
  assertEquals(3, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleUserByThrottleType(userName, TABLE_NAMES[0],
    ThrottleType.REQUEST_SIZE));
  assertEquals(2, getQuotaSettingCount(admin));
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName01));
  assertEquals(0, getQuotaSettingCount(admin));
}
 
源代码13 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testTableReadCapacityUnitThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();

  // Add 6CU/min limit
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0],
    ThrottleType.READ_CAPACITY_UNIT, 6, TimeUnit.MINUTES));
  triggerTableCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  assertEquals(20, doPuts(20, 10, FAMILY, QUALIFIER, tables[0]));
  // should execute at max 6 capacity units because each get size is 1 capacity unit
  assertEquals(6, doGets(20, tables[0]));

  assertEquals(20, doPuts(20, 2015, FAMILY, QUALIFIER, tables[0]));
  // wait a minute and you should execute at max 3 capacity units because each get size is 2
  // capacity unit on tables[0]
  waitMinuteQuota();
  assertEquals(3, doGets(20, tables[0]));

  admin.setQuota(QuotaSettingsFactory.unthrottleTable(TABLE_NAMES[0]));
  triggerTableCacheRefresh(TEST_UTIL, true, TABLE_NAMES[0]);
}
 
源代码14 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testUserTableReadAndWriteThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();

  // Add 6req/min limit for write request on tables[0]
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, TABLE_NAMES[0],
    ThrottleType.WRITE_NUMBER, 6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  // should execute at max 6 write requests and have no limit for read request
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));
  assertEquals(60, doGets(60, tables[0]));

  // no limit on tables[1]
  assertEquals(60, doPuts(60, FAMILY, QUALIFIER, tables[1]));
  assertEquals(60, doGets(60, tables[1]));

  // wait a minute and you should get other 6 write requests executed
  waitMinuteQuota();

  // Add 6req/min limit for read request on tables[0]
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, TABLE_NAMES[0],
    ThrottleType.READ_NUMBER, 6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);

  // should execute at max 6 read requests and at max 6 write requests
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));
  assertEquals(6, doGets(60, tables[0]));

  // no limit on tables[1]
  assertEquals(30, doPuts(30, FAMILY, QUALIFIER, tables[1]));
  assertEquals(30, doGets(30, tables[1]));

  // Remove all the limits
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName, TABLE_NAMES[0]));
  triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAMES);
  assertEquals(60, doPuts(60, FAMILY, QUALIFIER, tables));
  assertEquals(60, doGets(60, tables));
}
 
源代码15 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testSetModifyRemoveRPCQuota() throws Exception {
  Admin admin = TEST_UTIL.getAdmin();
  final TableName tn = TableName.valueOf("sq_table1");
  QuotaSettings settings =
      QuotaSettingsFactory.throttleTable(tn, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS);
  admin.setQuota(settings);

  // Verify the Quota in the table
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS);

  // Verify we can retrieve it via the QuotaRetriever API
  verifyFetchableViaAPI(admin, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS);

  // Setting a limit and time unit should be reflected
  QuotaSettings newSettings =
      QuotaSettingsFactory.throttleTable(tn, ThrottleType.REQUEST_SIZE, 3L, TimeUnit.DAYS);
  admin.setQuota(newSettings);

  // Verify the new Quota in the table
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_SIZE, 3L, TimeUnit.DAYS);

  // Verify we can retrieve the new quota via the QuotaRetriever API
  verifyFetchableViaAPI(admin, ThrottleType.REQUEST_SIZE, 3L, TimeUnit.DAYS);

  // Now, remove the quota
  QuotaSettings removeQuota = QuotaSettingsFactory.unthrottleTable(tn);
  admin.setQuota(removeQuota);

  // Verify that the record doesn't exist in the table
  verifyRecordNotPresentInQuotaTable();

  // Verify that we can also not fetch it via the API
  verifyNotFetchableViaAPI(admin);

}
 
源代码16 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testSimpleScan() throws Exception {
  Admin admin = TEST_UTIL.getAdmin();
  String userName = User.getCurrent().getShortName();

  admin.setQuota(QuotaSettingsFactory
    .throttleUser(userName, ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.bypassGlobals(userName, true));

  try (QuotaRetriever scanner = QuotaRetriever.open(TEST_UTIL.getConfiguration())) {
    int countThrottle = 0;
    int countGlobalBypass = 0;
    for (QuotaSettings settings: scanner) {
      LOG.debug(Objects.toString(settings));
      switch (settings.getQuotaType()) {
        case THROTTLE:
          ThrottleSettings throttle = (ThrottleSettings)settings;
          assertEquals(userName, throttle.getUserName());
          assertEquals(null, throttle.getTableName());
          assertEquals(null, throttle.getNamespace());
          assertEquals(null, throttle.getRegionServer());
          assertEquals(6, throttle.getSoftLimit());
          assertEquals(TimeUnit.MINUTES, throttle.getTimeUnit());
          countThrottle++;
          break;
        case GLOBAL_BYPASS:
          countGlobalBypass++;
          break;
        default:
          fail("unexpected settings type: " + settings.getQuotaType());
      }
    }
    assertEquals(1, countThrottle);
    assertEquals(1, countGlobalBypass);
  }

  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName));
  assertNumResults(1, null);
  admin.setQuota(QuotaSettingsFactory.bypassGlobals(userName, false));
  assertNumResults(0, null);
}
 
源代码17 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testThrottleType() throws Exception {
  Admin admin = TEST_UTIL.getAdmin();
  String userName = User.getCurrent().getShortName();

  admin.setQuota(
      QuotaSettingsFactory.throttleUser(userName, ThrottleType.READ_NUMBER, 6, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory
      .throttleUser(userName, ThrottleType.WRITE_NUMBER, 12, TimeUnit.MINUTES));
  admin.setQuota(QuotaSettingsFactory.bypassGlobals(userName, true));

  try (QuotaRetriever scanner = QuotaRetriever.open(TEST_UTIL.getConfiguration())) {
    int countThrottle = 0;
    int countGlobalBypass = 0;
    for (QuotaSettings settings: scanner) {
      switch (settings.getQuotaType()) {
        case THROTTLE:
          ThrottleSettings throttle = (ThrottleSettings)settings;
          if (throttle.getSoftLimit() == 6) {
            assertEquals(ThrottleType.READ_NUMBER, throttle.getThrottleType());
          } else if (throttle.getSoftLimit() == 12) {
            assertEquals(ThrottleType.WRITE_NUMBER, throttle.getThrottleType());
          } else {
            fail("should not come here, because don't set quota with this limit");
          }
          assertEquals(userName, throttle.getUserName());
          assertEquals(null, throttle.getTableName());
          assertEquals(null, throttle.getNamespace());
          assertEquals(TimeUnit.MINUTES, throttle.getTimeUnit());
          countThrottle++;
          break;
        case GLOBAL_BYPASS:
          countGlobalBypass++;
          break;
        default:
          fail("unexpected settings type: " + settings.getQuotaType());
      }
    }
    assertEquals(2, countThrottle);
    assertEquals(1, countGlobalBypass);
  }

  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName));
  assertNumResults(1, null);
  admin.setQuota(QuotaSettingsFactory.bypassGlobals(userName, false));
  assertNumResults(0, null);
}
 
源代码18 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testSetAndRemoveRegionServerQuota() throws Exception {
  Admin admin = TEST_UTIL.getAdmin();
  String regionServer = QuotaTableUtil.QUOTA_REGION_SERVER_ROW_KEY;
  QuotaFilter rsFilter = new QuotaFilter().setRegionServerFilter(regionServer);

  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(regionServer,
    ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES));
  assertNumResults(1, rsFilter);
  // Verify the Quota in the table
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES);

  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(regionServer,
    ThrottleType.REQUEST_NUMBER, 20, TimeUnit.MINUTES));
  assertNumResults(1, rsFilter);
  // Verify the Quota in the table
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 20, TimeUnit.MINUTES);

  admin.setQuota(QuotaSettingsFactory.throttleRegionServer(regionServer, ThrottleType.READ_NUMBER,
    30, TimeUnit.SECONDS));
  int count = 0;
  QuotaRetriever scanner = QuotaRetriever.open(TEST_UTIL.getConfiguration(), rsFilter);
  try {
    for (QuotaSettings settings : scanner) {
      assertTrue(settings.getQuotaType() == QuotaType.THROTTLE);
      ThrottleSettings throttleSettings = (ThrottleSettings) settings;
      assertEquals(regionServer, throttleSettings.getRegionServer());
      count++;
      if (throttleSettings.getThrottleType() == ThrottleType.REQUEST_NUMBER) {
        assertEquals(20, throttleSettings.getSoftLimit());
        assertEquals(TimeUnit.MINUTES, throttleSettings.getTimeUnit());
      } else if (throttleSettings.getThrottleType() == ThrottleType.READ_NUMBER) {
        assertEquals(30, throttleSettings.getSoftLimit());
        assertEquals(TimeUnit.SECONDS, throttleSettings.getTimeUnit());
      }
    }
  } finally {
    scanner.close();
  }
  assertEquals(2, count);

  admin.setQuota(QuotaSettingsFactory.unthrottleRegionServer(regionServer));
  assertNumResults(0, new QuotaFilter().setRegionServerFilter(regionServer));
}
 
源代码19 项目: hbase   文件: TestQuotaThrottle.java
@Test
public void testUserGlobalBypassThrottle() throws Exception {
  final Admin admin = TEST_UTIL.getAdmin();
  final String userName = User.getCurrent().getShortName();
  final String NAMESPACE = "default";

  // Add 6req/min limit for tables[0]
  admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0], ThrottleType.REQUEST_NUMBER,
    6, TimeUnit.MINUTES));
  triggerTableCacheRefresh(TEST_UTIL, false, TABLE_NAMES[0]);
  // Add 13req/min limit for the user
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER,
    13, TimeUnit.MINUTES));
  triggerNamespaceCacheRefresh(TEST_UTIL, false, TABLE_NAMES[1]);

  // should execute at max 6 requests on table[0] and (13 - 6) on table[1]
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));
  assertEquals(7, doGets(100, tables[1]));
  waitMinuteQuota();

  // Set the global bypass for the user
  admin.setQuota(QuotaSettingsFactory.bypassGlobals(userName, true));
  admin.setQuota(QuotaSettingsFactory.throttleUser(userName, TABLE_NAMES[2],
    ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES));
  triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAMES[2]);
  assertEquals(30, doGets(30, tables[0]));
  assertEquals(30, doGets(30, tables[1]));
  waitMinuteQuota();

  // Remove the global bypass
  // should execute at max 6 requests on table[0] and (13 - 6) on table[1]
  admin.setQuota(QuotaSettingsFactory.bypassGlobals(userName, false));
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(userName, TABLE_NAMES[2]));
  triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAMES[2]);
  assertEquals(6, doPuts(100, FAMILY, QUALIFIER, tables[0]));
  assertEquals(7, doGets(100, tables[1]));

  // unset throttle
  admin.setQuota(QuotaSettingsFactory.unthrottleTable(TABLE_NAMES[0]));
  admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE));
  waitMinuteQuota();
  triggerTableCacheRefresh(TEST_UTIL, true, TABLE_NAMES[0]);
  triggerNamespaceCacheRefresh(TEST_UTIL, true, TABLE_NAMES[1]);
  assertEquals(30, doGets(30, tables[0]));
  assertEquals(30, doGets(30, tables[1]));
}
 
源代码20 项目: hbase   文件: TestQuotaAdmin.java
@Test
public void testQuotaScope() throws Exception {
  Admin admin = TEST_UTIL.getAdmin();
  String user = "user1";
  String namespace = "testQuotaScope_ns";
  TableName tableName = TableName.valueOf("testQuotaScope");
  QuotaFilter filter = new QuotaFilter();

  // set CLUSTER quota scope for namespace
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(namespace, ThrottleType.REQUEST_NUMBER,
    10, TimeUnit.MINUTES, QuotaScope.CLUSTER));
  assertNumResults(1, filter);
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES,
    QuotaScope.CLUSTER);
  admin.setQuota(QuotaSettingsFactory.throttleNamespace(namespace, ThrottleType.REQUEST_NUMBER,
    10, TimeUnit.MINUTES, QuotaScope.MACHINE));
  assertNumResults(1, filter);
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES,
    QuotaScope.MACHINE);
  admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(namespace));
  assertNumResults(0, filter);

  // set CLUSTER quota scope for table
  admin.setQuota(QuotaSettingsFactory.throttleTable(tableName, ThrottleType.REQUEST_NUMBER, 10,
    TimeUnit.MINUTES, QuotaScope.CLUSTER));
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES,
    QuotaScope.CLUSTER);
  admin.setQuota(QuotaSettingsFactory.unthrottleTable(tableName));

  // set CLUSTER quota scope for user
  admin.setQuota(QuotaSettingsFactory.throttleUser(user, ThrottleType.REQUEST_NUMBER, 10,
    TimeUnit.MINUTES, QuotaScope.CLUSTER));
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES,
    QuotaScope.CLUSTER);
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(user));

    // set CLUSTER quota scope for user and table
  admin.setQuota(QuotaSettingsFactory.throttleUser(user, tableName, ThrottleType.REQUEST_NUMBER,
    10, TimeUnit.MINUTES, QuotaScope.CLUSTER));
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES,
    QuotaScope.CLUSTER);
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(user));

    // set CLUSTER quota scope for user and namespace
  admin.setQuota(QuotaSettingsFactory.throttleUser(user, namespace, ThrottleType.REQUEST_NUMBER,
    10, TimeUnit.MINUTES, QuotaScope.CLUSTER));
  verifyRecordPresentInQuotaTable(ThrottleType.REQUEST_NUMBER, 10, TimeUnit.MINUTES,
    QuotaScope.CLUSTER);
  admin.setQuota(QuotaSettingsFactory.unthrottleUser(user));
}