Skip to content

Commit 548e9b2

Browse files
committed
Add tests for eql request and response serialization to older versions (elastic#68339)
(cherry picked from commit 3a1f5dc)
1 parent 87cc1e3 commit 548e9b2

File tree

4 files changed

+57
-5
lines changed

4 files changed

+57
-5
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public void writeTo(StreamOutput out) throws IOException {
319319
out.writeOptionalTimeValue(keepAlive);
320320
out.writeBoolean(keepOnCompletion);
321321
}
322-
if (out.getVersion().onOrAfter(Version.V_7_10_0)) {
322+
if (out.getVersion().before(Version.V_7_10_0)) {
323323
out.writeBoolean(true);
324324
}
325325
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
package org.elasticsearch.xpack.eql;
7+
8+
import org.elasticsearch.Version;
9+
import org.elasticsearch.common.io.stream.Writeable;
10+
import org.elasticsearch.common.xcontent.ToXContent;
11+
import org.elasticsearch.test.AbstractSerializingTestCase;
12+
13+
import java.io.IOException;
14+
import java.util.Collections;
15+
import java.util.List;
16+
import java.util.stream.Collectors;
17+
18+
import static org.elasticsearch.Version.getDeclaredVersions;
19+
import static org.hamcrest.Matchers.equalTo;
20+
21+
public abstract class AbstractBWCSerializationTestCase<T extends Writeable & ToXContent> extends AbstractSerializingTestCase<T> {
22+
23+
private static final List<Version> ALL_VERSIONS = Collections.unmodifiableList(getDeclaredVersions(Version.class));
24+
private static Version EQL_GA_VERSION = Version.V_7_10_0;
25+
26+
private static List<Version> getAllBWCVersions(Version version) {
27+
return ALL_VERSIONS.stream().filter(v -> v.onOrAfter(EQL_GA_VERSION) && v.before(version) && version.isCompatible(v)).collect(
28+
Collectors.toList());
29+
}
30+
31+
private static final List<Version> DEFAULT_BWC_VERSIONS = getAllBWCVersions(Version.CURRENT);
32+
33+
public final void testBwcSerialization() throws IOException {
34+
for (int runs = 0; runs < NUMBER_OF_TEST_RUNS; runs++) {
35+
T testInstance = createTestInstance();
36+
for (Version bwcVersion : DEFAULT_BWC_VERSIONS) {
37+
assertBwcSerialization(testInstance, bwcVersion);
38+
}
39+
}
40+
}
41+
42+
protected final void assertBwcSerialization(T testInstance, Version version) throws IOException {
43+
T deserializedInstance = copyInstance(testInstance, version);
44+
assertOnBWCObject(testInstance, deserializedInstance, version);
45+
}
46+
47+
protected void assertOnBWCObject(T testInstance, T bwcDeserializedObject, Version version) {
48+
assertNotSame(version.toString(), bwcDeserializedObject, testInstance);
49+
assertThat(version.toString(), testInstance, equalTo(bwcDeserializedObject));
50+
assertEquals(version.toString(), testInstance.hashCode(), bwcDeserializedObject.hashCode());
51+
}
52+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import org.elasticsearch.common.xcontent.json.JsonXContent;
1515
import org.elasticsearch.index.query.QueryBuilder;
1616
import org.elasticsearch.search.SearchModule;
17-
import org.elasticsearch.test.AbstractSerializingTestCase;
1817
import org.elasticsearch.test.ESTestCase;
18+
import org.elasticsearch.xpack.eql.AbstractBWCSerializationTestCase;
1919
import org.junit.Before;
2020

2121
import java.io.IOException;
@@ -25,7 +25,7 @@
2525

2626
import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
2727

28-
public class EqlSearchRequestTests extends AbstractSerializingTestCase<EqlSearchRequest> {
28+
public class EqlSearchRequestTests extends AbstractBWCSerializationTestCase<EqlSearchRequest> {
2929

3030
// TODO: possibly add mutations
3131
static String defaultTestFilter = "{\n" +

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import org.elasticsearch.common.xcontent.XContentBuilder;
1414
import org.elasticsearch.common.xcontent.XContentParser;
1515
import org.elasticsearch.common.xcontent.XContentType;
16-
import org.elasticsearch.test.AbstractSerializingTestCase;
16+
import org.elasticsearch.xpack.eql.AbstractBWCSerializationTestCase;
1717
import org.elasticsearch.xpack.eql.action.EqlSearchResponse.Event;
1818

1919
import java.io.IOException;
@@ -23,7 +23,7 @@
2323
import java.util.Objects;
2424
import java.util.function.Supplier;
2525

26-
public class EqlSearchResponseTests extends AbstractSerializingTestCase<EqlSearchResponse> {
26+
public class EqlSearchResponseTests extends AbstractBWCSerializationTestCase<EqlSearchResponse> {
2727

2828
private static class RandomSource implements ToXContentObject {
2929

0 commit comments

Comments
 (0)