diff --git a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/EnvironmentModule.java b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/EnvironmentModule.java index 5d8918b0160a..216c28f165f3 100644 --- a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/EnvironmentModule.java +++ b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/EnvironmentModule.java @@ -21,6 +21,7 @@ import io.trino.tests.product.launcher.env.common.Hadoop; import io.trino.tests.product.launcher.env.common.HadoopKerberos; import io.trino.tests.product.launcher.env.common.HadoopKerberosKms; +import io.trino.tests.product.launcher.env.common.HadoopKerberosKmsWithImpersonation; import io.trino.tests.product.launcher.env.common.HydraIdentityProvider; import io.trino.tests.product.launcher.env.common.Kafka; import io.trino.tests.product.launcher.env.common.KafkaSaslPlaintext; @@ -68,6 +69,7 @@ public void configure(Binder binder) binder.bind(Hadoop.class).in(SINGLETON); binder.bind(HadoopKerberos.class).in(SINGLETON); binder.bind(HadoopKerberosKms.class).in(SINGLETON); + binder.bind(HadoopKerberosKmsWithImpersonation.class).in(SINGLETON); binder.bind(HydraIdentityProvider.class).in(SINGLETON); binder.bind(Kafka.class).in(SINGLETON); binder.bind(KafkaSsl.class).in(SINGLETON); diff --git a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKms.java b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKms.java index 1e274dd73c1b..1293adc567aa 100644 --- a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKms.java +++ b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKms.java @@ -59,7 +59,10 @@ public void extendEnvironment(Environment.Builder builder) .withCopyFileToContainer(forHostPath(configDir.getPath("kms-core-site.xml")), "/etc/hadoop-kms/conf/core-site.xml"); }); - builder.configureContainer(COORDINATOR, container -> container.setDockerImageName(dockerImageName)); + builder.configureContainer(COORDINATOR, + container -> container + .withCopyFileToContainer(forHostPath(configDir.getPath("hive-disable-key-provider-cache-site.xml")), "/etc/hadoop-kms/conf/hive-disable-key-provider-cache-site.xml") + .setDockerImageName(dockerImageName)); builder.configureContainer(TESTS, container -> { container.setDockerImageName(dockerImageName); diff --git a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKmsWithImpersonation.java b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKmsWithImpersonation.java new file mode 100644 index 000000000000..e68c7c205c2d --- /dev/null +++ b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/common/HadoopKerberosKmsWithImpersonation.java @@ -0,0 +1,59 @@ +/* + * Licensed 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 io.trino.tests.product.launcher.env.common; + +import com.google.common.collect.ImmutableList; +import io.trino.tests.product.launcher.docker.DockerFiles; +import io.trino.tests.product.launcher.docker.DockerFiles.ResourceProvider; +import io.trino.tests.product.launcher.env.Environment; + +import javax.inject.Inject; + +import java.util.List; + +import static io.trino.tests.product.launcher.env.EnvironmentContainers.HADOOP; +import static java.util.Objects.requireNonNull; +import static org.testcontainers.utility.MountableFile.forHostPath; + +public class HadoopKerberosKmsWithImpersonation + implements EnvironmentExtender +{ + private final ResourceProvider configDir; + private final HadoopKerberosKms hadoopKerberosKms; + + @Inject + public HadoopKerberosKmsWithImpersonation(DockerFiles dockerFiles, HadoopKerberosKms hadoopKerberosKms) + { + configDir = requireNonNull(dockerFiles, "dockerFiles is null").getDockerFilesHostDirectory("common/hadoop-kerberos-kms-with-impersonation"); + this.hadoopKerberosKms = requireNonNull(hadoopKerberosKms, "hadoopKerberosKms is null"); + } + + @Override + @SuppressWarnings("resource") + public void extendEnvironment(Environment.Builder builder) + { + builder.configureContainer( + HADOOP, + container -> + container + .withCopyFileToContainer(forHostPath(configDir.getPath("kms-acls.xml")), "/etc/hadoop-kms/conf/kms-acls.xml") + .withCopyFileToContainer(forHostPath(configDir.getPath("hiveserver2-site.xml")), "/etc/hive/conf/hiveserver2-site.xml")); + } + + @Override + public List getDependencies() + { + return ImmutableList.of(hadoopKerberosKms); + } +} diff --git a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/environment/EnvSinglenodeKerberosKmsHdfsImpersonation.java b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/environment/EnvSinglenodeKerberosKmsHdfsImpersonation.java index 9debc5f3044c..b8cc6074f811 100644 --- a/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/environment/EnvSinglenodeKerberosKmsHdfsImpersonation.java +++ b/testing/trino-product-tests-launcher/src/main/java/io/trino/tests/product/launcher/env/environment/EnvSinglenodeKerberosKmsHdfsImpersonation.java @@ -18,13 +18,12 @@ import io.trino.tests.product.launcher.docker.DockerFiles.ResourceProvider; import io.trino.tests.product.launcher.env.Environment; import io.trino.tests.product.launcher.env.EnvironmentProvider; -import io.trino.tests.product.launcher.env.common.HadoopKerberosKms; +import io.trino.tests.product.launcher.env.common.HadoopKerberosKmsWithImpersonation; import io.trino.tests.product.launcher.env.common.Standard; import io.trino.tests.product.launcher.env.common.TestsEnvironment; import javax.inject.Inject; -import static io.trino.tests.product.launcher.env.EnvironmentContainers.HADOOP; import static java.util.Objects.requireNonNull; import static org.testcontainers.utility.MountableFile.forHostPath; @@ -35,9 +34,9 @@ public final class EnvSinglenodeKerberosKmsHdfsImpersonation private final ResourceProvider configDir; @Inject - public EnvSinglenodeKerberosKmsHdfsImpersonation(DockerFiles dockerFiles, Standard standard, HadoopKerberosKms hadoopKerberosKms) + public EnvSinglenodeKerberosKmsHdfsImpersonation(DockerFiles dockerFiles, Standard standard, HadoopKerberosKmsWithImpersonation hadoopKerberosKmsWithImpersonation) { - super(ImmutableList.of(standard, hadoopKerberosKms)); + super(ImmutableList.of(standard, hadoopKerberosKmsWithImpersonation)); configDir = requireNonNull(dockerFiles, "dockerFiles is null").getDockerFilesHostDirectory("conf/environment/singlenode-kerberos-kms-hdfs-impersonation"); } @@ -45,11 +44,6 @@ public EnvSinglenodeKerberosKmsHdfsImpersonation(DockerFiles dockerFiles, Standa @SuppressWarnings("resource") public void extendEnvironment(Environment.Builder builder) { - builder.configureContainer(HADOOP, container -> { - container - .withCopyFileToContainer(forHostPath(configDir.getPath("kms-acls.xml")), "/etc/hadoop-kms/conf/kms-acls.xml") - .withCopyFileToContainer(forHostPath(configDir.getPath("hiveserver2-site.xml")), "/etc/hive/conf/hiveserver2-site.xml"); - }); builder.addConnector("hive", forHostPath(configDir.getPath("hive.properties"))); builder.addConnector("iceberg", forHostPath(configDir.getPath("iceberg.properties"))); } diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hiveserver2-site.xml b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/common/hadoop-kerberos-kms-with-impersonation/hiveserver2-site.xml similarity index 100% rename from testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hiveserver2-site.xml rename to testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/common/hadoop-kerberos-kms-with-impersonation/hiveserver2-site.xml diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/kms-acls.xml b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/common/hadoop-kerberos-kms-with-impersonation/kms-acls.xml similarity index 100% rename from testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/kms-acls.xml rename to testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/common/hadoop-kerberos-kms-with-impersonation/kms-acls.xml diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive-disable-key-provider-cache-site.xml b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/common/hadoop-kerberos-kms/hive-disable-key-provider-cache-site.xml similarity index 100% rename from testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive-disable-key-provider-cache-site.xml rename to testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/common/hadoop-kerberos-kms/hive-disable-key-provider-cache-site.xml diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive.properties b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive.properties index c49f51451ac7..4aa081bac104 100644 --- a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive.properties +++ b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive.properties @@ -21,4 +21,4 @@ hive.hdfs.trino.principal=presto-server/_HOST@LABS.TERADATA.COM hive.hdfs.trino.keytab=/etc/trino/conf/presto-server.keytab hive.fs.cache.max-size=10 hive.max-partitions-per-scan=100 -hive.config.resources=/etc/hadoop/conf/core-site.xml,/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive-disable-key-provider-cache-site.xml +hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop-kms/conf/hive-disable-key-provider-cache-site.xml diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/iceberg.properties b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/iceberg.properties index ff9220a16f59..a28673fe20ac 100644 --- a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/iceberg.properties +++ b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/iceberg.properties @@ -16,6 +16,6 @@ hive.hdfs.impersonation.enabled=true hive.hdfs.trino.principal=presto-server/_HOST@LABS.TERADATA.COM hive.hdfs.trino.keytab=/etc/trino/conf/presto-server.keytab hive.fs.cache.max-size=10 -hive.config.resources=/etc/hadoop/conf/core-site.xml,/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-impersonation/hive-disable-key-provider-cache-site.xml +hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop-kms/conf/hive-disable-key-provider-cache-site.xml iceberg.file-format=PARQUET diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive-disable-key-provider-cache-site.xml b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive-disable-key-provider-cache-site.xml deleted file mode 100644 index 9ab53d47ed43..000000000000 --- a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive-disable-key-provider-cache-site.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - dfs.client.key.provider.cache.expiry - - 0 - - diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive.properties b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive.properties index a4107d3aa471..e45c0efe7d96 100644 --- a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive.properties +++ b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive.properties @@ -17,4 +17,4 @@ hive.hdfs.trino.principal=presto-server/_HOST@LABS.TERADATA.COM hive.hdfs.trino.keytab=/etc/trino/conf/presto-server.keytab hive.fs.cache.max-size=10 hive.max-partitions-per-scan=100 -hive.config.resources=/etc/hadoop/conf/core-site.xml,/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive-disable-key-provider-cache-site.xml +hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop-kms/conf/hive-disable-key-provider-cache-site.xml diff --git a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/iceberg.properties b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/iceberg.properties index 05d9a05e5914..86b095744f94 100644 --- a/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/iceberg.properties +++ b/testing/trino-product-tests-launcher/src/main/resources/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/iceberg.properties @@ -11,6 +11,6 @@ hive.hdfs.impersonation.enabled=false hive.hdfs.trino.principal=presto-server/_HOST@LABS.TERADATA.COM hive.hdfs.trino.keytab=/etc/trino/conf/presto-server.keytab hive.fs.cache.max-size=10 -hive.config.resources=/etc/hadoop/conf/core-site.xml,/docker/presto-product-tests/conf/environment/singlenode-kerberos-kms-hdfs-no-impersonation/hive-disable-key-provider-cache-site.xml +hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop-kms/conf/hive-disable-key-provider-cache-site.xml iceberg.file-format=PARQUET