This is an automated email from the ASF dual-hosted git repository. dsmiley pushed a commit to branch branch_9x in repository https://gitbox.apache.org/repos/asf/solr.git
commit 8ad75e6d9c4ad8d5424967d86351ad7190d9d86f Author: David Smiley <[email protected]> AuthorDate: Thu Feb 13 12:14:15 2025 -0500 Fix DockMakerTest maxCardinality (#3171) and add comments to StringsDSL (cherry picked from commit 5b24d3bd645dac6791d69e833d56278dcf3a2194) --- .../apache/solr/bench/generators/StringsDSL.java | 4 ++ .../test/org/apache/solr/bench/DockMakerTest.java | 50 +++++++--------------- 2 files changed, 19 insertions(+), 35 deletions(-) diff --git a/solr/benchmark/src/java/org/apache/solr/bench/generators/StringsDSL.java b/solr/benchmark/src/java/org/apache/solr/bench/generators/StringsDSL.java index df296727aa0..6449308f78f 100644 --- a/solr/benchmark/src/java/org/apache/solr/bench/generators/StringsDSL.java +++ b/solr/benchmark/src/java/org/apache/solr/bench/generators/StringsDSL.java @@ -379,6 +379,7 @@ public class StringsDSL { new SolrGen<>() { @Override public String generate(SolrRandomnessSource in) { + // TODO DWS: What does it even mean for the cardinality to vary (be generated)? Integer maxCard = maxCardinality.generate(in); if (cardinalityStart == null) { @@ -386,9 +387,12 @@ public class StringsDSL { SolrGenerate.range(0, Integer.MAX_VALUE - maxCard - 1).generate(in); } + // pick from maxCardinality seeds long seed = SolrGenerate.range(cardinalityStart, cardinalityStart + maxCard - 1) .generate(in); + // given the seed, generate a string. + // Final cardinality could be less! Small strings have limited possibilities. return strings.generate( (RandomnessSource) new SplittableRandomSource(new SplittableRandom(seed))); } diff --git a/solr/benchmark/src/test/org/apache/solr/bench/DockMakerTest.java b/solr/benchmark/src/test/org/apache/solr/bench/DockMakerTest.java index 4f106241db6..7c2ef27d312 100644 --- a/solr/benchmark/src/test/org/apache/solr/bench/DockMakerTest.java +++ b/solr/benchmark/src/test/org/apache/solr/bench/DockMakerTest.java @@ -17,13 +17,11 @@ package org.apache.solr.bench; import static org.apache.solr.bench.Docs.docs; -import static org.apache.solr.bench.generators.SourceDSL.booleans; import static org.apache.solr.bench.generators.SourceDSL.integers; import static org.apache.solr.bench.generators.SourceDSL.strings; import java.lang.invoke.MethodHandles; import java.util.HashSet; -import java.util.Iterator; import java.util.Set; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.bench.generators.Distribution; @@ -55,9 +53,10 @@ public class DockMakerTest extends SolrTestCaseJ4 { Docs docs = docs(); - int cardinality = 2; + int maxCardinality = 2; - docs.field("AlphaCard3", strings().alpha().maxCardinality(cardinality).ofLengthBetween(1, 6)); + docs.field( + "AlphaCard3", strings().alpha().maxCardinality(maxCardinality).ofLengthBetween(1, 6)); Set<String> values = new HashSet<>(); for (int i = 0; i < 10; i++) { @@ -66,18 +65,19 @@ public class DockMakerTest extends SolrTestCaseJ4 { values.add(field.getValue().toString()); } - assertEquals(values.toString(), cardinality, values.size()); + // the cardinality we see is <= maxCardinality specified, albeit almost always equal to + assertTrue(values.toString(), values.size() <= maxCardinality); } @Test public void testBasicCardinalityUnicode() throws Exception { Docs docs = docs(); - int cardinality = 4; + int maxCardinality = 4; docs.field( "UnicodeCard3", strings() .basicMultilingualPlaneAlphabet() - .maxCardinality(cardinality) + .maxCardinality(maxCardinality) .ofLengthBetween(1, 6)); HashSet<Object> values = new HashSet<>(); @@ -88,15 +88,16 @@ public class DockMakerTest extends SolrTestCaseJ4 { values.add(field.getValue().toString()); } - assertEquals(values.toString(), cardinality, values.size()); + // the cardinality we see is <= maxCardinality specified, albeit almost always equal to + assertTrue(values.toString(), values.size() <= maxCardinality); } @Test public void testBasicCardinalityInteger() throws Exception { Docs docs = docs(); - int cardinality = 3; + int maxCardinality = 3; - docs.field("IntCard2", integers().allWithMaxCardinality(cardinality)); + docs.field("IntCard2", integers().allWithMaxCardinality(maxCardinality)); HashSet<Object> values = new HashSet<>(); for (int i = 0; i < 30; i++) { @@ -104,7 +105,9 @@ public class DockMakerTest extends SolrTestCaseJ4 { SolrInputField field = doc.getField("IntCard2"); values.add(field.getValue().toString()); } - assertEquals(values.toString(), cardinality, values.size()); + + // the cardinality we see is <= maxCardinality specified, albeit almost always equal to + assertTrue(values.toString(), values.size() <= maxCardinality); if (log.isInfoEnabled()) { log.info(values.toString()); @@ -144,9 +147,7 @@ public class DockMakerTest extends SolrTestCaseJ4 { } Integer lastVal = null; - Iterator<Integer> it = values.iterator(); - while (it.hasNext()) { - Integer val = it.next(); + for (Integer val : values) { if (lastVal != null) { assertTrue(val > lastVal); } @@ -200,25 +201,4 @@ public class DockMakerTest extends SolrTestCaseJ4 { assertNotNull(field.getValue().toString()); } - - @Test - public void testGenDoc() { - Docs docMaker = - docs() - .field("id", integers().incrementing()) - .field( - "facet_s", - strings() - .basicMultilingualPlaneAlphabet() - .maxCardinality(integers().between(5, 16)) - .ofLengthBetween(1, 128)) - .field(booleans().all()); - - for (int i = 0; i < 10; i++) { - SolrInputDocument doc = docMaker.inputDocument(); - if (log.isInfoEnabled()) { - log.info("doc:\n{}", doc); - } - } - } }
