From 43946ba9ecfd5cb46b701aa798ac75f3a47740cf Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Wed, 17 Dec 2025 11:53:28 +0100 Subject: [PATCH] HDDS-14197. Add utility for generating unique object name in tests --- .../org/apache/ozone/test/OzoneTestBase.java | 16 ++++++++++++++++ .../ozone/s3/awssdk/v1/AbstractS3SDKV1Tests.java | 9 ++++----- .../ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java | 9 ++++----- .../hadoop/fs/ozone/TestLeaseRecovery.java | 7 ++----- .../hadoop/ozone/om/TestBucketManagerImpl.java | 2 +- .../ozone/om/service/TestKeyDeletingService.java | 4 ---- 6 files changed, 27 insertions(+), 20 deletions(-) diff --git a/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/OzoneTestBase.java b/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/OzoneTestBase.java index 67446b27692a..93ded5dd880e 100644 --- a/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/OzoneTestBase.java +++ b/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/OzoneTestBase.java @@ -18,6 +18,9 @@ package org.apache.ozone.test; import java.lang.reflect.Method; +import java.util.Locale; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.TestInfo; @@ -27,6 +30,7 @@ */ public abstract class OzoneTestBase { + private static final AtomicInteger OBJECT_COUNTER = new AtomicInteger(); private TestInfo info; @BeforeEach @@ -40,4 +44,16 @@ protected String getTestName() { .orElse("unknown"); } + /** @return unique lowercase name of maximum 60 characters, including (some of) the current test's name */ + protected String uniqueObjectName() { + return uniqueObjectName(getTestName()); + } + + /** @return unique lowercase name of maximum 60 characters, including (some of) {@code prefix} */ + public static String uniqueObjectName(String prefix) { + return Objects.requireNonNull(prefix, "prefix == null") + .substring(0, Math.min(prefix.length(), 50)) + .toLowerCase(Locale.ROOT) + + String.format("%010d", OBJECT_COUNTER.getAndIncrement()); + } } diff --git a/hadoop-ozone/integration-test-s3/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 index 93fda7b26004..5e200e1350ae 100644 --- a/hadoop-ozone/integration-test-s3/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 @@ -94,7 +94,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -1424,16 +1423,16 @@ private String getBucketName() { return getBucketName(""); } - private String getBucketName(String suffix) { - return ("v1-" + getTestName() + "bucket" + suffix).toLowerCase(Locale.ROOT); + private String getBucketName(String ignored) { + return uniqueObjectName(); } private String getKeyName() { return getKeyName(""); } - private String getKeyName(String suffix) { - return (getTestName() + "key" + suffix).toLowerCase(Locale.ROOT); + private String getKeyName(String ignored) { + return uniqueObjectName(); } private String multipartUpload(String bucketName, String key, File file, long partSize, String contentType, diff --git a/hadoop-ozone/integration-test-s3/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 index 7bdc1778289e..09026dcb9182 100644 --- a/hadoop-ozone/integration-test-s3/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 @@ -47,7 +47,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; import javax.xml.bind.DatatypeConverter; @@ -1066,16 +1065,16 @@ private String getBucketName() { return getBucketName(""); } - private String getBucketName(String suffix) { - return ("v2-" + getTestName() + "bucket" + suffix).toLowerCase(Locale.ROOT); + private String getBucketName(String ignored) { + return uniqueObjectName(); } private String getKeyName() { return getKeyName(""); } - private String getKeyName(String suffix) { - return (getTestName() + "key" + suffix).toLowerCase(Locale.ROOT); + private String getKeyName(String ignored) { + return uniqueObjectName(); } private String multipartUpload(String bucketName, String key, File file, int partSize, diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestLeaseRecovery.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestLeaseRecovery.java index 800cc04f476a..061ced5bd93f 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestLeaseRecovery.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestLeaseRecovery.java @@ -42,7 +42,6 @@ import java.util.LinkedList; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeoutException; -import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.fs.FSDataInputStream; @@ -96,8 +95,6 @@ @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class TestLeaseRecovery extends OzoneTestBase { - private static final AtomicInteger FILE_COUNTER = new AtomicInteger(); - private MiniOzoneCluster cluster; private OzoneClient client; @@ -176,7 +173,7 @@ public void init() throws IOException, InterruptedException, @BeforeEach void beforeEach() throws Exception { - file = new Path(dir, "file-" + getTestName() + "-" + FILE_COUNTER.incrementAndGet()); + file = new Path(dir, uniqueObjectName()); fs = (RootedOzoneFileSystem) FileSystem.get(conf); } @@ -266,7 +263,7 @@ public void testOBSRecoveryShouldFail() throws Exception { OzoneBucket obsBucket = TestDataUtil.createVolumeAndBucket(client, "vol2", "obs", BucketLayout.OBJECT_STORE); String obsDir = OZONE_ROOT + obsBucket.getVolumeName() + OZONE_URI_DELIMITER + obsBucket.getName(); - Path obsFile = new Path(obsDir, "file" + getTestName() + FILE_COUNTER.incrementAndGet()); + Path obsFile = new Path(obsDir, uniqueObjectName()); assertThrows(IllegalArgumentException.class, () -> fs.recoverLease(obsFile)); } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java index 5b742c4b22e7..42d748607ac4 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java @@ -86,7 +86,7 @@ void cleanup() throws Exception { } public String volumeName() { - return getTestName().toLowerCase(); + return uniqueObjectName(); } private void createSampleVol(String volume) throws IOException { diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java index 73cf8c2cf2f6..a01c6b89f077 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java @@ -1389,8 +1389,4 @@ private long countBlocksPendingDeletion() { throw new UncheckedIOException(e); } } - - private static String uniqueObjectName(String prefix) { - return prefix + String.format("%010d", OBJECT_COUNTER.getAndIncrement()); - } }