diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin3.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin3.java index c648db94aa..748200c4e0 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin3.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin3.java @@ -17,11 +17,6 @@ */ package org.apache.hadoop.hbase.client; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - import java.io.IOException; import java.util.List; import java.util.regex.Pattern; @@ -38,10 +33,14 @@ import org.apache.hadoop.hbase.testclassification.ClientTests; import org.apache.hadoop.hbase.testclassification.LargeTests; import org.apache.hadoop.hbase.util.Bytes; import org.junit.ClassRule; +import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.rules.ExpectedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; @Category({ LargeTests.class, ClientTests.class }) public class TestAdmin3 extends TestAdminBase { @@ -51,6 +50,9 @@ public class TestAdmin3 extends TestAdminBase { private static final Logger LOG = LoggerFactory.getLogger(TestAdmin3.class); + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void testDisableAndEnableTable() throws IOException { final byte[] row = Bytes.toBytes("row"); @@ -107,6 +109,18 @@ public class TestAdmin3 extends TestAdminBase { ht.close(); } + @Test + public void testDoubleDisableTable() throws Exception { + final TableName table = TableName.valueOf(name.getMethodName()); + TEST_UTIL.createTable(table, HConstants.CATALOG_FAMILY); + assertThat(ADMIN.tableExists(table), is(Boolean.TRUE)); + ADMIN.disableTable(table); + assertThat(ADMIN.isTableDisabled(table), is(Boolean.TRUE)); + + thrown.expect(TableNotEnabledException.class); + ADMIN.disableTable(table); + } + @Test public void testDisableAndEnableTables() throws IOException { final byte[] row = Bytes.toBytes("row"); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.java index 344beace42..9c7d17aecf 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.java @@ -19,15 +19,12 @@ package org.apache.hadoop.hbase.client; import static org.apache.hadoop.hbase.TableName.META_TABLE_NAME; import static org.hamcrest.CoreMatchers.instanceOf; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.concurrent.CompletionException; import java.util.concurrent.ExecutionException; import java.util.regex.Pattern; import org.apache.hadoop.hbase.AsyncMetaTableAccessor; @@ -35,13 +32,16 @@ import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.HRegionLocation; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.TableNotEnabledException; import org.apache.hadoop.hbase.client.TableDescriptorBuilder.ModifyableTableDescriptor; import org.apache.hadoop.hbase.testclassification.ClientTests; import org.apache.hadoop.hbase.testclassification.LargeTests; import org.apache.hadoop.hbase.util.Bytes; import org.junit.ClassRule; +import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -57,6 +57,9 @@ public class TestAsyncTableAdminApi3 extends TestAsyncAdminBase { public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestAsyncTableAdminApi3.class); + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void testTableExist() throws Exception { boolean exist; @@ -167,8 +170,8 @@ public class TestAsyncTableAdminApi3 extends TestAsyncAdminBase { table.get(get).get(); this.admin.disableTable(tableName).join(); - assertTrue("Table must be disabled.", TEST_UTIL.getHBaseCluster().getMaster() - .getTableStateManager().isTableState(tableName, TableState.State.DISABLED)); + assertTrue("Table must be disabled.", + TEST_UTIL.getHBaseCluster().getMaster().getTableStateManager().isTableState(tableName, TableState.State.DISABLED)); assertEquals(TableState.State.DISABLED, TestAsyncTableAdminApi.getStateFromMeta(tableName)); // Test that table is disabled @@ -189,8 +192,8 @@ public class TestAsyncTableAdminApi3 extends TestAsyncAdminBase { } assertTrue(ok); this.admin.enableTable(tableName).join(); - assertTrue("Table must be enabled.", TEST_UTIL.getHBaseCluster().getMaster() - .getTableStateManager().isTableState(tableName, TableState.State.ENABLED)); + assertTrue("Table must be enabled.", + TEST_UTIL.getHBaseCluster().getMaster().getTableStateManager().isTableState(tableName, TableState.State.ENABLED)); assertEquals(TableState.State.ENABLED, TestAsyncTableAdminApi.getStateFromMeta(tableName)); // Test that table is enabled @@ -210,6 +213,17 @@ public class TestAsyncTableAdminApi3 extends TestAsyncAdminBase { } } + @Test + public void testDoubleDisableTable() throws Exception { + createTableWithDefaultConf(tableName); + assertThat(admin.tableExists(tableName).join(), is(Boolean.TRUE)); + assertThat(admin.disableTable(tableName).join(), is(Boolean.TRUE)); + + thrown.expect(CompletionException.class); + thrown.expectCause(instanceOf(TableNotEnabledException.class)); + admin.disableTable(tableName).join(); + } + @Test public void testDisableAndEnableTables() throws Exception { final TableName tableName1 = TableName.valueOf(tableName.getNameAsString() + "1");