@Test public void testNamespaceGlobalReadAndWriteThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit for write request admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.WRITE_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and no limit for read request assertEquals(6, doPuts(100, tables[0])); assertEquals(100, doGets(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); // Add 6req/min limit for read request, too admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.READ_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and at max 6 read requests assertEquals(6, doPuts(100, tables[0])); assertEquals(6, doGets(100, tables[0])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
admin.setQuota(QuotaSettingsFactory.throttleNamespace(tn3.getNamespaceAsString(), ThrottleType.WRITE_NUMBER, 100, TimeUnit.SECONDS));
@Test public void testNamespaceGlobalThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 requests assertEquals(6, doPuts(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); assertEquals(6, doPuts(100, tables[1])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
@Test public void testNamespaceRPCQuotaRemoved() throws Exception { final Connection conn = TEST_UTIL.getConnection(); final Admin admin = conn.getAdmin(); final String ns = testName.getMethodName(); // Drop the ns if it somehow exists if (namespaceExists(ns)) { admin.deleteNamespace(ns); } // Create the ns NamespaceDescriptor desc = NamespaceDescriptor.create(ns).build(); admin.createNamespace(desc); assertEquals(0, getThrottleQuotas()); // Set a quota QuotaSettings settings = QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS); admin.setQuota(settings); assertEquals(1, getThrottleQuotas()); // Delete the namespace and observe the quota being automatically deleted as well admin.deleteNamespace(ns); assertEquals(0, getThrottleQuotas()); }
admin.setQuota(QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_NUMBER, 5, TimeUnit.MINUTES)).get();
QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS); admin.setQuota(settings); QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS); admin.setQuota(settings); assertEquals(1, getNumSpaceQuotas());
.throttleNamespace(ns, ThrottleType.REQUEST_NUMBER, 5, TimeUnit.MINUTES));
.throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER, 13, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[1]);
@Test public void testNamespaceGlobalReadAndWriteThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit for write request admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.WRITE_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and no limit for read request assertEquals(6, doPuts(100, tables[0])); assertEquals(100, doGets(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); // Add 6req/min limit for read request, too admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.READ_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and at max 6 read requests assertEquals(6, doPuts(100, tables[0])); assertEquals(6, doGets(100, tables[0])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
@Test public void testNamespaceGlobalThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 requests assertEquals(6, doPuts(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); assertEquals(6, doPuts(100, tables[1])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
@Test public void testNamespaceRPCQuotaRemoved() throws Exception { final Connection conn = TEST_UTIL.getConnection(); final Admin admin = conn.getAdmin(); final String ns = testName.getMethodName(); // Drop the ns if it somehow exists if (namespaceExists(ns)) { admin.deleteNamespace(ns); } // Create the ns NamespaceDescriptor desc = NamespaceDescriptor.create(ns).build(); admin.createNamespace(desc); assertEquals(0, getThrottleQuotas()); // Set a quota QuotaSettings settings = QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS); admin.setQuota(settings); assertEquals(1, getThrottleQuotas()); // Delete the namespace and observe the quota being automatically deleted as well admin.deleteNamespace(ns); assertEquals(0, getThrottleQuotas()); }
admin.setQuota(QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_NUMBER, 5, TimeUnit.MINUTES)).get();
@Test public void testNamespaceSpaceAndRPCQuotaRemoved() throws Exception { final Connection conn = TEST_UTIL.getConnection(); final Admin admin = conn.getAdmin(); final TableName tn = TableName.valueOf(testName.getMethodName()); final String ns = testName.getMethodName(); // Drop the ns if it somehow exists if (namespaceExists(ns)) { admin.deleteNamespace(ns); } // Create the ns NamespaceDescriptor desc = NamespaceDescriptor.create(ns).build(); admin.createNamespace(desc); assertEquals(0, getNumSpaceQuotas()); assertEquals(0, getThrottleQuotas()); // Set Both quotas QuotaSettings settings = QuotaSettingsFactory.limitNamespaceSpace(ns, 1024L, SpaceViolationPolicy.NO_INSERTS); admin.setQuota(settings); settings = QuotaSettingsFactory.throttleNamespace(ns, ThrottleType.REQUEST_SIZE, 2L, TimeUnit.HOURS); admin.setQuota(settings); assertEquals(1, getNumSpaceQuotas()); assertEquals(1, getThrottleQuotas()); // Delete the namespace and observe the quotas being automatically deleted as well admin.deleteNamespace(ns); assertEquals(0, getNumSpaceQuotas()); assertEquals(0, getThrottleQuotas()); }
.throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER, 13, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[1]);
.throttleNamespace(ns, ThrottleType.REQUEST_NUMBER, 5, TimeUnit.MINUTES));