Skip to content

Commit 19c69a1

Browse files
authored
Add BWC tests for Analytics Collections and Query Rules- Part 3 (elastic#97821)
* POST Analytics Event Response * Query rules BWC tests * Change access modifier to new ParseField * Review: Field rename
1 parent 4e1b321 commit 19c69a1

13 files changed

+312
-75
lines changed

x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/PostAnalyticsEventAction.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import org.elasticsearch.common.xcontent.XContentHelper;
2121
import org.elasticsearch.core.Nullable;
2222
import org.elasticsearch.rest.RestStatus;
23+
import org.elasticsearch.xcontent.ConstructingObjectParser;
2324
import org.elasticsearch.xcontent.ParseField;
2425
import org.elasticsearch.xcontent.XContentBuilder;
26+
import org.elasticsearch.xcontent.XContentParser;
2527
import org.elasticsearch.xcontent.XContentType;
2628
import org.elasticsearch.xpack.application.analytics.event.AnalyticsEvent;
2729

@@ -33,6 +35,7 @@
3335
import java.util.Objects;
3436

3537
import static org.elasticsearch.action.ValidateActions.addValidationError;
38+
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
3639

3740
public class PostAnalyticsEventAction extends ActionType<PostAnalyticsEventAction.Response> {
3841

@@ -350,6 +353,20 @@ protected void addFieldsToXContent(XContentBuilder builder, Params params) throw
350353
public RestStatus status() {
351354
return RestStatus.ACCEPTED;
352355
}
356+
357+
private static final ConstructingObjectParser<Response, String> PARSER = new ConstructingObjectParser<>(
358+
"post_analytics_event_response",
359+
false,
360+
(params) -> new Response((boolean) params[0])
361+
);
362+
363+
static {
364+
PARSER.declareBoolean(constructorArg(), Response.RESULT_FIELD);
365+
}
366+
367+
public static Response parse(XContentParser parser) {
368+
return PARSER.apply(parser, null);
369+
}
353370
}
354371

355372
public static class DebugResponse extends Response {

x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/DeleteQueryRulesetAction.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,17 @@
1414
import org.elasticsearch.common.Strings;
1515
import org.elasticsearch.common.io.stream.StreamInput;
1616
import org.elasticsearch.common.io.stream.StreamOutput;
17+
import org.elasticsearch.xcontent.ConstructingObjectParser;
18+
import org.elasticsearch.xcontent.ParseField;
19+
import org.elasticsearch.xcontent.ToXContentObject;
20+
import org.elasticsearch.xcontent.XContentBuilder;
21+
import org.elasticsearch.xcontent.XContentParser;
1722

1823
import java.io.IOException;
1924
import java.util.Objects;
2025

2126
import static org.elasticsearch.action.ValidateActions.addValidationError;
27+
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
2228

2329
public class DeleteQueryRulesetAction extends ActionType<AcknowledgedResponse> {
2430

@@ -29,9 +35,11 @@ private DeleteQueryRulesetAction() {
2935
super(NAME, AcknowledgedResponse::readFrom);
3036
}
3137

32-
public static class Request extends ActionRequest {
38+
public static class Request extends ActionRequest implements ToXContentObject {
3339
private final String rulesetId;
3440

41+
private static final ParseField RULESET_ID_FIELD = new ParseField("ruleset_id");
42+
3543
public Request(StreamInput in) throws IOException {
3644
super(in);
3745
this.rulesetId = in.readString();
@@ -74,6 +82,29 @@ public boolean equals(Object o) {
7482
public int hashCode() {
7583
return Objects.hash(rulesetId);
7684
}
85+
86+
@Override
87+
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
88+
builder.startObject();
89+
builder.field(RULESET_ID_FIELD.getPreferredName(), rulesetId);
90+
builder.endObject();
91+
return builder;
92+
}
93+
94+
private static final ConstructingObjectParser<Request, String> PARSER = new ConstructingObjectParser<>(
95+
"delete_query_ruleset_request",
96+
false,
97+
(p) -> {
98+
return new Request((String) p[0]);
99+
}
100+
);
101+
static {
102+
PARSER.declareString(constructorArg(), RULESET_ID_FIELD);
103+
}
104+
105+
public static Request parse(XContentParser parser) {
106+
return PARSER.apply(parser, null);
107+
}
77108
}
78109

79110
}

x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/GetQueryRulesetAction.java

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@
1414
import org.elasticsearch.common.Strings;
1515
import org.elasticsearch.common.io.stream.StreamInput;
1616
import org.elasticsearch.common.io.stream.StreamOutput;
17+
import org.elasticsearch.xcontent.ConstructingObjectParser;
18+
import org.elasticsearch.xcontent.ParseField;
1719
import org.elasticsearch.xcontent.ToXContentObject;
1820
import org.elasticsearch.xcontent.XContentBuilder;
21+
import org.elasticsearch.xcontent.XContentParser;
1922
import org.elasticsearch.xpack.application.rules.QueryRule;
2023
import org.elasticsearch.xpack.application.rules.QueryRuleset;
2124

@@ -24,6 +27,7 @@
2427
import java.util.Objects;
2528

2629
import static org.elasticsearch.action.ValidateActions.addValidationError;
30+
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
2731

2832
public class GetQueryRulesetAction extends ActionType<GetQueryRulesetAction.Response> {
2933

@@ -34,8 +38,9 @@ private GetQueryRulesetAction() {
3438
super(NAME, GetQueryRulesetAction.Response::new);
3539
}
3640

37-
public static class Request extends ActionRequest {
41+
public static class Request extends ActionRequest implements ToXContentObject {
3842
private final String rulesetId;
43+
private static final ParseField RULESET_ID_FIELD = new ParseField("ruleset_id");
3944

4045
public Request(StreamInput in) throws IOException {
4146
super(in);
@@ -79,11 +84,37 @@ public boolean equals(Object o) {
7984
public int hashCode() {
8085
return Objects.hash(rulesetId);
8186
}
87+
88+
@Override
89+
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
90+
builder.startObject();
91+
builder.field(RULESET_ID_FIELD.getPreferredName(), rulesetId);
92+
builder.endObject();
93+
return builder;
94+
}
95+
96+
private static final ConstructingObjectParser<Request, String> PARSER = new ConstructingObjectParser<>(
97+
"get_query_ruleset_request",
98+
false,
99+
(p) -> {
100+
return new Request((String) p[0]);
101+
}
102+
103+
);
104+
static {
105+
PARSER.declareString(constructorArg(), RULESET_ID_FIELD);
106+
}
107+
108+
public static Request parse(XContentParser parser, String name) {
109+
return PARSER.apply(parser, name);
110+
}
111+
82112
}
83113

84114
public static class Response extends ActionResponse implements ToXContentObject {
85115

86116
private final QueryRuleset queryRuleset;
117+
private static final ParseField QUERY_RULESET_FIELD = new ParseField("queryRuleset");
87118

88119
public Response(StreamInput in) throws IOException {
89120
super(in);
@@ -124,5 +155,17 @@ public boolean equals(Object o) {
124155
public int hashCode() {
125156
return Objects.hash(queryRuleset);
126157
}
158+
159+
private static final ConstructingObjectParser<Response, String> PARSER = new ConstructingObjectParser<>(
160+
"get_query_ruleset_response",
161+
p -> new Response((QueryRuleset) p[0])
162+
);
163+
static {
164+
PARSER.declareObject(constructorArg(), (p, c) -> QueryRuleset.fromXContent(c, p), QUERY_RULESET_FIELD);
165+
}
166+
167+
public static Response fromXContent(String resourceName, XContentParser parser) throws IOException {
168+
return new Response(QueryRuleset.fromXContent(resourceName, parser));
169+
}
127170
}
128171
}

x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/ListQueryRulesetsAction.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@
1515
import org.elasticsearch.common.io.stream.StreamOutput;
1616
import org.elasticsearch.common.xcontent.StatusToXContentObject;
1717
import org.elasticsearch.rest.RestStatus;
18+
import org.elasticsearch.xcontent.ConstructingObjectParser;
1819
import org.elasticsearch.xcontent.ParseField;
20+
import org.elasticsearch.xcontent.ToXContentObject;
1921
import org.elasticsearch.xcontent.XContentBuilder;
22+
import org.elasticsearch.xcontent.XContentParser;
2023
import org.elasticsearch.xpack.application.rules.QueryRulesetListItem;
2124
import org.elasticsearch.xpack.core.action.util.PageParams;
2225
import org.elasticsearch.xpack.core.action.util.QueryPage;
@@ -25,6 +28,8 @@
2528
import java.util.List;
2629
import java.util.Objects;
2730

31+
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
32+
2833
public class ListQueryRulesetsAction extends ActionType<ListQueryRulesetsAction.Response> {
2934

3035
public static final ListQueryRulesetsAction INSTANCE = new ListQueryRulesetsAction();
@@ -34,9 +39,11 @@ public ListQueryRulesetsAction() {
3439
super(NAME, ListQueryRulesetsAction.Response::new);
3540
}
3641

37-
public static class Request extends ActionRequest {
42+
public static class Request extends ActionRequest implements ToXContentObject {
3843
private final PageParams pageParams;
3944

45+
private static final ParseField PAGE_PARAMS_FIELD = new ParseField("pageParams");
46+
4047
public Request(StreamInput in) throws IOException {
4148
super(in);
4249
this.pageParams = new PageParams(in);
@@ -74,6 +81,27 @@ public boolean equals(Object o) {
7481
public int hashCode() {
7582
return Objects.hash(pageParams);
7683
}
84+
85+
private static final ConstructingObjectParser<Request, String> PARSER = new ConstructingObjectParser<>(
86+
"list_query_ruleset_request",
87+
p -> new Request((PageParams) p[0])
88+
);
89+
90+
static {
91+
PARSER.declareObject(constructorArg(), (p, c) -> PageParams.fromXContent(p), PAGE_PARAMS_FIELD);
92+
}
93+
94+
public static Request parse(XContentParser parser) {
95+
return PARSER.apply(parser, null);
96+
}
97+
98+
@Override
99+
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
100+
builder.startObject();
101+
builder.field(PAGE_PARAMS_FIELD.getPreferredName(), pageParams);
102+
builder.endObject();
103+
return builder;
104+
}
77105
}
78106

79107
public static class Response extends ActionResponse implements StatusToXContentObject {

x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetAction.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818
import org.elasticsearch.common.io.stream.StreamOutput;
1919
import org.elasticsearch.common.xcontent.StatusToXContentObject;
2020
import org.elasticsearch.rest.RestStatus;
21+
import org.elasticsearch.xcontent.ConstructingObjectParser;
22+
import org.elasticsearch.xcontent.ParseField;
23+
import org.elasticsearch.xcontent.ToXContentObject;
2124
import org.elasticsearch.xcontent.XContentBuilder;
25+
import org.elasticsearch.xcontent.XContentParser;
2226
import org.elasticsearch.xcontent.XContentType;
2327
import org.elasticsearch.xpack.application.rules.QueryRule;
2428
import org.elasticsearch.xpack.application.rules.QueryRuleset;
@@ -28,6 +32,7 @@
2832
import java.util.Objects;
2933

3034
import static org.elasticsearch.action.ValidateActions.addValidationError;
35+
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
3136

3237
public class PutQueryRulesetAction extends ActionType<PutQueryRulesetAction.Response> {
3338

@@ -38,9 +43,10 @@ public PutQueryRulesetAction() {
3843
super(NAME, PutQueryRulesetAction.Response::new);
3944
}
4045

41-
public static class Request extends ActionRequest {
46+
public static class Request extends ActionRequest implements ToXContentObject {
4247

4348
private final QueryRuleset queryRuleset;
49+
private static final ParseField QUERY_RULESET_FIELD = new ParseField("queryRuleset");
4450

4551
public Request(StreamInput in) throws IOException {
4652
super(in);
@@ -93,6 +99,25 @@ public boolean equals(Object o) {
9399
public int hashCode() {
94100
return Objects.hash(queryRuleset);
95101
}
102+
103+
@Override
104+
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
105+
return queryRuleset.toXContent(builder, params);
106+
}
107+
108+
private static final ConstructingObjectParser<Request, String> PARSER = new ConstructingObjectParser<>(
109+
"put_query_rules_request",
110+
p -> new Request((QueryRuleset) p[0])
111+
);
112+
113+
static {
114+
PARSER.declareObject(constructorArg(), (p, c) -> QueryRuleset.fromXContent(c, p), QUERY_RULESET_FIELD);
115+
}
116+
117+
public static PutQueryRulesetAction.Request fromXContent(String id, XContentParser parser) throws IOException {
118+
return new PutQueryRulesetAction.Request(QueryRuleset.fromXContent(id, parser));
119+
}
120+
96121
}
97122

98123
public static class Response extends ActionResponse implements StatusToXContentObject {

x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/analytics/action/PostAnalyticsEventResponseSerializingTests.java renamed to x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/analytics/action/PostAnalyticsEventResponseBWCSerializingTests.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77

88
package org.elasticsearch.xpack.application.analytics.action;
99

10+
import org.elasticsearch.TransportVersion;
1011
import org.elasticsearch.common.io.stream.Writeable;
11-
import org.elasticsearch.test.AbstractWireSerializingTestCase;
12+
import org.elasticsearch.xcontent.XContentParser;
13+
import org.elasticsearch.xpack.core.ml.AbstractBWCSerializationTestCase;
1214

1315
import java.io.IOException;
1416

15-
public class PostAnalyticsEventResponseSerializingTests extends AbstractWireSerializingTestCase<PostAnalyticsEventAction.Response> {
17+
public class PostAnalyticsEventResponseBWCSerializingTests extends AbstractBWCSerializationTestCase<PostAnalyticsEventAction.Response> {
1618
@Override
1719
protected Writeable.Reader<PostAnalyticsEventAction.Response> instanceReader() {
1820
return PostAnalyticsEventAction.Response::readFromStreamInput;
@@ -27,4 +29,17 @@ protected PostAnalyticsEventAction.Response createTestInstance() {
2729
protected PostAnalyticsEventAction.Response mutateInstance(PostAnalyticsEventAction.Response instance) throws IOException {
2830
return randomValueOtherThan(instance, this::createTestInstance);
2931
}
32+
33+
@Override
34+
protected PostAnalyticsEventAction.Response doParseInstance(XContentParser parser) throws IOException {
35+
return PostAnalyticsEventAction.Response.parse(parser);
36+
}
37+
38+
@Override
39+
protected PostAnalyticsEventAction.Response mutateInstanceForVersion(
40+
PostAnalyticsEventAction.Response instance,
41+
TransportVersion version
42+
) {
43+
return new PostAnalyticsEventAction.Response(instance.isAccepted());
44+
}
3045
}

x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/DeleteQueryRulesetActionRequestSerializingTests.java renamed to x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/DeleteQueryRulesetActionRequestBWCSerializingTests.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@
77

88
package org.elasticsearch.xpack.application.rules.action;
99

10+
import org.elasticsearch.TransportVersion;
1011
import org.elasticsearch.common.io.stream.Writeable;
11-
import org.elasticsearch.test.AbstractWireSerializingTestCase;
12+
import org.elasticsearch.xcontent.XContentParser;
13+
import org.elasticsearch.xpack.core.ml.AbstractBWCSerializationTestCase;
1214

13-
public class DeleteQueryRulesetActionRequestSerializingTests extends AbstractWireSerializingTestCase<DeleteQueryRulesetAction.Request> {
15+
import java.io.IOException;
16+
17+
public class DeleteQueryRulesetActionRequestBWCSerializingTests extends AbstractBWCSerializationTestCase<DeleteQueryRulesetAction.Request> {
1418

1519
@Override
1620
protected Writeable.Reader<DeleteQueryRulesetAction.Request> instanceReader() {
@@ -26,4 +30,17 @@ protected DeleteQueryRulesetAction.Request createTestInstance() {
2630
protected DeleteQueryRulesetAction.Request mutateInstance(DeleteQueryRulesetAction.Request instance) {
2731
return randomValueOtherThan(instance, this::createTestInstance);
2832
}
33+
34+
@Override
35+
protected DeleteQueryRulesetAction.Request doParseInstance(XContentParser parser) throws IOException {
36+
return DeleteQueryRulesetAction.Request.parse(parser);
37+
}
38+
39+
@Override
40+
protected DeleteQueryRulesetAction.Request mutateInstanceForVersion(
41+
DeleteQueryRulesetAction.Request instance,
42+
TransportVersion version
43+
) {
44+
return new DeleteQueryRulesetAction.Request(instance.rulesetId());
45+
}
2946
}

0 commit comments

Comments
 (0)