From 3575c06532946ef722963eff672fdc63a5114de8 Mon Sep 17 00:00:00 2001 From: cnathe Date: Fri, 25 Jul 2025 11:08:47 -0500 Subject: [PATCH 1/3] TestDataGenerator random domain and field name max start/end char increase --- src/org/labkey/test/util/TestDataGenerator.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/org/labkey/test/util/TestDataGenerator.java b/src/org/labkey/test/util/TestDataGenerator.java index f9d16ae2af..7ec13779a7 100644 --- a/src/org/labkey/test/util/TestDataGenerator.java +++ b/src/org/labkey/test/util/TestDataGenerator.java @@ -559,10 +559,9 @@ public static String randomDomainName(@Nullable String namePart, @Nullable Integ String _namePart = namePart == null ? "" : namePart; DomainUtils.DomainKind _domainKind = domainKind == null ? DomainUtils.DomainKind.SampleSet : domainKind; String charSet = ALPHANUMERIC_STRING + DOMAIN_SPECIAL_STRING; - // TODO increase min to 5 and max to 50 - String domainName = randomName(_namePart, getNumChars(numStartChars, 0), getNumChars(numEndChars, 10), charSet, null); + String domainName = randomName(_namePart, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), charSet, null); while (isDomainAndFieldNameInvalid(WebTestHelper.getRemoteApiConnection(false), _domainKind, domainName, null)) - domainName = randomName(_namePart, getNumChars(numStartChars, 0), getNumChars(numEndChars, 10), charSet, null); + domainName = randomName(_namePart, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), charSet, null); // Multiple spaces in the UI are collapsed into a single space. If we need to test for handling of multiple spaces, we'll not use this generator domainName = domainName.replaceAll("\\s+", " "); @@ -600,10 +599,9 @@ public static String randomFieldName(@NotNull String part, @Nullable Integer num String chars = ALL_ILLEGAL_QUERY_KEY_CHARACTERS + " %()=+-[]_|*`'\":;<>?!@#^" + NON_LATIN_STRING + WIDE_PLACEHOLDER + REPEAT_PLACEHOLDER + ALL_CHARS_PLACEHOLDER; - // TODO increase max to 50 - String randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 5), chars, exclusion); + String randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), chars, exclusion); while (isDomainAndFieldNameInvalid(WebTestHelper.getRemoteApiConnection(false), _domainKind, null, randomFieldName)) - randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 5), chars, exclusion); + randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), chars, exclusion); TestLogger.log("Generated random field name for domainKind " + _domainKind + ": " + randomFieldName); return randomFieldName; From 7d07e2403ee725a4d8b3a98b46d98b2a387ba2c6 Mon Sep 17 00:00:00 2001 From: cnathe Date: Fri, 25 Jul 2025 16:10:32 -0500 Subject: [PATCH 2/3] Revert FieldDefinition.labelFromName change from last PR --- src/org/labkey/test/params/FieldDefinition.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/org/labkey/test/params/FieldDefinition.java b/src/org/labkey/test/params/FieldDefinition.java index 0c484493f1..568e903161 100644 --- a/src/org/labkey/test/params/FieldDefinition.java +++ b/src/org/labkey/test/params/FieldDefinition.java @@ -123,8 +123,7 @@ else if (Character.isUpperCase(c) && Character.isLowerCase(chars[i - 1])) } } - // Multiple spaces in the UI are collapsed into a single space - return buf.toString().replaceAll("\\s+", " "); + return buf.toString(); } public String getEffectiveLabel() From 159c666744d7787f8364865b92198b6700af2bd9 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 29 Jul 2025 09:02:01 -0500 Subject: [PATCH 3/3] TestDataGenerator to add a MAX_RANDOM_TRIES for while loop when generating domain/field names --- src/org/labkey/test/util/TestDataGenerator.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/org/labkey/test/util/TestDataGenerator.java b/src/org/labkey/test/util/TestDataGenerator.java index 4f93a22062..cbb98da400 100644 --- a/src/org/labkey/test/util/TestDataGenerator.java +++ b/src/org/labkey/test/util/TestDataGenerator.java @@ -83,6 +83,7 @@ public class TestDataGenerator public static final String ALPHANUMERIC_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvxyz"; public static final String DOMAIN_SPECIAL_STRING = "+- _.:&()/"; public static final String ILLEGAL_DOMAIN_NAME_CHARSET = "<>[]{};,`\"~!@#$%^*=|?\\"; + private static final int MAX_RANDOM_TRIES = 100; // Used to set value of date pickers public static final Supplier INPUT_DATE_FORMAT = () -> new SimpleDateFormat("MM/dd/yyyy"); public static final Supplier INPUT_DATETIME_FORMAT = () -> new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); @@ -559,9 +560,14 @@ public static String randomDomainName(@Nullable String namePart, @Nullable Integ String _namePart = namePart == null ? "" : namePart; DomainUtils.DomainKind _domainKind = domainKind == null ? DomainUtils.DomainKind.SampleSet : domainKind; String charSet = ALPHANUMERIC_STRING + DOMAIN_SPECIAL_STRING; + int currentTries = 0; String domainName = randomName(_namePart, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), charSet, null); while (isDomainAndFieldNameInvalid(_domainKind, domainName, null)) + { domainName = randomName(_namePart, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), charSet, null); + if (++currentTries >= MAX_RANDOM_TRIES) + throw new IllegalStateException("Failed to generate a valid domain name after " + MAX_RANDOM_TRIES + " tries. Last generated name: " + domainName); + } // Multiple spaces in the UI are collapsed into a single space. If we need to test for handling of multiple spaces, we'll not use this generator domainName = domainName.replaceAll("\\s+", " "); @@ -599,9 +605,14 @@ public static String randomFieldName(@NotNull String part, @Nullable Integer num String chars = ALL_ILLEGAL_QUERY_KEY_CHARACTERS + " %()=+-[]_|*`'\":;<>?!@#^" + NON_LATIN_STRING + WIDE_PLACEHOLDER + REPEAT_PLACEHOLDER + ALL_CHARS_PLACEHOLDER; + int currentTries = 0; String randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), chars, exclusion); while (isDomainAndFieldNameInvalid(_domainKind, null, randomFieldName)) + { randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), chars, exclusion); + if (++currentTries >= MAX_RANDOM_TRIES) + throw new IllegalStateException("Failed to generate a valid field name after " + MAX_RANDOM_TRIES + " tries. Last generated name: " + randomFieldName); + } TestLogger.log("Generated random field name for domainKind " + _domainKind + ": " + randomFieldName); return randomFieldName;