From faafcebea6b6ca888d54c3b9ecab71745c2fb4ed Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Wed, 12 Mar 2025 13:25:54 +0100 Subject: [PATCH 1/3] HDDS-12528. Create new module for S3 integration tests --- .../apache/ozone/test}/InputSubstream.java | 7 +- .../dev-support/findbugsExcludeFile.xml | 16 +++ hadoop-ozone/integration-test-s3/pom.xml | 81 +++++++++++ .../hadoop/ozone/s3/S3ClientFactory.java | 0 .../hadoop/ozone/s3/S3GatewayService.java | 0 .../ozone/s3/awssdk/S3SDKTestUtils.java | 2 +- .../s3/awssdk/v1/AbstractS3SDKV1Tests.java | 0 .../ozone/s3/awssdk/v1/TestS3SDKV1.java | 0 .../v1/TestS3SDKV1WithRatisStreaming.java | 0 .../s3/awssdk/v2/AbstractS3SDKV2Tests.java | 0 .../ozone/s3/awssdk/v2/TestS3SDKV2.java | 0 .../v2/TestS3SDKV2WithRatisStreaming.java | 0 .../src/test/resources/ozone-site.xml | 131 ++++++++++++++++++ hadoop-ozone/integration-test/pom.xml | 5 - hadoop-ozone/pom.xml | 7 + 15 files changed, 239 insertions(+), 10 deletions(-) rename {hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/utils => hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test}/InputSubstream.java (96%) create mode 100644 hadoop-ozone/integration-test-s3/dev-support/findbugsExcludeFile.xml create mode 100644 hadoop-ozone/integration-test-s3/pom.xml rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/S3ClientFactory.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/S3GatewayService.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java (98%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/AbstractS3SDKV1Tests.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1WithRatisStreaming.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2.java (100%) rename hadoop-ozone/{integration-test => integration-test-s3}/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2WithRatisStreaming.java (100%) create mode 100644 hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/utils/InputSubstream.java b/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/InputSubstream.java similarity index 96% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/utils/InputSubstream.java rename to hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/InputSubstream.java index e71689b9ac74..3c7b73aa9358 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/utils/InputSubstream.java +++ b/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/InputSubstream.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.hadoop.utils; +package org.apache.ozone.test; -import com.google.common.base.Preconditions; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Objects; /** * A filter input stream implementation that exposes a range of the underlying input stream. @@ -33,8 +33,7 @@ public class InputSubstream extends FilterInputStream { private long markedPosition = 0; public InputSubstream(InputStream in, long skip, long length) { - super(in); - Preconditions.checkNotNull(in); + super(Objects.requireNonNull(in, "in == null")); this.currentPosition = 0; this.requestedSkipOffset = skip; this.requestedLength = length; diff --git a/hadoop-ozone/integration-test-s3/dev-support/findbugsExcludeFile.xml b/hadoop-ozone/integration-test-s3/dev-support/findbugsExcludeFile.xml new file mode 100644 index 000000000000..ee5ed59808bf --- /dev/null +++ b/hadoop-ozone/integration-test-s3/dev-support/findbugsExcludeFile.xml @@ -0,0 +1,16 @@ + + + + diff --git a/hadoop-ozone/integration-test-s3/pom.xml b/hadoop-ozone/integration-test-s3/pom.xml new file mode 100644 index 000000000000..bdeef893e6c5 --- /dev/null +++ b/hadoop-ozone/integration-test-s3/pom.xml @@ -0,0 +1,81 @@ + + + + 4.0.0 + + org.apache.ozone + ozone + 2.1.0-SNAPSHOT + + ozone-integration-test-s3 + 2.1.0-SNAPSHOT + jar + Apache Ozone S3 Integration Tests + Apache Ozone Integration Tests with S3 Gateway + + + + com.amazonaws + aws-java-sdk-core + test + + + com.amazonaws + aws-java-sdk-s3 + test + + + org.apache.ozone + hdds-server-framework + test-jar + test + + + org.apache.ozone + ozone-mini-cluster + test + + + org.apache.ozone + ozone-s3gateway + test + + + software.amazon.awssdk + s3 + test + + + + + + + com.github.spotbugs + spotbugs-maven-plugin + + ${basedir}/dev-support/findbugsExcludeFile.xml + + + + org.apache.maven.plugins + maven-compiler-plugin + + none + + + + + + diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/S3ClientFactory.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/S3ClientFactory.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/S3ClientFactory.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/S3ClientFactory.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/S3GatewayService.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/S3GatewayService.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/S3GatewayService.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/S3GatewayService.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java similarity index 98% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java index 6703e4bbc477..33b7788e6960 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java +++ b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/S3SDKTestUtils.java @@ -23,7 +23,7 @@ import java.io.RandomAccessFile; import java.security.MessageDigest; import org.apache.commons.lang3.RandomUtils; -import org.apache.hadoop.utils.InputSubstream; +import org.apache.ozone.test.InputSubstream; /** * Utilities for S3 SDK tests. diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/AbstractS3SDKV1Tests.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/AbstractS3SDKV1Tests.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/AbstractS3SDKV1Tests.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/AbstractS3SDKV1Tests.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1WithRatisStreaming.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1WithRatisStreaming.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1WithRatisStreaming.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v1/TestS3SDKV1WithRatisStreaming.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2WithRatisStreaming.java b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2WithRatisStreaming.java similarity index 100% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2WithRatisStreaming.java rename to hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/TestS3SDKV2WithRatisStreaming.java diff --git a/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml b/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml new file mode 100644 index 000000000000..5ea2eb89dfa3 --- /dev/null +++ b/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml @@ -0,0 +1,131 @@ + + + + + + + + + + hdds.datanode.du.factory.classname + org.apache.hadoop.hdds.fs.MockSpaceUsageCheckFactory$None + + + + ozone.om.transport.class + org.apache.hadoop.ozone.om.protocolPB.Hadoop3OmTransportFactory + + + + ozone.om.s3.grpc.server_enabled + false + + + + hdds.container.ratis.num.write.chunk.threads.per.volume + 4 + + + + ozone.scm.handler.count.key + 20 + + + + ozone.om.handler.count.key + 20 + + + + hdds.container.ratis.datastream.enabled + true + + + + + hdds.heartbeat.interval + 1s + + + ozone.scm.heartbeat.thread.interval + 100ms + + + + ozone.scm.ratis.pipeline.limit + 3 + + + + ozone.scm.close.container.wait.duration + 1s + + + + ozone.om.snapshot.diff.job.default.wait.time + 1s + + + + hdds.container.ratis.log.appender.queue.byte-limit + + 32MB + + + ozone.om.ratis.log.appender.queue.byte-limit + 4MB + + + ozone.scm.ha.ratis.log.appender.queue.byte-limit + 4MB + + + + ozone.scm.chunk.size + 1MB + + + ozone.scm.block.size + 4MB + + + ozone.client.stream.buffer.flush.size + 1MB + + + ozone.client.stream.buffer.max.size + 2MB + + + ozone.client.stream.buffer.size + 1MB + + + ozone.client.datastream.buffer.flush.size + 4MB + + + ozone.client.datastream.min.packet.size + 256KB + + + ozone.client.datastream.window.size + 8MB + + + diff --git a/hadoop-ozone/integration-test/pom.xml b/hadoop-ozone/integration-test/pom.xml index bbd06127c645..ff899d4e0b99 100644 --- a/hadoop-ozone/integration-test/pom.xml +++ b/hadoop-ozone/integration-test/pom.xml @@ -286,11 +286,6 @@ ozone-mini-cluster test - - software.amazon.awssdk - s3 - test - diff --git a/hadoop-ozone/pom.xml b/hadoop-ozone/pom.xml index 69cfcf48205c..7298e26ec68d 100644 --- a/hadoop-ozone/pom.xml +++ b/hadoop-ozone/pom.xml @@ -35,6 +35,7 @@ httpfsgateway insight integration-test + integration-test-s3 interface-client interface-storage mini-cluster @@ -147,6 +148,12 @@ hdds-server-framework ${hdds.version} + + org.apache.ozone + hdds-server-framework + ${hdds.version} + test-jar + org.apache.ozone hdds-server-scm From 3721468ce1cc3e375c5982cf77287060d7ce4079 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Tue, 25 Mar 2025 08:30:30 +0100 Subject: [PATCH 2/3] handle new submodule in _mvn_unit_report.sh --- hadoop-ozone/dev-support/checks/_mvn_unit_report.sh | 4 ++-- hadoop-ozone/dev-support/checks/unit.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hadoop-ozone/dev-support/checks/_mvn_unit_report.sh b/hadoop-ozone/dev-support/checks/_mvn_unit_report.sh index 4d27d5072874..8136e6ea806c 100755 --- a/hadoop-ozone/dev-support/checks/_mvn_unit_report.sh +++ b/hadoop-ozone/dev-support/checks/_mvn_unit_report.sh @@ -38,7 +38,7 @@ cat ${failures} > "${tempfile}" leaks=${REPORT_DIR}/leaks.txt if [[ "${CHECK:-unit}" == "integration" ]]; then - find hadoop-ozone/integration-test -not -path '*/iteration*' -name '*-output.txt' -print0 \ + find hadoop-ozone/integration-test* -not -path '*/iteration*' -name '*-output.txt' -print0 \ | xargs -n1 -0 "grep" -l -E "not closed properly|was not shutdown properly" \ | awk -F/ '{sub("-output.txt",""); print $NF}' \ > "${leaks}" @@ -47,7 +47,7 @@ fi cluster=${REPORT_DIR}/cluster-startup-errors.txt if [[ "${CHECK:-unit}" == "integration" ]]; then - find hadoop-ozone/integration-test -not -path '*/iteration*' -name '*-output.txt' -print0 \ + find hadoop-ozone/integration-test* -not -path '*/iteration*' -name '*-output.txt' -print0 \ | xargs -n1 -0 "grep" -l -E "Unable to build MiniOzoneCluster" \ | awk -F/ '{sub("-output.txt",""); print $NF}' \ > "${cluster}" diff --git a/hadoop-ozone/dev-support/checks/unit.sh b/hadoop-ozone/dev-support/checks/unit.sh index 09f45795fefa..f4a0a834d1bc 100755 --- a/hadoop-ozone/dev-support/checks/unit.sh +++ b/hadoop-ozone/dev-support/checks/unit.sh @@ -17,5 +17,5 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" CHECK=unit source "${DIR}/junit.sh" \ - -pl \!:ozone-integration-test,\!:mini-chaos-tests \ + -pl \!:ozone-integration-test,\!:ozone-integration-test-s3,\!:mini-chaos-tests \ "$@" From c1a48b57a33753d3e2dc627d2efd1aa0f3eff7ee Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Tue, 25 Mar 2025 11:49:36 +0100 Subject: [PATCH 3/3] remove MockSpaceUsage, add used undeclared dependencies --- hadoop-ozone/integration-test-s3/pom.xml | 40 +++++++++++++++++++ .../src/test/resources/ozone-site.xml | 5 --- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/hadoop-ozone/integration-test-s3/pom.xml b/hadoop-ozone/integration-test-s3/pom.xml index bdeef893e6c5..b23d389ef80a 100644 --- a/hadoop-ozone/integration-test-s3/pom.xml +++ b/hadoop-ozone/integration-test-s3/pom.xml @@ -36,12 +36,42 @@ aws-java-sdk-s3 test + + jakarta.xml.bind + jakarta.xml.bind-api + test + + + org.apache.commons + commons-lang3 + test + + + org.apache.ozone + hdds-common + test + + + org.apache.ozone + hdds-config + test + org.apache.ozone hdds-server-framework + test + + + org.apache.ozone + hdds-test-utils test-jar test + + org.apache.ozone + ozone-client + test + org.apache.ozone ozone-mini-cluster @@ -52,6 +82,16 @@ ozone-s3gateway test + + org.apache.ratis + ratis-common + test + + + org.slf4j + slf4j-api + test + software.amazon.awssdk s3 diff --git a/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml b/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml index 5ea2eb89dfa3..2354b6f321cb 100644 --- a/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml +++ b/hadoop-ozone/integration-test-s3/src/test/resources/ozone-site.xml @@ -21,11 +21,6 @@ - - hdds.datanode.du.factory.classname - org.apache.hadoop.hdds.fs.MockSpaceUsageCheckFactory$None - - ozone.om.transport.class org.apache.hadoop.ozone.om.protocolPB.Hadoop3OmTransportFactory