Skip to content

Commit df74efb

Browse files
authored
Fix the bwc serialization tests (#69534)
1 parent 2048eb7 commit df74efb

File tree

7 files changed

+65
-9
lines changed

7 files changed

+65
-9
lines changed

client/rest-high-level/src/test/java/org/elasticsearch/client/eql/EqlSearchResponseTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ static List<org.elasticsearch.xpack.eql.action.EqlSearchResponse.Event> randomEv
9090
for (int i = 0; i < size; i++) {
9191
BytesReference bytes = new RandomSource(() -> randomAlphaOfLength(10)).toBytes(xType);
9292
Map<String, DocumentField> fetchFields = new HashMap<>();
93-
for (int j = 0; j < randomIntBetween(0, 5); j++) {
93+
int fieldsCount = randomIntBetween(0, 5);
94+
for (int j = 0; j < fieldsCount; j++) {
9495
fetchFields.put(randomAlphaOfLength(10), randomDocumentField(xType).v1());
9596
}
9697
if (fetchFields.isEmpty() && randomBoolean()) {

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/action/EqlSearchRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public EqlSearchRequest(StreamInput in) throws IOException {
115115
if (in.getVersion().onOrAfter(Version.V_7_10_0)) {
116116
resultPosition = in.readString();
117117
}
118-
if (in.getVersion().onOrAfter(Version.V_7_12_0)) {
118+
if (in.getVersion().onOrAfter(Version.V_7_13_0)) {
119119
if (in.readBoolean()) {
120120
fetchFields = in.readList(FieldAndFormat::new);
121121
}
@@ -363,7 +363,7 @@ public void writeTo(StreamOutput out) throws IOException {
363363
if (out.getVersion().onOrAfter(Version.V_7_10_0)) { // TODO: Remove after backport
364364
out.writeString(resultPosition);
365365
}
366-
if (out.getVersion().onOrAfter(Version.V_7_12_0)) {
366+
if (out.getVersion().onOrAfter(Version.V_7_13_0)) {
367367
out.writeBoolean(fetchFields != null);
368368
if (fetchFields != null) {
369369
out.writeList(fetchFields);

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/action/EqlSearchResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public Event(StreamInput in) throws IOException {
242242
index = in.readString();
243243
id = in.readString();
244244
source = in.readBytesReference();
245-
if (in.getVersion().onOrAfter(Version.V_7_12_0) && in.readBoolean()) {
245+
if (in.getVersion().onOrAfter(Version.V_7_13_0) && in.readBoolean()) {
246246
fetchFields = in.readMap(StreamInput::readString, DocumentField::new);
247247
} else {
248248
fetchFields = null;
@@ -254,7 +254,7 @@ public void writeTo(StreamOutput out) throws IOException {
254254
out.writeString(index);
255255
out.writeString(id);
256256
out.writeBytesReference(source);
257-
if (out.getVersion().onOrAfter(Version.V_7_12_0)) {
257+
if (out.getVersion().onOrAfter(Version.V_7_13_0)) {
258258
out.writeBoolean(fetchFields != null);
259259
if (fetchFields != null) {
260260
out.writeMap(fetchFields, StreamOutput::writeString, (stream, documentField) -> documentField.writeTo(stream));

x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/AbstractBWCSerializationTestCase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ private static List<Version> getAllBWCVersions(Version version) {
3131

3232
private static final List<Version> DEFAULT_BWC_VERSIONS = getAllBWCVersions(Version.CURRENT);
3333

34+
protected abstract T mutateInstanceForVersion(T instance, Version version);
35+
3436
public final void testBwcSerialization() throws IOException {
3537
for (int runs = 0; runs < NUMBER_OF_TEST_RUNS; runs++) {
3638
T testInstance = createTestInstance();
@@ -42,7 +44,7 @@ public final void testBwcSerialization() throws IOException {
4244

4345
protected final void assertBwcSerialization(T testInstance, Version version) throws IOException {
4446
T deserializedInstance = copyInstance(testInstance, version);
45-
assertOnBWCObject(testInstance, deserializedInstance, version);
47+
assertOnBWCObject(mutateInstanceForVersion(testInstance, version), deserializedInstance, version);
4648
}
4749

4850
protected void assertOnBWCObject(T testInstance, T bwcDeserializedObject, Version version) {

x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/AbstractBWCWireSerializingTestCase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ private static List<Version> getAllBWCVersions(Version version) {
3030

3131
private static final List<Version> DEFAULT_BWC_VERSIONS = getAllBWCVersions(Version.CURRENT);
3232

33+
protected abstract T mutateInstanceForVersion(T instance, Version version);
34+
3335
public final void testBwcSerialization() throws IOException {
3436
for (int runs = 0; runs < NUMBER_OF_TEST_RUNS; runs++) {
3537
T testInstance = createTestInstance();
@@ -41,7 +43,7 @@ public final void testBwcSerialization() throws IOException {
4143

4244
protected final void assertBwcSerialization(T testInstance, Version version) throws IOException {
4345
T deserializedInstance = copyInstance(testInstance, version);
44-
assertOnBWCObject(testInstance, deserializedInstance, version);
46+
assertOnBWCObject(mutateInstanceForVersion(testInstance, version), deserializedInstance, version);
4547
}
4648

4749
protected void assertOnBWCObject(T testInstance, T bwcDeserializedObject, Version version) {

x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/action/EqlSearchRequestTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package org.elasticsearch.xpack.eql.action;
88

9+
import org.elasticsearch.Version;
910
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
1011
import org.elasticsearch.common.io.stream.Writeable;
1112
import org.elasticsearch.common.settings.Settings;
@@ -101,4 +102,24 @@ protected Writeable.Reader<EqlSearchRequest> instanceReader() {
101102
protected EqlSearchRequest doParseInstance(XContentParser parser) {
102103
return EqlSearchRequest.fromXContent(parser).indices(new String[]{defaultTestIndex});
103104
}
105+
106+
@Override
107+
protected EqlSearchRequest mutateInstanceForVersion(EqlSearchRequest instance, Version version) {
108+
EqlSearchRequest mutatedInstance = new EqlSearchRequest();
109+
mutatedInstance.indices(instance.indices());
110+
mutatedInstance.indicesOptions(instance.indicesOptions());
111+
mutatedInstance.filter(instance.filter());
112+
mutatedInstance.timestampField(instance.timestampField());
113+
mutatedInstance.tiebreakerField(instance.tiebreakerField());
114+
mutatedInstance.eventCategoryField(instance.eventCategoryField());
115+
mutatedInstance.size(instance.size());
116+
mutatedInstance.fetchSize(instance.fetchSize());
117+
mutatedInstance.query(instance.query());
118+
mutatedInstance.waitForCompletionTimeout(instance.waitForCompletionTimeout());
119+
mutatedInstance.keepAlive(instance.keepAlive());
120+
mutatedInstance.keepOnCompletion(instance.keepOnCompletion());
121+
mutatedInstance.fetchFields(version.onOrAfter(Version.V_7_13_0) ? instance.fetchFields() : null);
122+
123+
return mutatedInstance;
124+
}
104125
}

x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/action/EqlSearchResponseTests.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package org.elasticsearch.xpack.eql.action;
88

99
import org.apache.lucene.search.TotalHits;
10+
import org.elasticsearch.Version;
1011
import org.elasticsearch.common.bytes.BytesReference;
1112
import org.elasticsearch.common.collect.Tuple;
1213
import org.elasticsearch.common.document.DocumentField;
@@ -20,6 +21,7 @@
2021
import org.elasticsearch.test.RandomObjects;
2122
import org.elasticsearch.xpack.eql.AbstractBWCWireSerializingTestCase;
2223
import org.elasticsearch.xpack.eql.action.EqlSearchResponse.Event;
24+
import org.elasticsearch.xpack.eql.action.EqlSearchResponse.Sequence;
2325

2426
import java.io.IOException;
2527
import java.util.ArrayList;
@@ -100,7 +102,8 @@ static List<Event> randomEvents(XContentType xType) {
100102
for (int i = 0; i < size; i++) {
101103
BytesReference bytes = new RandomSource(() -> randomAlphaOfLength(10)).toBytes(xType);
102104
Map<String, DocumentField> fetchFields = new HashMap<>();
103-
for (int j = 0; j < randomIntBetween(0, 5); j++) {
105+
int fieldsCount = randomIntBetween(0, 5);
106+
for (int j = 0; j < fieldsCount; j++) {
104107
fetchFields.put(randomAlphaOfLength(10), randomDocumentField(xType).v1());
105108
}
106109
if (fetchFields.isEmpty() && randomBoolean()) {
@@ -217,5 +220,32 @@ public static EqlSearchResponse createRandomInstance(TotalHits totalHits, XConte
217220
return null;
218221
}
219222
}
220-
223+
224+
@Override
225+
protected EqlSearchResponse mutateInstanceForVersion(EqlSearchResponse instance, Version version) {
226+
List<Event> mutatedEvents = mutateEvents(instance.hits().events(), version);
227+
228+
List<Sequence> sequences = instance.hits().sequences();
229+
List<Sequence> mutatedSequences = null;
230+
if (sequences != null) {
231+
mutatedSequences = new ArrayList<>(sequences.size());
232+
for(Sequence s : sequences) {
233+
mutatedSequences.add(new Sequence(s.joinKeys(), mutateEvents(s.events(), version)));
234+
}
235+
}
236+
237+
return new EqlSearchResponse(new EqlSearchResponse.Hits(mutatedEvents, mutatedSequences, instance.hits().totalHits()),
238+
instance.took(), instance.isTimeout(), instance.id(), instance.isRunning(), instance.isPartial());
239+
}
240+
241+
private List<Event> mutateEvents(List<Event> original, Version version) {
242+
if (original == null || original.isEmpty()) {
243+
return original;
244+
}
245+
List<Event> mutatedEvents = new ArrayList<>(original.size());
246+
for(Event e : original) {
247+
mutatedEvents.add(new Event(e.index(), e.id(), e.source(), version.onOrAfter(Version.V_7_13_0) ? e.fetchFields() : null));
248+
}
249+
return mutatedEvents;
250+
}
221251
}

0 commit comments

Comments
 (0)