Skip to content

Commit 748fc04

Browse files
authored
TestDataGenerator random domain and field name max start/end char increase (#2586)
- random domain and field name max start/end char increase - add max tries to while loop for generating domain/field names
1 parent 229976b commit 748fc04

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/org/labkey/test/util/TestDataGenerator.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public class TestDataGenerator
8383
public static final String ALPHANUMERIC_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvxyz";
8484
public static final String DOMAIN_SPECIAL_STRING = "+- _.:&()/";
8585
public static final String ILLEGAL_DOMAIN_NAME_CHARSET = "<>[]{};,`\"~!@#$%^*=|?\\";
86+
private static final int MAX_RANDOM_TRIES = 100;
8687
// Used to set value of date pickers
8788
public static final Supplier<SimpleDateFormat> INPUT_DATE_FORMAT = () -> new SimpleDateFormat("MM/dd/yyyy");
8889
public static final Supplier<SimpleDateFormat> INPUT_DATETIME_FORMAT = () -> new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
@@ -559,10 +560,14 @@ public static String randomDomainName(@Nullable String namePart, @Nullable Integ
559560
String _namePart = namePart == null ? "" : namePart;
560561
DomainUtils.DomainKind _domainKind = domainKind == null ? DomainUtils.DomainKind.SampleSet : domainKind;
561562
String charSet = ALPHANUMERIC_STRING + DOMAIN_SPECIAL_STRING;
562-
// TODO increase min to 5 and max to 50
563-
String domainName = randomName(_namePart, getNumChars(numStartChars, 0), getNumChars(numEndChars, 10), charSet, null);
563+
int currentTries = 0;
564+
String domainName = randomName(_namePart, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), charSet, null);
564565
while (isDomainAndFieldNameInvalid(_domainKind, domainName, null))
565-
domainName = randomName(_namePart, getNumChars(numStartChars, 0), getNumChars(numEndChars, 10), charSet, null);
566+
{
567+
domainName = randomName(_namePart, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), charSet, null);
568+
if (++currentTries >= MAX_RANDOM_TRIES)
569+
throw new IllegalStateException("Failed to generate a valid domain name after " + MAX_RANDOM_TRIES + " tries. Last generated name: " + domainName);
570+
}
566571

567572
// 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
568573
domainName = domainName.replaceAll("\\s+", " ");
@@ -600,10 +605,14 @@ public static String randomFieldName(@NotNull String part, @Nullable Integer num
600605
String chars = ALL_ILLEGAL_QUERY_KEY_CHARACTERS + " %()=+-[]_|*`'\":;<>?!@#^" + NON_LATIN_STRING
601606
+ WIDE_PLACEHOLDER + REPEAT_PLACEHOLDER + ALL_CHARS_PLACEHOLDER;
602607

603-
// TODO increase max to 50
604-
String randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 5), chars, exclusion);
608+
int currentTries = 0;
609+
String randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), chars, exclusion);
605610
while (isDomainAndFieldNameInvalid(_domainKind, null, randomFieldName))
606-
randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 5), chars, exclusion);
611+
{
612+
randomFieldName = randomName(part, getNumChars(numStartChars, 5), getNumChars(numEndChars, 50), chars, exclusion);
613+
if (++currentTries >= MAX_RANDOM_TRIES)
614+
throw new IllegalStateException("Failed to generate a valid field name after " + MAX_RANDOM_TRIES + " tries. Last generated name: " + randomFieldName);
615+
}
607616

608617
TestLogger.log("Generated random field name for domainKind " + _domainKind + ": " + randomFieldName);
609618
return randomFieldName;

0 commit comments

Comments
 (0)