From f4c8591b4698b52d2337a561629fa5dea4546475 Mon Sep 17 00:00:00 2001 From: Hongyi Luo Date: Sun, 5 Oct 2025 13:15:19 +0800 Subject: [PATCH] test: make hive testdeleteschema deterministic (schema lifecycle) --- .../apache/gora/hive/store/TestHiveStore.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gora-hive/src/test/java/org/apache/gora/hive/store/TestHiveStore.java b/gora-hive/src/test/java/org/apache/gora/hive/store/TestHiveStore.java index 003d8ec7..cac49701 100644 --- a/gora-hive/src/test/java/org/apache/gora/hive/store/TestHiveStore.java +++ b/gora-hive/src/test/java/org/apache/gora/hive/store/TestHiveStore.java @@ -30,12 +30,14 @@ import org.apache.gora.examples.generated.WebPage; import org.apache.gora.hive.GoraHiveTestDriver; import org.apache.gora.persistency.impl.BeanFactoryImpl; +import org.apache.gora.store.DataStore; import org.apache.gora.store.DataStoreTestBase; import org.apache.gora.store.DataStoreTestUtil; import org.apache.gora.util.GoraException; import org.apache.gora.util.StringUtils; import org.junit.Ignore; import org.junit.Test; +import java.util.concurrent.TimeUnit; /** * HiveStore Tests extending {@link DataStoreTestBase} which run the base JUnit test suite for @@ -152,6 +154,37 @@ public void testUpdate() throws Exception { //Hive test server doesn't support deleting and updating entries } + @Override + public void testDeleteSchema() throws Exception { + log.info("test method: testDeleteSchema"); + final long waitMs = TimeUnit.SECONDS.toMillis(10); + + webPageStore.createSchema(); + awaitSchemaState(webPageStore, true, waitMs); + + webPageStore.deleteSchema(); + awaitSchemaState(webPageStore, false, waitMs); + + webPageStore.createSchema(); + awaitSchemaState(webPageStore, true, waitMs); + } + + private void awaitSchemaState(DataStore store, boolean shouldExist, long timeoutMs) throws Exception { + long deadline = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(timeoutMs); + while (System.nanoTime() < deadline) { + if (shouldExist) { + store.createSchema(); + } else { + store.deleteSchema(); + } + boolean exists = store.schemaExists(); + if (exists == shouldExist) return; + Thread.sleep(100); + } + String msg = shouldExist ? "schema not visible after create" : "schema still exists after delete"; + assertTrue(msg, shouldExist == store.schemaExists()); + } + @Ignore("Hive datastore doesn't support recursive records") @Override public void testGetRecursive() throws Exception {