This is an automated email from the ASF dual-hosted git repository.

yuqi4733 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 d3234febb [#3906] improvement(hive-catalog): Add user authentication 
IT for multiple HMS (#3907)
d3234febb is described below

commit d3234febbdcc2d0525e6984f908ad9597443430b
Author: Qi Yu <[email protected]>
AuthorDate: Thu Aug 1 11:29:09 2024 +0800

    [#3906] improvement(hive-catalog): Add user authentication IT for multiple 
HMS (#3907)
    
    ### What changes were proposed in this pull request?
    
    Add IT about user authentication for Hive catalog with Kerberos enabled.
    
    ### Why are the changes needed?
    
    To cover more usage cases.
    
    Fix: #3906
    
    ### Does this PR introduce _any_ user-facing change?
    
    N/A.
    
    ### How was this patch tested?
    
    N/A
---
 .../integration/test/HiveUserAuthenticationIT.java | 22 +++++-----
 .../test/MultipleHMSUserAuthenticationIT.java      | 51 ++++++++++++++++++++++
 2 files changed, 63 insertions(+), 10 deletions(-)

diff --git 
a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/HiveUserAuthenticationIT.java
 
b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/HiveUserAuthenticationIT.java
index 9aa6d2aa1..a4d982e30 100644
--- 
a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/HiveUserAuthenticationIT.java
+++ 
b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/HiveUserAuthenticationIT.java
@@ -82,16 +82,16 @@ public class HiveUserAuthenticationIT extends AbstractIT {
 
   private static String TMP_DIR;
 
-  private static String HIVE_METASTORE_URI;
+  protected static String HIVE_METASTORE_URI;
 
   private static GravitinoAdminClient adminClient;
 
-  private static HiveContainer kerberosHiveContainer;
+  protected static HiveContainer kerberosHiveContainer;
 
-  private static final String METALAKE_NAME = 
GravitinoITUtils.genRandomName("test_metalake");
-  private static final String CATALOG_NAME = 
GravitinoITUtils.genRandomName("test_catalog");
-  private static final String SCHEMA_NAME = 
GravitinoITUtils.genRandomName("test_schema");
-  private static final String TABLE_NAME = 
GravitinoITUtils.genRandomName("test_table");
+  static String METALAKE_NAME = 
GravitinoITUtils.genRandomName("test_metalake");
+  static String CATALOG_NAME = GravitinoITUtils.genRandomName("test_catalog");
+  static String SCHEMA_NAME = GravitinoITUtils.genRandomName("test_schema");
+  static String TABLE_NAME = GravitinoITUtils.genRandomName("test_table");
 
   private static final String HIVE_COL_NAME1 = "col1";
   private static final String HIVE_COL_NAME2 = "col2";
@@ -206,10 +206,6 @@ public class HiveUserAuthenticationIT extends AbstractIT {
             .withKeyTabFile(new File(TMP_DIR + GRAVITINO_CLIENT_KEYTAB))
             .build();
     adminClient = 
GravitinoAdminClient.builder(serverUri).withKerberosAuth(provider).build();
-
-    GravitinoMetalake[] metalakes = adminClient.listMetalakes();
-    Assertions.assertEquals(0, metalakes.length);
-
     GravitinoMetalake gravitinoMetalake =
         adminClient.createMetalake(METALAKE_NAME, null, ImmutableMap.of());
 
@@ -278,6 +274,12 @@ public class HiveUserAuthenticationIT extends AbstractIT {
     Assertions.assertTrue(gravitinoMetalake.dropCatalog(CATALOG_NAME));
   }
 
+  @AfterAll
+  static void restoreFilePermission() {
+    kerberosHiveContainer.executeInContainer(
+        "hadoop", "fs", "-chmod", "-R", "755", "/user/hive/warehouse");
+  }
+
   private static Column[] createColumns() {
     Column col1 = Column.of(HIVE_COL_NAME1, Types.ByteType.get(), 
"col_1_comment");
     Column col2 = Column.of(HIVE_COL_NAME2, Types.DateType.get(), 
"col_2_comment");
diff --git 
a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/MultipleHMSUserAuthenticationIT.java
 
b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/MultipleHMSUserAuthenticationIT.java
new file mode 100644
index 000000000..4a6b54816
--- /dev/null
+++ 
b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/MultipleHMSUserAuthenticationIT.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.gravitino.catalog.hive.integration.test;
+
+import org.apache.gravitino.integration.test.container.HiveContainer;
+import org.apache.gravitino.integration.test.util.GravitinoITUtils;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+
+@Tag("gravitino-docker-test")
+public class MultipleHMSUserAuthenticationIT extends HiveUserAuthenticationIT {
+  @BeforeAll
+  static void setHiveURI() {
+    String ip = kerberosHiveContainer.getContainerIpAddress();
+    int oldHMSPort = HiveContainer.HIVE_METASTORE_PORT;
+
+    // About the value of `newAddedHMSPort`, please see the value 
`hive.metastore.port` in the
+    // dev/docker/kerberos-hive/hive-site1.xml
+    int newAddedHMSPort = 19083;
+    // Multiple HMS URIs, I put the new one first to test the new HMS URI 
first.
+    HIVE_METASTORE_URI =
+        String.format("thrift://%s:%d,thrift://%s:%d", ip, newAddedHMSPort, 
ip, oldHMSPort);
+  }
+
+  @Test
+  public void testUserAuthentication() {
+    METALAKE_NAME = GravitinoITUtils.genRandomName("test_metalake");
+    CATALOG_NAME = GravitinoITUtils.genRandomName("test_catalog");
+    SCHEMA_NAME = GravitinoITUtils.genRandomName("test_schema");
+    TABLE_NAME = GravitinoITUtils.genRandomName("test_table");
+    super.testUserAuthentication();
+  }
+}

Reply via email to