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 <jonathan.albrecht@ibm.com>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
This commit is contained in:
Jonathan Albrecht 2023-05-11 11:08:12 -04:00 committed by GitHub
parent 5cea8112fd
commit 55aff4ceef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 15 deletions

View File

@ -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