Skip to content

Commit 8f491cc

Browse files
committed
Use randmom messages in synth source tests
1 parent 911deed commit 8f491cc

File tree

2 files changed

+41
-54
lines changed

2 files changed

+41
-54
lines changed

x-pack/plugin/logsdb/src/test/java/org/elasticsearch/xpack/logsdb/patternedtext/PatternedTextFieldMapperTests.java

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.elasticsearch.common.Strings;
2525
import org.elasticsearch.common.settings.Settings;
2626
import org.elasticsearch.core.Tuple;
27-
import org.elasticsearch.index.mapper.DateFieldMapper;
2827
import org.elasticsearch.index.mapper.DocumentMapper;
2928
import org.elasticsearch.index.mapper.KeywordFieldMapper;
3029
import org.elasticsearch.index.mapper.LuceneDocument;
@@ -46,7 +45,6 @@
4645
import java.util.Collection;
4746
import java.util.Collections;
4847
import java.util.List;
49-
import java.util.UUID;
5048

5149
import static org.hamcrest.Matchers.containsString;
5250
import static org.hamcrest.Matchers.equalTo;
@@ -253,25 +251,7 @@ public SyntheticSourceExample example(int maxValues) {
253251
}
254252

255253
private Tuple<String, String> generateValue() {
256-
StringBuilder builder = new StringBuilder();
257-
if (randomBoolean()) {
258-
builder.append(randomAlphaOfLength(5));
259-
} else {
260-
String timestamp = DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.formatMillis(System.currentTimeMillis());
261-
builder.append(timestamp);
262-
}
263-
for (int i = 0; i < randomIntBetween(0, 9); i++) {
264-
builder.append(" ");
265-
int rand = randomIntBetween(0, 4);
266-
switch (rand) {
267-
case 0 -> builder.append(randomAlphaOfLength(5));
268-
case 1 -> builder.append(randomAlphanumericOfLength(5));
269-
case 2 -> builder.append(UUID.randomUUID());
270-
case 3 -> builder.append(randomIp(true));
271-
case 4 -> builder.append(DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.formatMillis(randomMillisUpToYear9999()));
272-
}
273-
}
274-
String value = builder.toString();
254+
var value = PatternedTextVsMatchOnlyTextTests.randomMessage();
275255
return Tuple.tuple(value, value);
276256
}
277257

x-pack/plugin/logsdb/src/test/java/org/elasticsearch/xpack/logsdb/patternedtext/PatternedTextRandomTests.java renamed to x-pack/plugin/logsdb/src/test/java/org/elasticsearch/xpack/logsdb/patternedtext/PatternedTextVsMatchOnlyTextTests.java

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.elasticsearch.search.SearchHit;
2727
import org.elasticsearch.test.ESIntegTestCase;
2828
import org.elasticsearch.test.ESTestCase;
29-
import org.elasticsearch.xcontent.XContentFactory;
3029
import org.elasticsearch.xcontent.json.JsonXContent;
3130
import org.elasticsearch.xpack.core.LocalStateCompositeXPackPlugin;
3231
import org.elasticsearch.xpack.logsdb.LogsDBPlugin;
@@ -42,14 +41,15 @@
4241
import java.util.UUID;
4342
import java.util.concurrent.TimeUnit;
4443
import java.util.concurrent.atomic.AtomicInteger;
44+
import java.util.function.BiFunction;
4545
import java.util.stream.Collectors;
4646

4747
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
4848
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailuresAndResponse;
4949

5050

