From 2b12a9d065e35c37a36bc8ee2f5d19521a93445c Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Wed, 21 Feb 2024 12:47:27 -0800 Subject: [PATCH] Reduce the chance of bucket name collisions in S3BucketUtils.temporaryBucketName. Removed the username/random number and added time component, ensuring the length remains the same. --- .../awssdk/testutils/service/S3BucketUtils.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/test/service-test-utils/src/main/java/software/amazon/awssdk/testutils/service/S3BucketUtils.java b/test/service-test-utils/src/main/java/software/amazon/awssdk/testutils/service/S3BucketUtils.java index 809f60c55845..afdf389c9868 100644 --- a/test/service-test-utils/src/main/java/software/amazon/awssdk/testutils/service/S3BucketUtils.java +++ b/test/service-test-utils/src/main/java/software/amazon/awssdk/testutils/service/S3BucketUtils.java @@ -66,9 +66,11 @@ public static String temporaryBucketName(Class clz) { * @return an s3 bucket name */ public static String temporaryBucketName(String prefix) { - String shortenedUserName = shortenIfNeeded(USER_NAME.getStringValue().orElse("unknown"), 7); - String bucketName = - lowerCase(prefix) + "-" + lowerCase(shortenedUserName) + "-" + RANDOM.nextInt(10000); + String currentTimeMillis = Long.toString(System.currentTimeMillis()); + int suffixLength = 12; + + String suffix = currentTimeMillis.substring(currentTimeMillis.length() - suffixLength); + String bucketName = lowerCase(prefix) + "-" + suffix; if (bucketName.length() > 63) { logger.error(() -> "S3 buckets can only be 63 chars in length, try a shorter prefix"); throw new RuntimeException("S3 buckets can only be 63 chars in length, try a shorter prefix"); @@ -79,8 +81,4 @@ public static String temporaryBucketName(String prefix) { private static String shortenClassName(String clzName) { return clzName.length() <= 45 ? clzName : clzName.substring(0, 45); } - - private static String shortenIfNeeded(String str, int length) { - return str.length() <= length ? str : str.substring(0, length); - } }