Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#3906] improvement(hive-catalog): Add user authentication IT for multiple HMS #3907

Merged
merged 13 commits into from
Aug 1, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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());

Expand Down Expand Up @@ -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");
Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
}
Loading