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 9aa6d2aa114..a4d982e30b8 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 void testUserAuthentication() { .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 void testUserAuthentication() { 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 00000000000..4a6b54816da --- /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(); + } +}