Skip to content

Commit 3a1f5dc

Browse files
authored
Add tests for eql request and response serialization to older versions (#68339)
1 parent cf08c0e commit 3a1f5dc

File tree

3 files changed

+56
-4
lines changed

3 files changed

+56
-4
lines changed
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)