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 <[email protected]>
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;