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;

Reply via email to