From 55aff4ceef73e93ad2efd5604f0f9d8580ff68ec Mon Sep 17 00:00:00 2001 From: Jonathan Albrecht Date: Thu, 11 May 2023 11:08:12 -0400 Subject: [PATCH] HBASE-27851 Fix TestListTablesByState which is silently failing due to a surefire bug (#5227) surefire version 3.0.0-M6 has a bug where tests end up being removed from the test results if they fail with a long exception message. See: https://issues.apache.org/jira/browse/SUREFIRE-2079 TestListTablesByState is currently failing due to an error. However, it is being missed because of the surefire bug. I found this while testing the final surfire 3.0.0 version which fixes the bug and the test then shows up as failing. Co-authored-by: Jonathan Albrecht Signed-off-by: Duo Zhang --- .../hbase/master/TestListTablesByState.java | 45 ++++++++++++------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestListTablesByState.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestListTablesByState.java index 91524ddd6b6..224939f7839 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestListTablesByState.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestListTablesByState.java @@ -21,12 +21,15 @@ import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.HBaseTestingUtil; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.TableDescriptor; import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.testclassification.MasterTests; import org.apache.hadoop.hbase.testclassification.MediumTests; +import org.apache.hadoop.hbase.util.Bytes; import org.junit.AfterClass; import org.junit.Assert; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; @@ -40,7 +43,12 @@ public class TestListTablesByState { private static HBaseTestingUtil UTIL; private static Admin ADMIN; - private final static int SLAVES = 1; + private static final int SLAVES = 1; + private static final byte[] COLUMN = Bytes.toBytes("cf"); + private static final TableName TABLE = TableName.valueOf("test"); + private static final TableDescriptor TABLE_DESC = TableDescriptorBuilder.newBuilder(TABLE) + .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(COLUMN).setMaxVersions(3).build()) + .build(); @BeforeClass public static void setUpBeforeClass() throws Exception { @@ -49,26 +57,33 @@ public class TestListTablesByState { ADMIN = UTIL.getAdmin(); } + @Before + public void before() throws Exception { + if (ADMIN.tableExists(TABLE)) { + if (ADMIN.isTableEnabled(TABLE)) { + ADMIN.disableTable(TABLE); + } + + ADMIN.deleteTable(TABLE); + } + } + @Test public void testListTableNamesByState() throws Exception { - TableName testTableName = TableName.valueOf("test"); - TableDescriptor testTableDesc = TableDescriptorBuilder.newBuilder(testTableName).build(); - ADMIN.createTable(testTableDesc); - ADMIN.disableTable(testTableName); - Assert.assertEquals(ADMIN.listTableNamesByState(false).get(0), testTableName); - ADMIN.enableTable(testTableName); - Assert.assertEquals(ADMIN.listTableNamesByState(true).get(0), testTableName); + ADMIN.createTable(TABLE_DESC); + ADMIN.disableTable(TABLE); + Assert.assertEquals(ADMIN.listTableNamesByState(false).get(0), TABLE); + ADMIN.enableTable(TABLE); + Assert.assertEquals(ADMIN.listTableNamesByState(true).get(0), TABLE); } @Test public void testListTableDescriptorByState() throws Exception { - TableName testTableName = TableName.valueOf("test"); - TableDescriptor testTableDesc = TableDescriptorBuilder.newBuilder(testTableName).build(); - ADMIN.createTable(testTableDesc); - ADMIN.disableTable(testTableName); - Assert.assertEquals(ADMIN.listTableDescriptorsByState(false).get(0), testTableDesc); - ADMIN.enableTable(testTableName); - Assert.assertEquals(ADMIN.listTableDescriptorsByState(true).get(0), testTableDesc); + ADMIN.createTable(TABLE_DESC); + ADMIN.disableTable(TABLE); + Assert.assertEquals(ADMIN.listTableDescriptorsByState(false).get(0).getTableName(), TABLE); + ADMIN.enableTable(TABLE); + Assert.assertEquals(ADMIN.listTableDescriptorsByState(true).get(0).getTableName(), TABLE); } @AfterClass