You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by el...@apache.org on 2017/09/24 02:17:42 UTC
[3/4] hbase git commit: HBASE-18807 Remove protobuf references from
CP quota API calls
http://git-wip-us.apache.org/repos/asf/hbase/blob/15404831/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettings.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettings.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettings.java
new file mode 100644
index 0000000..c4213cb
--- /dev/null
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettings.java
@@ -0,0 +1,122 @@
+/*
+ * 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.hbase.quotas;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
+import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos;
+import org.apache.hadoop.hbase.testclassification.SmallTests;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category(SmallTests.class)
+public class TestGlobalQuotaSettings {
+
+ QuotaProtos.TimedQuota REQUEST_THROTTLE = QuotaProtos.TimedQuota.newBuilder()
+ .setScope(QuotaProtos.QuotaScope.MACHINE).setSoftLimit(100)
+ .setTimeUnit(HBaseProtos.TimeUnit.MINUTES).build();
+ QuotaProtos.Throttle THROTTLE = QuotaProtos.Throttle.newBuilder()
+ .setReqNum(REQUEST_THROTTLE).build();
+
+ QuotaProtos.SpaceQuota SPACE_QUOTA = QuotaProtos.SpaceQuota.newBuilder()
+ .setSoftLimit(1024L * 1024L).setViolationPolicy(QuotaProtos.SpaceViolationPolicy.NO_WRITES)
+ .build();
+
+ @Test
+ public void testMergeThrottle() throws IOException {
+ QuotaProtos.Quotas quota = QuotaProtos.Quotas.newBuilder()
+ .setThrottle(THROTTLE).build();
+ QuotaProtos.TimedQuota writeQuota = REQUEST_THROTTLE.toBuilder()
+ .setSoftLimit(500).build();
+ // Unset the req throttle, set a write throttle
+ QuotaProtos.ThrottleRequest writeThrottle = QuotaProtos.ThrottleRequest.newBuilder()
+ .setTimedQuota(writeQuota).setType(QuotaProtos.ThrottleType.WRITE_NUMBER).build();
+
+ GlobalQuotaSettings settings = new GlobalQuotaSettings("joe", null, null, quota);
+ GlobalQuotaSettings merged = settings.merge(
+ new ThrottleSettings("joe", null, null, writeThrottle));
+
+ QuotaProtos.Throttle mergedThrottle = merged.getThrottleProto();
+ // Verify the request throttle is in place
+ assertTrue(mergedThrottle.hasReqNum());
+ QuotaProtos.TimedQuota actualReqNum = mergedThrottle.getReqNum();
+ assertEquals(REQUEST_THROTTLE.getSoftLimit(), actualReqNum.getSoftLimit());
+
+ // Verify the write throttle is in place
+ assertTrue(mergedThrottle.hasWriteNum());
+ QuotaProtos.TimedQuota actualWriteNum = mergedThrottle.getWriteNum();
+ assertEquals(writeQuota.getSoftLimit(), actualWriteNum.getSoftLimit());
+ }
+
+ @Test
+ public void testMergeSpace() throws IOException {
+ TableName tn = TableName.valueOf("foo");
+ QuotaProtos.Quotas quota = QuotaProtos.Quotas.newBuilder()
+ .setSpace(SPACE_QUOTA).build();
+
+ GlobalQuotaSettings settings = new GlobalQuotaSettings(null, tn, null, quota);
+ // Switch the violation policy to DISABLE
+ GlobalQuotaSettings merged = settings.merge(
+ new SpaceLimitSettings(tn, SPACE_QUOTA.getSoftLimit(), SpaceViolationPolicy.DISABLE));
+
+ QuotaProtos.SpaceQuota mergedSpaceQuota = merged.getSpaceProto();
+ assertEquals(SPACE_QUOTA.getSoftLimit(), mergedSpaceQuota.getSoftLimit());
+ assertEquals(
+ QuotaProtos.SpaceViolationPolicy.DISABLE, mergedSpaceQuota.getViolationPolicy());
+ }
+
+ @Test
+ public void testMergeThrottleAndSpace() throws IOException {
+ final String ns = "org1";
+ QuotaProtos.Quotas quota = QuotaProtos.Quotas.newBuilder()
+ .setThrottle(THROTTLE).setSpace(SPACE_QUOTA).build();
+ GlobalQuotaSettings settings = new GlobalQuotaSettings(null, null, ns, quota);
+
+ QuotaProtos.TimedQuota writeQuota = REQUEST_THROTTLE.toBuilder()
+ .setSoftLimit(500).build();
+ // Add a write throttle
+ QuotaProtos.ThrottleRequest writeThrottle = QuotaProtos.ThrottleRequest.newBuilder()
+ .setTimedQuota(writeQuota).setType(QuotaProtos.ThrottleType.WRITE_NUMBER).build();
+
+ GlobalQuotaSettings merged = settings.merge(
+ new ThrottleSettings(null, null, ns, writeThrottle));
+ GlobalQuotaSettings finalQuota = merged.merge(new SpaceLimitSettings(
+ ns, SPACE_QUOTA.getSoftLimit(), SpaceViolationPolicy.NO_WRITES_COMPACTIONS));
+
+ // Verify both throttle quotas
+ QuotaProtos.Throttle throttle = finalQuota.getThrottleProto();
+ assertTrue(throttle.hasReqNum());
+ QuotaProtos.TimedQuota reqNumQuota = throttle.getReqNum();
+ assertEquals(REQUEST_THROTTLE.getSoftLimit(), reqNumQuota.getSoftLimit());
+
+ assertTrue(throttle.hasWriteNum());
+ QuotaProtos.TimedQuota writeNumQuota = throttle.getWriteNum();
+ assertEquals(writeQuota.getSoftLimit(), writeNumQuota.getSoftLimit());
+
+ // Verify space quota
+ QuotaProtos.SpaceQuota finalSpaceQuota = finalQuota.getSpaceProto();
+ assertEquals(SPACE_QUOTA.getSoftLimit(), finalSpaceQuota.getSoftLimit());
+ assertEquals(
+ QuotaProtos.SpaceViolationPolicy.NO_WRITES_COMPACTIONS,
+ finalSpaceQuota.getViolationPolicy());
+ }
+}
http://git-wip-us.apache.org/repos/asf/hbase/blob/15404831/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaAdmin.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaAdmin.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaAdmin.java
index b9f54ad..2a16739 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaAdmin.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaAdmin.java
@@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;
import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceLimitRequest;
import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -73,6 +74,14 @@ public class TestQuotaAdmin {
TEST_UTIL.waitTableAvailable(QuotaTableUtil.QUOTA_TABLE_NAME);
}
+ @After
+ public void clearQuotaTable() throws Exception {
+ if (TEST_UTIL.getAdmin().tableExists(QuotaUtil.QUOTA_TABLE_NAME)) {
+ TEST_UTIL.getAdmin().disableTable(QuotaUtil.QUOTA_TABLE_NAME);
+ TEST_UTIL.getAdmin().truncateTable(QuotaUtil.QUOTA_TABLE_NAME, false);
+ }
+ }
+
@AfterClass
public static void tearDownAfterClass() throws Exception {
TEST_UTIL.shutdownMiniCluster();
@@ -249,7 +258,7 @@ public class TestQuotaAdmin {
@Test
public void testSetGetRemoveSpaceQuota() throws Exception {
Admin admin = TEST_UTIL.getAdmin();
- final TableName tn = TableName.valueOf("table1");
+ final TableName tn = TableName.valueOf("sq_table1");
final long sizeLimit = 1024L * 1024L * 1024L * 1024L * 5L; // 5TB
final SpaceViolationPolicy violationPolicy = SpaceViolationPolicy.NO_WRITES;
QuotaSettings settings = QuotaSettingsFactory.limitTableSpace(tn, sizeLimit, violationPolicy);
@@ -302,7 +311,7 @@ public class TestQuotaAdmin {
@Test
public void testSetModifyRemoveQuota() throws Exception {
Admin admin = TEST_UTIL.getAdmin();
- final TableName tn = TableName.valueOf("table1");
+ final TableName tn = TableName.valueOf("sq_table2");
final long originalSizeLimit = 1024L * 1024L * 1024L * 1024L * 5L; // 5TB
final SpaceViolationPolicy violationPolicy = SpaceViolationPolicy.NO_WRITES;
QuotaSettings settings = QuotaSettingsFactory.limitTableSpace(
http://git-wip-us.apache.org/repos/asf/hbase/blob/15404831/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java
index 7a330fb..b1b2797 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java
@@ -514,12 +514,7 @@ public class TestQuotaThrottle {
}
count += tables.length;
}
- } catch (RetriesExhaustedWithDetailsException e) {
- for (Throwable t: e.getCauses()) {
- if (!(t instanceof ThrottlingException)) {
- throw e;
- }
- }
+ } catch (ThrottlingException e) {
LOG.error("put failed after nRetries=" + count, e);
}
return count;
http://git-wip-us.apache.org/repos/asf/hbase/blob/15404831/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java
index aab7ae4..0c072b8 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java
@@ -57,7 +57,6 @@ import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.master.MasterCoprocessorHost;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;
import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;
import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;
@@ -793,9 +792,8 @@ public class TestWithDisabledAuthorization extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
- Quotas quotas = Quotas.newBuilder().build();
ACCESS_CONTROLLER.preSetUserQuota(ObserverContext.createAndPrepare(CP_ENV, null),
- "testuser", quotas);
+ "testuser", null);
return null;
}
}, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);
@@ -804,9 +802,8 @@ public class TestWithDisabledAuthorization extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
- Quotas quotas = Quotas.newBuilder().build();
ACCESS_CONTROLLER.preSetTableQuota(ObserverContext.createAndPrepare(CP_ENV, null),
- TEST_TABLE.getTableName(), quotas);
+ TEST_TABLE.getTableName(), null);
return null;
}
}, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);
@@ -815,9 +812,8 @@ public class TestWithDisabledAuthorization extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
- Quotas quotas = Quotas.newBuilder().build();
ACCESS_CONTROLLER.preSetNamespaceQuota(ObserverContext.createAndPrepare(CP_ENV, null),
- "test", quotas);
+ "test", null);
return null;
}
}, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);