Skip to content

Commit 911deed

Browse files
committed
cleanup
1 parent e82fc56 commit 911deed

File tree

1 file changed

+40
-48
lines changed

1 file changed

+40
-48
lines changed

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

Lines changed: 40 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
package org.elasticsearch.xpack.logsdb.patternedtext;
99

10+
import org.apache.logging.log4j.LogManager;
11+
import org.apache.logging.log4j.Logger;
1012
import org.elasticsearch.action.DocWriteRequest;
1113
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
1214
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
@@ -32,16 +34,22 @@
3234

3335
import java.io.IOException;
3436
import java.time.Instant;
35-
import java.time.ZoneOffset;
3637
import java.time.ZonedDateTime;
37-
import java.util.*;
38+
import java.util.ArrayList;
39+
import java.util.Arrays;
40+
import java.util.Collection;
41+
import java.util.List;
42+
import java.util.UUID;
3843
import java.util.concurrent.TimeUnit;
44+
import java.util.concurrent.atomic.AtomicInteger;
3945
import java.util.stream.Collectors;
4046

47+
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
4148
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailuresAndResponse;
4249

4350

4451
public class PatternedTextRandomTests extends ESIntegTestCase {
52+
private static final Logger logger = LogManager.getLogger(PatternedTextRandomTests.class);
4553

4654
@Override
4755
protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) {
@@ -59,99 +67,83 @@ protected Collection<Class<? extends Plugin>> nodePlugins() {
5967
private static final String INDEX = "test_index";
6068
private static final String MATCH_ONLY_TEXT_FIELD = "field_match_only_text";
6169
private static final String PATTERNED_TEXT_FIELD = "field_patterned_text";
70+
private static final String MAPPING = """
71+
{
72+
"properties": {
73+
"@timestamp": { "type": "date" },
74+
"field_match_only_text": { "type": "match_only_text" },
75+
"field_patterned_text": { "type": "patterned_text" }
76+
}
77+
}
78+
""";
6279

6380
@Before
6481
public void setup() {
6582
assumeTrue("Only when patterned_text feature flag is enabled", PatternedTextFieldMapper.PATTERNED_TEXT_MAPPER.isEnabled());
6683
}
6784

6885
public void testQueries() throws IOException {
69-
var settings = Settings.builder();
70-
var mappings = XContentFactory.jsonBuilder()
71-
.startObject()
72-
.startObject("properties")
73-
.startObject("@timestamp")
74-
.field("type", "date")
75-
.endObject()
76-
.startObject(PATTERNED_TEXT_FIELD)
77-
.field("type", "patterned_text")
78-
.endObject()
79-
.startObject(MATCH_ONLY_TEXT_FIELD)
80-
.field("type", "match_only_text")
81-
.endObject()
82-
.endObject()
83-
.endObject();
84-
8586
var createRequest = new CreateIndexRequest(INDEX)
86-
.settings(settings)
87-
.mapping(mappings);
87+
.mapping(MAPPING);
8888

89-
var createResponse = safeGet(admin().indices().create(createRequest));
90-
assertTrue(createResponse.isAcknowledged());
89+
assertAcked(admin().indices().create(createRequest));
9190

92-
int numDocs = randomIntBetween(10, 1000);
91+
int numDocs = randomIntBetween(10, 200);
9392
List<String> logMessages = generateMessages(numDocs);
9493
indexDocs(logMessages);
9594

96-
int[] numQueriesWithResults = {0};
97-
int[] totalQueries = {0};
95+
var numQueriesWithResults = new AtomicInteger(0);
96+
var numQueriesTotal = new AtomicInteger(0);
9897
for (var message : logMessages) {
99-
List<String> queryTerms = randomQueryParts(message);
100-
98+
List<String> queryTerms = randomQueryValues(message);
10199
var patternedTextQueries = generateQueries(PATTERNED_TEXT_FIELD, queryTerms);
102100
var matchOnlyQueries = generateQueries(MATCH_ONLY_TEXT_FIELD, queryTerms);
103101

104102
for (int i = 0; i < patternedTextQueries.size(); ++i) {
105-
var ptQuery = patternedTextQueries.get(i);
106-
var motQuery = matchOnlyQueries.get(i);
103+
var ptRequest = client().prepareSearch(INDEX).setQuery(patternedTextQueries.get(i));
104+
var motRequest = client().prepareSearch(INDEX).setQuery(matchOnlyQueries.get(i));
107105

108-
var ptRequest = client().prepareSearch(INDEX).setQuery(ptQuery).setSize(numDocs);
109-
var motRequest = client().prepareSearch(INDEX).setQuery(motQuery).setSize(numDocs);
110-
totalQueries[0]++;
106+
numQueriesTotal.incrementAndGet();
111107
assertNoFailuresAndResponse(ptRequest, ptResponse -> {
112108
assertNoFailuresAndResponse(motRequest, motResponse -> {
109+
113110
assertEquals(motResponse.getHits().getTotalHits().value(), ptResponse.getHits().getTotalHits().value());
114111

115-
if (motResponse.getHits().getTotalHits().value() > 0) {
116-
numQueriesWithResults[0]++;
117-
}
118112
var motDocIds = Arrays.stream(motResponse.getHits().getHits()).map(SearchHit::getId).collect(Collectors.toSet());
119113
var ptDocIds = Arrays.stream(ptResponse.getHits().getHits()).map(SearchHit::getId).collect(Collectors.toSet());
120114
assertEquals(motDocIds, ptDocIds);
115+
116+
if (motResponse.getHits().getTotalHits().value() > 0) {
117+
numQueriesWithResults.incrementAndGet();
118+
}
121119
});
122120
});
123121
}
124122
}
125-
System.out.println("num queries with results: " + numQueriesWithResults[0] + ", total: " + totalQueries[0]);
123+
logger.info("Ran {} queries, of which {} had matches", numQueriesTotal.get(), numQueriesWithResults.get());
126124
}
127125

128-
public List<QueryBuilder> generateQueries(String field, List<String> queryTerms) {
126+
private List<QueryBuilder> generateQueries(String field, List<String> queryTerms) {
129127
var results = new ArrayList<QueryBuilder>();
130-
131128
for (var queryTerm : queryTerms) {
132129
results.add(QueryBuilders.termQuery(field, queryTerm));
133130
results.add(QueryBuilders.matchQuery(field, queryTerm));
134131
results.add(QueryBuilders.matchPhraseQuery(field, queryTerm));
135132
}
136-
137133
return results;
138134
}
139135

140-
private static List<String> randomQueryParts(String value) {
136+
private static List<String> randomQueryValues(String value) {
141137
var values = new ArrayList<String>();
142-
var tokenizerRegex = "[\\s\\p{Punct}]+";
143-
List<String> tokens = Arrays.stream(value.split(tokenizerRegex)).filter(t -> t.isEmpty() == false).toList();
144138

145-
// full value
146139
values.add(value);
147-
// random sub-phrase
148140
values.add(randomSubstring(value));
149141

142+
var tokenizerRegex = "[\\s\\p{Punct}]+";
143+
List<String> tokens = Arrays.stream(value.split(tokenizerRegex)).filter(t -> t.isEmpty() == false).toList();
150144
if (tokens.isEmpty() == false) {
151-
// random term
152145
values.add(randomFrom(tokens));
153-
// random sub-phrase
154-
values.add(getSubPhrase(tokens));
146+
values.add(randomSubPhrase(tokens));
155147
}
156148
return values;
157149
}
@@ -162,7 +154,7 @@ private static String randomSubstring(String value) {
162154
return value.substring(low, hi);
163155
}
164156

165-
private static String getSubPhrase(List<String> tokens) {
157+
private static String randomSubPhrase(List<String> tokens) {
166158
int low = ESTestCase.randomIntBetween(0, tokens.size() - 1);
167159
int hi = ESTestCase.randomIntBetween(low + 1, tokens.size());
168160
return String.join(" ", tokens.subList(low, hi));

0 commit comments

Comments
 (0)