Skip to content

Commit 81c0f17

Browse files
davidkylekcm
authored andcommitted
Leniently parse ml persistent task parameters (#33950)
1 parent b4b7267 commit 81c0f17

File tree

6 files changed

+97
-18
lines changed

6 files changed

+97
-18
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/OpenJobAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public static class JobParams implements XPackPlugin.XPackPersistentTaskParams {
134134
public static final ParseField IGNORE_DOWNTIME = new ParseField("ignore_downtime");
135135

136136
public static final ParseField TIMEOUT = new ParseField("timeout");
137-
public static ObjectParser<JobParams, Void> PARSER = new ObjectParser<>(TASK_NAME, JobParams::new);
137+
public static ObjectParser<JobParams, Void> PARSER = new ObjectParser<>(TASK_NAME, true, JobParams::new);
138138

139139
static {
140140
PARSER.declareString(JobParams::setJobId, Job.ID);

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/StartDatafeedAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public boolean equals(Object obj) {
141141

142142
public static class DatafeedParams implements XPackPlugin.XPackPersistentTaskParams {
143143

144-
public static ObjectParser<DatafeedParams, Void> PARSER = new ObjectParser<>(TASK_NAME, DatafeedParams::new);
144+
public static ObjectParser<DatafeedParams, Void> PARSER = new ObjectParser<>(TASK_NAME, true, DatafeedParams::new);
145145

146146
static {
147147
PARSER.declareString((params, datafeedId) -> params.datafeedId = datafeedId, DatafeedConfig.ID);
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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+
7+
package org.elasticsearch.xpack.core.ml.action;
8+
9+
import org.elasticsearch.common.io.stream.Writeable;
10+
import org.elasticsearch.common.unit.TimeValue;
11+
import org.elasticsearch.common.xcontent.XContentParser;
12+
import org.elasticsearch.test.AbstractSerializingTestCase;
13+
14+
import java.io.IOException;
15+
16+
public class DatafeedParamsTests extends AbstractSerializingTestCase<StartDatafeedAction.DatafeedParams> {
17+
@Override
18+
protected StartDatafeedAction.DatafeedParams doParseInstance(XContentParser parser) throws IOException {
19+
return StartDatafeedAction.DatafeedParams.parseRequest(null, parser);
20+
}
21+
22+
public static StartDatafeedAction.DatafeedParams createDatafeedParams() {
23+
StartDatafeedAction.DatafeedParams params =
24+
new StartDatafeedAction.DatafeedParams(randomAlphaOfLength(10), randomNonNegativeLong());
25+
if (randomBoolean()) {
26+
params.setEndTime(randomNonNegativeLong());
27+
}
28+
if (randomBoolean()) {
29+
params.setTimeout(TimeValue.timeValueMillis(randomNonNegativeLong()));
30+
}
31+
return params;
32+
}
33+
34+
@Override
35+
protected StartDatafeedAction.DatafeedParams createTestInstance() {
36+
return createDatafeedParams();
37+
}
38+
39+
@Override
40+
protected Writeable.Reader<StartDatafeedAction.DatafeedParams> instanceReader() {
41+
return StartDatafeedAction.DatafeedParams::new;
42+
}
43+
44+
@Override
45+
protected boolean supportsUnknownFields() {
46+
return true;
47+
}
48+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+
7+
package org.elasticsearch.xpack.core.ml.action;
8+
9+
import org.elasticsearch.common.io.stream.Writeable;
10+
import org.elasticsearch.common.unit.TimeValue;
11+
import org.elasticsearch.common.xcontent.XContentParser;
12+
import org.elasticsearch.test.AbstractSerializingTestCase;
13+
14+
import java.io.IOException;
15+
16+
public class JobParamsTests extends AbstractSerializingTestCase<OpenJobAction.JobParams> {
17+
18+
@Override
19+
protected OpenJobAction.JobParams doParseInstance(XContentParser parser) throws IOException {
20+
return OpenJobAction.JobParams.parseRequest(null, parser);
21+
}
22+
23+
public static OpenJobAction.JobParams createJobParams() {
24+
OpenJobAction.JobParams params = new OpenJobAction.JobParams(randomAlphaOfLengthBetween(1, 20));
25+
if (randomBoolean()) {
26+
params.setTimeout(TimeValue.timeValueMillis(randomNonNegativeLong()));
27+
}
28+
return params;
29+
}
30+
31+
@Override
32+
protected OpenJobAction.JobParams createTestInstance() {
33+
return createJobParams();
34+
}
35+
36+
@Override
37+
protected Writeable.Reader<OpenJobAction.JobParams> instanceReader() {
38+
return OpenJobAction.JobParams::new;
39+
}
40+
41+
@Override
42+
protected boolean supportsUnknownFields() {
43+
return true;
44+
}
45+
}

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/OpenJobActionRequestTests.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66
package org.elasticsearch.xpack.core.ml.action;
77

8-
import org.elasticsearch.common.unit.TimeValue;
98
import org.elasticsearch.common.xcontent.XContentParser;
109
import org.elasticsearch.test.AbstractStreamableXContentTestCase;
1110
import org.elasticsearch.xpack.core.ml.action.OpenJobAction.Request;
@@ -14,11 +13,7 @@ public class OpenJobActionRequestTests extends AbstractStreamableXContentTestCas
1413

1514
@Override
1615
protected Request createTestInstance() {
17-
OpenJobAction.JobParams params = new OpenJobAction.JobParams(randomAlphaOfLengthBetween(1, 20));
18-
if (randomBoolean()) {
19-
params.setTimeout(TimeValue.timeValueMillis(randomNonNegativeLong()));
20-
}
21-
return new Request(params);
16+
return new Request(JobParamsTests.createJobParams());
2217
}
2318

2419
@Override

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/StartDatafeedActionRequestTests.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
package org.elasticsearch.xpack.core.ml.action;
77

88
import org.elasticsearch.ElasticsearchParseException;
9-
import org.elasticsearch.common.unit.TimeValue;
109
import org.elasticsearch.common.xcontent.XContentParser;
1110
import org.elasticsearch.test.AbstractStreamableXContentTestCase;
12-
import org.elasticsearch.xpack.core.ml.action.StartDatafeedAction.DatafeedParams;
1311
import org.elasticsearch.xpack.core.ml.action.StartDatafeedAction.Request;
1412

1513
import static org.hamcrest.Matchers.equalTo;
@@ -18,14 +16,7 @@ public class StartDatafeedActionRequestTests extends AbstractStreamableXContentT
1816

1917
@Override
2018
protected Request createTestInstance() {
21-
DatafeedParams params = new DatafeedParams(randomAlphaOfLength(10), randomNonNegativeLong());
22-
if (randomBoolean()) {
23-
params.setEndTime(randomNonNegativeLong());
24-
}
25-
if (randomBoolean()) {
26-
params.setTimeout(TimeValue.timeValueMillis(randomNonNegativeLong()));
27-
}
28-
return new Request(params);
19+
return new Request(DatafeedParamsTests.createDatafeedParams());
2920
}
3021

3122
@Override

0 commit comments

Comments
 (0)