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();
+ }
+}