51-
public class PatternedTextRandomTests extends ESIntegTestCase {
52-
private static final Logger logger = LogManager.getLogger(PatternedTextRandomTests.class);
51+
public class PatternedTextVsMatchOnlyTextTests extends ESIntegTestCase {
52+
private static final Logger logger = LogManager.getLogger(PatternedTextVsMatchOnlyTextTests.class);
5353

5454
@Override
5555
protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) {
@@ -92,45 +92,52 @@ public void testQueries() throws IOException {
9292
List<String> logMessages = generateMessages(numDocs);
9393
indexDocs(logMessages);
9494

95+
var queryTerms = logMessages.stream().flatMap(m -> randomQueryValues(m).stream()).toList();
96+
{
97+
var ptQueries = buildQueries(PATTERNED_TEXT_FIELD, queryTerms, QueryBuilders::matchPhraseQuery);
98+
var motQueries = buildQueries(MATCH_ONLY_TEXT_FIELD, queryTerms, QueryBuilders::matchPhraseQuery);
99+
assertQueryResults(ptQueries, motQueries, numDocs, "phrase");
100+
}
101+
{
102+
var ptQueries = buildQueries(PATTERNED_TEXT_FIELD, queryTerms, QueryBuilders::matchQuery);
103+
var motQueries = buildQueries(MATCH_ONLY_TEXT_FIELD, queryTerms, QueryBuilders::matchQuery);
104+
assertQueryResults(ptQueries, motQueries, numDocs, "match");
105+
}
106+
{
107+
var ptQueries = buildQueries(PATTERNED_TEXT_FIELD, queryTerms, QueryBuilders::termQuery);
108+
var motQueries = buildQueries(MATCH_ONLY_TEXT_FIELD, queryTerms, QueryBuilders::termQuery);
109+
assertQueryResults(ptQueries, motQueries, numDocs, "term");
110+
}
111+
}
112+
113+
private void assertQueryResults(List<QueryBuilder> patternedTextQueries, List<QueryBuilder> matchOnlyTextQueries, int numDocs, String queryType) {
95114
var numQueriesWithResults = new AtomicInteger(0);
96115
var numQueriesTotal = new AtomicInteger(0);
97-
for (var message : logMessages) {
98-
List<String> queryTerms = randomQueryValues(message);
99-
var patternedTextQueries = generateQueries(PATTERNED_TEXT_FIELD, queryTerms);
100-
var matchOnlyQueries = generateQueries(MATCH_ONLY_TEXT_FIELD, queryTerms);
101-
102-
for (int i = 0; i < patternedTextQueries.size(); ++i) {
103-
var ptRequest = client().prepareSearch(INDEX).setQuery(patternedTextQueries.get(i));
104-
var motRequest = client().prepareSearch(INDEX).setQuery(matchOnlyQueries.get(i));
116+
for (int i = 0; i < patternedTextQueries.size(); ++i) {
117+
var ptRequest = client().prepareSearch(INDEX).setQuery(patternedTextQueries.get(i)).setSize(numDocs);
118+
var motRequest = client().prepareSearch(INDEX).setQuery(matchOnlyTextQueries.get(i)).setSize(numDocs);
105119

106-
numQueriesTotal.incrementAndGet();
107-
assertNoFailuresAndResponse(ptRequest, ptResponse -> {
108-
assertNoFailuresAndResponse(motRequest, motResponse -> {
120+
numQueriesTotal.incrementAndGet();
121+
assertNoFailuresAndResponse(ptRequest, ptResponse -> {
122+
assertNoFailuresAndResponse(motRequest, motResponse -> {
109123

110-
assertEquals(motResponse.getHits().getTotalHits().value(), ptResponse.getHits().getTotalHits().value());
124+
assertEquals(motResponse.getHits().getTotalHits().value(), ptResponse.getHits().getTotalHits().value());
111125

112-
var motDocIds = Arrays.stream(motResponse.getHits().getHits()).map(SearchHit::getId).collect(Collectors.toSet());
113-
var ptDocIds = Arrays.stream(ptResponse.getHits().getHits()).map(SearchHit::getId).collect(Collectors.toSet());
114-
assertEquals(motDocIds, ptDocIds);
126+
var motDocIds = Arrays.stream(motResponse.getHits().getHits()).map(SearchHit::getId).collect(Collectors.toSet());
127+
var ptDocIds = Arrays.stream(ptResponse.getHits().getHits()).map(SearchHit::getId).collect(Collectors.toSet());
128+
assertEquals(motDocIds, ptDocIds);
115129

116-
if (motResponse.getHits().getTotalHits().value() > 0) {
117-
numQueriesWithResults.incrementAndGet();
118-
}
119-
});
130+
if (motResponse.getHits().getTotalHits().value() > 0) {
131+
numQueriesWithResults.incrementAndGet();
132+
}
120133
});
121-
}
134+
});
122135
}
123-
logger.info("Ran {} queries, of which {} had matches", numQueriesTotal.get(), numQueriesWithResults.get());
136+
logger.info("Ran {} {} queries, of which {} had matches", numQueriesTotal.get(), queryType, numQueriesWithResults.get());
124137
}
125138

126-
private List<QueryBuilder> generateQueries(String field, List<String> queryTerms) {
127-
var results = new ArrayList<QueryBuilder>();
128-
for (var queryTerm : queryTerms) {
129-
results.add(QueryBuilders.termQuery(field, queryTerm));
130-
results.add(QueryBuilders.matchQuery(field, queryTerm));
131-
results.add(QueryBuilders.matchPhraseQuery(field, queryTerm));
132-
}
133-
return results;
139+
private List<QueryBuilder> buildQueries(String field, List<String> terms, BiFunction<String, Object, QueryBuilder> queryBuilder) {
140+
return terms.stream().map(t -> queryBuilder.apply(field, t)).toList();
134141
}
135142

136143
private static List<String> randomQueryValues(String value) {
@@ -211,7 +218,7 @@ public static String randomMessage() {
211218
() -> randomRealisticUnicodeOfCodepointLength(randomIntBetween(1, 20)),
212219
() -> UUID.randomUUID().toString(),
213220
() -> randomIp(randomBoolean()),
214-
PatternedTextRandomTests::randomTimestamp,
221+
PatternedTextVsMatchOnlyTextTests::randomTimestamp,
215222
ESTestCase::randomInt,
216223
ESTestCase::randomDouble
217224
);

0 commit comments

Comments
 (0)