This is an automated email from the ASF dual-hosted git repository. liuxun pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push: new 92cf3c578 [#5881] test(authorization): Support Hive test container with SQL based authorization (#5882) 92cf3c578 is described below commit 92cf3c5782d25c89f4e0cc5e5ffb6b40d8901ccb Author: roryqi <ror...@apache.org> AuthorDate: Wed Dec 18 09:09:06 2024 +0800 [#5881] test(authorization): Support Hive test container with SQL based authorization (#5882) ### What changes were proposed in this pull request? Support Hive test container with SQL based auhtorization ### Why are the changes needed? Fix: #5881 ### Does this PR introduce _any_ user-facing change? Yes ### How was this patch tested? Just a test code. --- build.gradle.kts | 2 +- .../integration/test/container/ContainerSuite.java | 34 ++++++++++++++++++++++ .../integration/test/container/HiveContainer.java | 1 + 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 4ebeec804..5e93992e3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -174,7 +174,7 @@ allprojects { param.environment("PROJECT_VERSION", project.version) // Gravitino CI Docker image - param.environment("GRAVITINO_CI_HIVE_DOCKER_IMAGE", "apache/gravitino-ci:hive-0.1.16") + param.environment("GRAVITINO_CI_HIVE_DOCKER_IMAGE", "apache/gravitino-ci:hive-0.1.17") param.environment("GRAVITINO_CI_KERBEROS_HIVE_DOCKER_IMAGE", "apache/gravitino-ci:kerberos-hive-0.1.5") param.environment("GRAVITINO_CI_DORIS_DOCKER_IMAGE", "apache/gravitino-ci:doris-0.1.5") param.environment("GRAVITINO_CI_TRINO_DOCKER_IMAGE", "apache/gravitino-ci:trino-0.1.6") diff --git a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/ContainerSuite.java b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/ContainerSuite.java index 14398b4b2..5745cc6d0 100644 --- a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/ContainerSuite.java +++ b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/ContainerSuite.java @@ -65,6 +65,7 @@ public class ContainerSuite implements Closeable { private static volatile KafkaContainer kafkaContainer; private static volatile DorisContainer dorisContainer; private static volatile HiveContainer kerberosHiveContainer; + private static volatile HiveContainer sqlBaseHiveContainer; private static volatile MySQLContainer mySQLContainer; private static volatile MySQLContainer mySQLVersion5Container; @@ -231,6 +232,34 @@ public class ContainerSuite implements Closeable { } } + public void startSQLBaseAuthHiveContainer(Map<String, String> envVars) { + // If you want to enable SQL based authorization, you need both set the + // `ENABLE_SQL_BASE_AUTHORIZATION` environment. + if (envVars == null + || (!Objects.equals(envVars.get(HiveContainer.HIVE_RUNTIME_VERSION), HiveContainer.HIVE3)) + || (!envVars.containsKey(HiveContainer.ENABLE_SQL_BASE_AUTHORIZATION))) { + throw new IllegalArgumentException( + "Error environment variables for Hive SQL base authorization container"); + } + + if (sqlBaseHiveContainer == null) { + synchronized (ContainerSuite.class) { + if (sqlBaseHiveContainer == null) { + initIfNecessary(); + // Start Hive container + HiveContainer.Builder hiveBuilder = + HiveContainer.builder() + .withHostName("gravitino-ci-hive") + .withNetwork(network) + .withEnvVars(envVars); + HiveContainer container = closer.register(hiveBuilder.build()); + container.start(); + sqlBaseHiveContainer = container; + } + } + } + } + public void startTrinoContainer( String trinoConfDir, String trinoConnectorLibDir, @@ -509,6 +538,10 @@ public class ContainerSuite implements Closeable { return kerberosHiveContainer; } + public HiveContainer getSQLBaseAuthHiveContainer() { + return sqlBaseHiveContainer; + } + public DorisContainer getDorisContainer() { return dorisContainer; } @@ -673,6 +706,7 @@ public class ContainerSuite implements Closeable { kafkaContainer = null; dorisContainer = null; kerberosHiveContainer = null; + sqlBaseHiveContainer = null; pgContainerMap.clear(); } catch (Exception e) { LOG.error("Failed to close ContainerEnvironment", e); diff --git a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/HiveContainer.java b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/HiveContainer.java index c08094e7b..d152432c1 100644 --- a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/HiveContainer.java +++ b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/HiveContainer.java @@ -49,6 +49,7 @@ public class HiveContainer extends BaseContainer { public static final String HIVE_RUNTIME_VERSION = "HIVE_RUNTIME_VERSION"; public static final String HIVE2 = "hive2"; // The Hive container default version public static final String HIVE3 = "hive3"; + public static final String ENABLE_SQL_BASE_AUTHORIZATION = "ENABLE_SQL_BASE_AUTHORIZATION"; private static final int MYSQL_PORT = 3306; public static final int HDFS_DEFAULTFS_PORT = 9000; public static final int HIVE_METASTORE_PORT = 9083;