diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java index 464cd5601d..b86a09eab5 100644 --- a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java +++ b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java @@ -181,7 +181,8 @@ public void initialize() { tableRuntimeMeta.getTableId()); continue; } - List states = statesMap.get(tableRuntimeMeta.getTableId()); + List states = + statesMap.getOrDefault(tableRuntimeMeta.getTableId(), Collections.emptyList()); Optional tableRuntime = createTableRuntime(identifier, tableRuntimeMeta, states); if (!tableRuntime.isPresent()) { diff --git a/amoro-common/src/test/java/org/apache/amoro/formats/AmoroCatalogTestBase.java b/amoro-common/src/test/java/org/apache/amoro/formats/AmoroCatalogTestBase.java index 2027044348..d8a30b81ee 100644 --- a/amoro-common/src/test/java/org/apache/amoro/formats/AmoroCatalogTestBase.java +++ b/amoro-common/src/test/java/org/apache/amoro/formats/AmoroCatalogTestBase.java @@ -19,37 +19,25 @@ package org.apache.amoro.formats; import org.apache.amoro.AmoroCatalog; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.io.TempDir; -import java.io.IOException; +import java.io.File; public abstract class AmoroCatalogTestBase { - @Rule public TemporaryFolder temp = new TemporaryFolder(); - - protected AmoroCatalogTestHelper catalogTestHelper; + @TempDir protected File temp; protected AmoroCatalog amoroCatalog; protected Object originalCatalog; - public AmoroCatalogTestBase(AmoroCatalogTestHelper catalogTestHelper) { - this.catalogTestHelper = catalogTestHelper; - } - - @Before - public void setupCatalog() throws IOException { - String path = temp.newFolder().getPath(); - catalogTestHelper.initWarehouse(path); - this.amoroCatalog = catalogTestHelper.amoroCatalog(); - this.originalCatalog = catalogTestHelper.originalCatalog(); - } - - @After + @AfterEach public void cleanCatalog() { - catalogTestHelper.clean(); + if (catalogTestHelper != null) { + catalogTestHelper.clean(); + } } + + protected AmoroCatalogTestHelper catalogTestHelper; } diff --git a/amoro-common/src/test/java/org/apache/amoro/formats/TestAmoroCatalogBase.java b/amoro-common/src/test/java/org/apache/amoro/formats/TestAmoroCatalogBase.java index 5d295e9220..a9d28d3e3c 100644 --- a/amoro-common/src/test/java/org/apache/amoro/formats/TestAmoroCatalogBase.java +++ b/amoro-common/src/test/java/org/apache/amoro/formats/TestAmoroCatalogBase.java @@ -21,9 +21,10 @@ import org.apache.amoro.AmoroTable; import org.apache.amoro.shade.guava32.com.google.common.collect.Sets; import org.apache.amoro.table.TableIdentifier; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import java.io.IOException; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -37,8 +38,15 @@ public abstract class TestAmoroCatalogBase extends AmoroCatalogTestBase { private static final String TABLE = "table"; - public TestAmoroCatalogBase(AmoroCatalogTestHelper catalogTestHelper) { - super(catalogTestHelper); + protected AmoroCatalogTestHelper catalogTestHelper; + + @BeforeEach + public void setupCatalogHelper(AmoroCatalogTestHelper helper) throws IOException { + this.catalogTestHelper = helper; + String path = temp.getPath(); + catalogTestHelper.initWarehouse(path); + this.amoroCatalog = catalogTestHelper.amoroCatalog(); + this.originalCatalog = catalogTestHelper.originalCatalog(); } protected abstract void createDatabase(String dbName); @@ -48,55 +56,49 @@ protected abstract void createTable( protected abstract List listDatabases(); - @Test - public void testListDatabases() { + protected void testListDatabases() { createDatabase(DB1); createDatabase(DB2); createDatabase(DB3); HashSet databases = Sets.newHashSet(amoroCatalog.listDatabases()); - Assert.assertTrue(databases.contains(DB1)); - Assert.assertTrue(databases.contains(DB2)); - Assert.assertTrue(databases.contains(DB3)); + Assertions.assertTrue(databases.contains(DB1)); + Assertions.assertTrue(databases.contains(DB2)); + Assertions.assertTrue(databases.contains(DB3)); } - @Test - public void testDropDatabases() { + protected void testDropDatabases() { createDatabase(DB1); amoroCatalog.dropDatabase(DB1); - Assert.assertFalse(amoroCatalog.listDatabases().contains(DB1)); + Assertions.assertFalse(amoroCatalog.listDatabases().contains(DB1)); } - @Test - public void testCreateDatabases() { + protected void testCreateDatabases() { amoroCatalog.createDatabase(DB1); - Assert.assertTrue(listDatabases().contains(DB1)); + Assertions.assertTrue(listDatabases().contains(DB1)); } - @Test - public void testExistsDatabase() { + protected void testExistsDatabase() { createDatabase(DB1); - Assert.assertTrue(amoroCatalog.databaseExists(DB1)); + Assertions.assertTrue(amoroCatalog.databaseExists(DB1)); } - @Test - public void testExistsTable() { + protected void testExistsTable() { createDatabase(DB1); createTable(DB1, TABLE, new HashMap<>()); - Assert.assertTrue(amoroCatalog.tableExists(DB1, TABLE)); + Assertions.assertTrue(amoroCatalog.tableExists(DB1, TABLE)); } - @Test - public void testLoadTable() { + protected void testLoadTable() { createDatabase(DB1); Map properties = new HashMap<>(); properties.put("key1", "value1"); createTable(DB1, TABLE, properties); AmoroTable amoroTable = amoroCatalog.loadTable(DB1, TABLE); - Assert.assertEquals(amoroTable.properties().get("key1"), "value1"); - Assert.assertEquals( - amoroTable.name(), catalogTestHelper.catalogName() + "." + DB1 + "." + TABLE); - Assert.assertEquals( - amoroTable.id(), TableIdentifier.of(catalogTestHelper.catalogName(), DB1, TABLE)); + Assertions.assertEquals("value1", amoroTable.properties().get("key1")); + Assertions.assertEquals( + catalogTestHelper.catalogName() + "." + DB1 + "." + TABLE, amoroTable.name()); + Assertions.assertEquals( + TableIdentifier.of(catalogTestHelper.catalogName(), DB1, TABLE), amoroTable.id()); } } diff --git a/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestIcebergAmoroCatalog.java b/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestIcebergAmoroCatalog.java index 9dc3f99746..edfba1a3b2 100644 --- a/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestIcebergAmoroCatalog.java +++ b/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestIcebergAmoroCatalog.java @@ -26,23 +26,18 @@ import org.apache.iceberg.catalog.SupportsNamespaces; import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.types.Types; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; -@RunWith(Parameterized.class) public class TestIcebergAmoroCatalog extends TestAmoroCatalogBase { - public TestIcebergAmoroCatalog(AmoroCatalogTestHelper amoroCatalogTestHelper) { - super(amoroCatalogTestHelper); - } - - @Parameterized.Parameters(name = "{0}") - public static Object[] parameters() { - return new Object[] {IcebergHadoopCatalogTestHelper.defaultHelper()}; + static Stream> parameters() { + return Stream.of(IcebergHadoopCatalogTestHelper.defaultHelper()); } @Override @@ -79,4 +74,46 @@ protected List listDatabases() { private Catalog catalog() { return (Catalog) originalCatalog; } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testListDatabases(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testListDatabases(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testDropDatabases(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testDropDatabases(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testCreateDatabases(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testCreateDatabases(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testExistsDatabase(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testExistsDatabase(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testExistsTable(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testExistsTable(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testLoadTable(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testLoadTable(); + } } diff --git a/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestMixedIcebergFormatCatalog.java b/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestMixedIcebergFormatCatalog.java index 592a3eb03a..e2ff751cf4 100644 --- a/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestMixedIcebergFormatCatalog.java +++ b/amoro-format-iceberg/src/test/java/org/apache/amoro/formats/TestMixedIcebergFormatCatalog.java @@ -22,22 +22,17 @@ import org.apache.amoro.table.TableIdentifier; import org.apache.iceberg.Schema; import org.apache.iceberg.types.Types; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import java.util.List; import java.util.Map; +import java.util.stream.Stream; -@RunWith(Parameterized.class) public class TestMixedIcebergFormatCatalog extends TestAmoroCatalogBase { - public TestMixedIcebergFormatCatalog(AmoroCatalogTestHelper amoroCatalogTestHelper) { - super(amoroCatalogTestHelper); - } - - @Parameterized.Parameters(name = "{0}") - public static Object[] parameters() { - return new Object[] {MixedIcebergHadoopCatalogTestHelper.defaultHelper()}; + static Stream> parameters() { + return Stream.of(MixedIcebergHadoopCatalogTestHelper.defaultHelper()); } @Override @@ -65,4 +60,46 @@ protected List listDatabases() { private MixedFormatCatalog catalog() { return (MixedFormatCatalog) originalCatalog; } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testListDatabases(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testListDatabases(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testDropDatabases(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testDropDatabases(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testCreateDatabases(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testCreateDatabases(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testExistsDatabase(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testExistsDatabase(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testExistsTable(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testExistsTable(); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("parameters") + public void testLoadTable(AmoroCatalogTestHelper helper) throws Exception { + setupCatalogHelper(helper); + super.testLoadTable(); + } }