Skip to content

Commit 31e79a7

Browse files
author
Hendrik Muhs
committed
add HLRC protocol tests for transform state and stats (#40766)
adds HLRC protocol tests for state and stats hrlc clients
1 parent df65e46 commit 31e79a7

File tree

8 files changed

+163
-37
lines changed

8 files changed

+163
-37
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/core/IndexerJobStats.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ public abstract class IndexerJobStats {
4747
private final long indexFailures;
4848
private final long searchFailures;
4949

50-
public IndexerJobStats(long numPages, long numInputDocuments, long numOuputDocuments, long numInvocations,
50+
public IndexerJobStats(long numPages, long numInputDocuments, long numOutputDocuments, long numInvocations,
5151
long indexTime, long searchTime, long indexTotal, long searchTotal, long indexFailures, long searchFailures) {
5252
this.numPages = numPages;
5353
this.numInputDocuments = numInputDocuments;
54-
this.numOuputDocuments = numOuputDocuments;
54+
this.numOuputDocuments = numOutputDocuments;
5555
this.numInvocations = numInvocations;
5656
this.indexTime = indexTime;
5757
this.indexTotal = indexTotal;

client/rest-high-level/src/main/java/org/elasticsearch/client/dataframe/transforms/DataFrameIndexerTransformStats.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,25 @@
2929

3030
public class DataFrameIndexerTransformStats extends IndexerJobStats {
3131

32-
public static final ConstructingObjectParser<DataFrameIndexerTransformStats, Void> PARSER = new ConstructingObjectParser<>(
32+
public static final ConstructingObjectParser<DataFrameIndexerTransformStats, Void> LENIENT_PARSER = new ConstructingObjectParser<>(
3333
NAME, true, args -> new DataFrameIndexerTransformStats((long) args[0], (long) args[1], (long) args[2],
3434
(long) args[3], (long) args[4], (long) args[5], (long) args[6], (long) args[7], (long) args[8], (long) args[9]));
3535

3636
static {
37-
PARSER.declareLong(constructorArg(), NUM_PAGES);
38-
PARSER.declareLong(constructorArg(), NUM_INPUT_DOCUMENTS);
39-
PARSER.declareLong(constructorArg(), NUM_OUTPUT_DOCUMENTS);
40-
PARSER.declareLong(constructorArg(), NUM_INVOCATIONS);
41-
PARSER.declareLong(constructorArg(), INDEX_TIME_IN_MS);
42-
PARSER.declareLong(constructorArg(), SEARCH_TIME_IN_MS);
43-
PARSER.declareLong(constructorArg(), INDEX_TOTAL);
44-
PARSER.declareLong(constructorArg(), SEARCH_TOTAL);
45-
PARSER.declareLong(constructorArg(), INDEX_FAILURES);
46-
PARSER.declareLong(constructorArg(), SEARCH_FAILURES);
37+
LENIENT_PARSER.declareLong(constructorArg(), NUM_PAGES);
38+
LENIENT_PARSER.declareLong(constructorArg(), NUM_INPUT_DOCUMENTS);
39+
LENIENT_PARSER.declareLong(constructorArg(), NUM_OUTPUT_DOCUMENTS);
40+
LENIENT_PARSER.declareLong(constructorArg(), NUM_INVOCATIONS);
41+
LENIENT_PARSER.declareLong(constructorArg(), INDEX_TIME_IN_MS);
42+
LENIENT_PARSER.declareLong(constructorArg(), SEARCH_TIME_IN_MS);
43+
LENIENT_PARSER.declareLong(constructorArg(), INDEX_TOTAL);
44+
LENIENT_PARSER.declareLong(constructorArg(), SEARCH_TOTAL);
45+
LENIENT_PARSER.declareLong(constructorArg(), INDEX_FAILURES);
46+
LENIENT_PARSER.declareLong(constructorArg(), SEARCH_FAILURES);
4747
}
4848

4949
public static DataFrameIndexerTransformStats fromXContent(XContentParser parser) throws IOException {
50-
return PARSER.parse(parser, null);
50+
return LENIENT_PARSER.parse(parser, null);
5151
}
5252

5353
public DataFrameIndexerTransformStats(long numPages, long numInputDocuments, long numOuputDocuments,

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameIndexerTransformStats.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import static org.elasticsearch.common.xcontent.ConstructingObjectParser.optionalConstructorArg;
2424

2525
public class DataFrameIndexerTransformStats extends IndexerJobStats {
26-
private static final String DEFAULT_TRANSFORM_ID = "_all";
26+
public static final String DEFAULT_TRANSFORM_ID = "_all";
2727

2828
public static final String NAME = "data_frame_indexer_transform_stats";
2929
public static ParseField NUM_PAGES = new ParseField("pages_processed");
@@ -37,23 +37,25 @@ public class DataFrameIndexerTransformStats extends IndexerJobStats {
3737
public static ParseField SEARCH_FAILURES = new ParseField("search_failures");
3838
public static ParseField INDEX_FAILURES = new ParseField("index_failures");
3939

40-
public static final ConstructingObjectParser<DataFrameIndexerTransformStats, Void> PARSER = new ConstructingObjectParser<>(
41-
NAME, args -> new DataFrameIndexerTransformStats((String) args[0], (long) args[1], (long) args[2], (long) args[3],
42-
(long) args[4], (long) args[5], (long) args[6], (long) args[7], (long) args[8], (long) args[9], (long) args[10]));
40+
private static final ConstructingObjectParser<DataFrameIndexerTransformStats, Void> LENIENT_PARSER = new ConstructingObjectParser<>(
41+
NAME, true,
42+
args -> new DataFrameIndexerTransformStats(args[0] != null ? (String) args[0] : DEFAULT_TRANSFORM_ID,
43+
(long) args[1], (long) args[2], (long) args[3], (long) args[4], (long) args[5], (long) args[6], (long) args[7],
44+
(long) args[8], (long) args[9], (long) args[10]));
4345

4446
static {
45-
PARSER.declareString(optionalConstructorArg(), DataFrameField.ID);
46-
PARSER.declareLong(constructorArg(), NUM_PAGES);
47-
PARSER.declareLong(constructorArg(), NUM_INPUT_DOCUMENTS);
48-
PARSER.declareLong(constructorArg(), NUM_OUTPUT_DOCUMENTS);
49-
PARSER.declareLong(constructorArg(), NUM_INVOCATIONS);
50-
PARSER.declareLong(constructorArg(), INDEX_TIME_IN_MS);
51-
PARSER.declareLong(constructorArg(), SEARCH_TIME_IN_MS);
52-
PARSER.declareLong(constructorArg(), INDEX_TOTAL);
53-
PARSER.declareLong(constructorArg(), SEARCH_TOTAL);
54-
PARSER.declareLong(constructorArg(), INDEX_FAILURES);
55-
PARSER.declareLong(constructorArg(), SEARCH_FAILURES);
56-
PARSER.declareString(optionalConstructorArg(), DataFrameField.INDEX_DOC_TYPE);
47+
LENIENT_PARSER.declareString(optionalConstructorArg(), DataFrameField.ID);
48+
LENIENT_PARSER.declareLong(constructorArg(), NUM_PAGES);
49+
LENIENT_PARSER.declareLong(constructorArg(), NUM_INPUT_DOCUMENTS);
50+
LENIENT_PARSER.declareLong(constructorArg(), NUM_OUTPUT_DOCUMENTS);
51+
LENIENT_PARSER.declareLong(constructorArg(), NUM_INVOCATIONS);
52+
LENIENT_PARSER.declareLong(constructorArg(), INDEX_TIME_IN_MS);
53+
LENIENT_PARSER.declareLong(constructorArg(), SEARCH_TIME_IN_MS);
54+
LENIENT_PARSER.declareLong(constructorArg(), INDEX_TOTAL);
55+
LENIENT_PARSER.declareLong(constructorArg(), SEARCH_TOTAL);
56+
LENIENT_PARSER.declareLong(constructorArg(), INDEX_FAILURES);
57+
LENIENT_PARSER.declareLong(constructorArg(), SEARCH_FAILURES);
58+
LENIENT_PARSER.declareString(optionalConstructorArg(), DataFrameField.INDEX_DOC_TYPE);
5759
}
5860

5961
private final String transformId;
@@ -197,7 +199,7 @@ public int hashCode() {
197199

198200
public static DataFrameIndexerTransformStats fromXContent(XContentParser parser) {
199201
try {
200-
return PARSER.parse(parser, null);
202+
return LENIENT_PARSER.parse(parser, null);
201203
} catch (IOException e) {
202204
throw new RuntimeException(e);
203205
}

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransformStateAndStats.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package org.elasticsearch.xpack.core.dataframe.transforms;
88

99
import org.elasticsearch.common.ParseField;
10+
import org.elasticsearch.common.Strings;
1011
import org.elasticsearch.common.io.stream.StreamInput;
1112
import org.elasticsearch.common.io.stream.StreamOutput;
1213
import org.elasticsearch.common.io.stream.Writeable;
@@ -29,7 +30,7 @@ public class DataFrameTransformStateAndStats implements Writeable, ToXContentObj
2930
private final DataFrameIndexerTransformStats transformStats;
3031

3132
public static final ConstructingObjectParser<DataFrameTransformStateAndStats, Void> PARSER = new ConstructingObjectParser<>(
32-
NAME,
33+
NAME, true,
3334
a -> new DataFrameTransformStateAndStats((String) a[0], (DataFrameTransformState) a[1], (DataFrameIndexerTransformStats) a[2]));
3435

3536
static {
@@ -110,4 +111,9 @@ public DataFrameIndexerTransformStats getTransformStats() {
110111
public DataFrameTransformState getTransformState() {
111112
return transformState;
112113
}
114+
115+
@Override
116+
public String toString() {
117+
return Strings.toString(this);
118+
}
113119
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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.dataframe.transforms.hlrc;
8+
9+
import org.elasticsearch.common.xcontent.XContentParser;
10+
import org.elasticsearch.protocol.AbstractHlrcXContentTestCase;
11+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameIndexerTransformStats;
12+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameIndexerTransformStatsTests;
13+
14+
import java.io.IOException;
15+
16+
public class DataFrameIndexerTransformStatsHlrcTests extends AbstractHlrcXContentTestCase<
17+
DataFrameIndexerTransformStats,
18+
org.elasticsearch.client.dataframe.transforms.DataFrameIndexerTransformStats> {
19+
20+
public static DataFrameIndexerTransformStats fromHlrc(
21+
org.elasticsearch.client.dataframe.transforms.DataFrameIndexerTransformStats instance) {
22+
return DataFrameIndexerTransformStats.withDefaultTransformId(instance.getNumPages(), instance.getNumDocuments(),
23+
instance.getOutputDocuments(), instance.getNumInvocations(), instance.getIndexTime(), instance.getSearchTime(),
24+
instance.getIndexTotal(), instance.getSearchTotal(), instance.getIndexFailures(), instance.getSearchFailures());
25+
}
26+
27+
@Override
28+
public org.elasticsearch.client.dataframe.transforms.DataFrameIndexerTransformStats doHlrcParseInstance(XContentParser parser)
29+
throws IOException {
30+
return org.elasticsearch.client.dataframe.transforms.DataFrameIndexerTransformStats.fromXContent(parser);
31+
}
32+
33+
@Override
34+
public DataFrameIndexerTransformStats convertHlrcToInternal(
35+
org.elasticsearch.client.dataframe.transforms.DataFrameIndexerTransformStats instance) {
36+
return fromHlrc(instance);
37+
}
38+
39+
@Override
40+
protected DataFrameIndexerTransformStats createTestInstance() {
41+
return DataFrameIndexerTransformStatsTests.randomStats(DataFrameIndexerTransformStats.DEFAULT_TRANSFORM_ID);
42+
}
43+
44+
@Override
45+
protected DataFrameIndexerTransformStats doParseInstance(XContentParser parser) throws IOException {
46+
return DataFrameIndexerTransformStats.fromXContent(parser);
47+
}
48+
49+
@Override
50+
protected boolean supportsUnknownFields() {
51+
return true;
52+
}
53+
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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.dataframe.transforms.hlrc;
8+
9+
import org.elasticsearch.common.xcontent.XContentParser;
10+
import org.elasticsearch.protocol.AbstractHlrcXContentTestCase;
11+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameIndexerTransformStats;
12+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformStateAndStats;
13+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformStateAndStatsTests;
14+
15+
import java.io.IOException;
16+
import java.util.function.Predicate;
17+
18+
public class DataFrameTransformStateAndStatsHlrcTests extends AbstractHlrcXContentTestCase<DataFrameTransformStateAndStats,
19+
org.elasticsearch.client.dataframe.transforms.DataFrameTransformStateAndStats> {
20+
21+
@Override
22+
public org.elasticsearch.client.dataframe.transforms.DataFrameTransformStateAndStats doHlrcParseInstance(XContentParser parser)
23+
throws IOException {
24+
return org.elasticsearch.client.dataframe.transforms.DataFrameTransformStateAndStats.fromXContent(parser);
25+
}
26+
27+
@Override
28+
public DataFrameTransformStateAndStats convertHlrcToInternal(
29+
org.elasticsearch.client.dataframe.transforms.DataFrameTransformStateAndStats instance) {
30+
return new DataFrameTransformStateAndStats(instance.getId(),
31+
DataFrameTransformStateHlrcTests.fromHlrc(instance.getTransformState()),
32+
DataFrameIndexerTransformStatsHlrcTests.fromHlrc(instance.getTransformStats()));
33+
}
34+
35+
@Override
36+
protected DataFrameTransformStateAndStats createTestInstance() {
37+
// the transform id is not part of HLRC as it's only to a field for internal storage, therefore use a default id
38+
return DataFrameTransformStateAndStatsTests
39+
.randomDataFrameTransformStateAndStats(DataFrameIndexerTransformStats.DEFAULT_TRANSFORM_ID);
40+
}
41+
42+
@Override
43+
protected DataFrameTransformStateAndStats doParseInstance(XContentParser parser) throws IOException {
44+
return DataFrameTransformStateAndStats.PARSER.apply(parser, null);
45+
}
46+
47+
@Override
48+
protected boolean supportsUnknownFields() {
49+
return true;
50+
}
51+
52+
@Override
53+
protected Predicate<String> getRandomFieldsExcludeFilter() {
54+
return field -> field.equals("state.current_position");
55+
}
56+
}
57+
Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
package org.elasticsearch.xpack.core.dataframe.transforms;
7+
package org.elasticsearch.xpack.core.dataframe.transforms.hlrc;
88

99
import org.elasticsearch.common.xcontent.XContentParser;
1010
import org.elasticsearch.protocol.AbstractHlrcXContentTestCase;
11+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformState;
12+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformStateTests;
13+
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformTaskState;
1114
import org.elasticsearch.xpack.core.indexing.IndexerState;
1215

1316
import java.io.IOException;
@@ -16,6 +19,12 @@
1619
public class DataFrameTransformStateHlrcTests extends AbstractHlrcXContentTestCase<DataFrameTransformState,
1720
org.elasticsearch.client.dataframe.transforms.DataFrameTransformState> {
1821

22+
public static DataFrameTransformState fromHlrc(org.elasticsearch.client.dataframe.transforms.DataFrameTransformState instance) {
23+
return new DataFrameTransformState(DataFrameTransformTaskState.fromString(instance.getTaskState().value()),
24+
IndexerState.fromString(instance.getIndexerState().value()), instance.getPosition(), instance.getGeneration(),
25+
instance.getReason());
26+
}
27+
1928
@Override
2029
public org.elasticsearch.client.dataframe.transforms.DataFrameTransformState doHlrcParseInstance(XContentParser parser)
2130
throws IOException {
@@ -24,9 +33,7 @@ public org.elasticsearch.client.dataframe.transforms.DataFrameTransformState doH
2433

2534
@Override
2635
public DataFrameTransformState convertHlrcToInternal(org.elasticsearch.client.dataframe.transforms.DataFrameTransformState instance) {
27-
return new DataFrameTransformState(DataFrameTransformTaskState.fromString(instance.getTaskState().value()),
28-
IndexerState.fromString(instance.getIndexerState().value()),
29-
instance.getPosition(), instance.getGeneration(), instance.getReason());
36+
return fromHlrc(instance);
3037
}
3138

3239
@Override

x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/action/TransportGetDataFrameTransformsStatsAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ private static DataFrameIndexerTransformStats parseFromSource(BytesReference sou
214214
try (InputStream stream = source.streamInput();
215215
XContentParser parser = XContentFactory.xContent(XContentType.JSON)
216216
.createParser(NamedXContentRegistry.EMPTY, LoggingDeprecationHandler.INSTANCE, stream)) {
217-
return DataFrameIndexerTransformStats.PARSER.apply(parser, null);
217+
return DataFrameIndexerTransformStats.fromXContent(parser);
218218
}
219219
}
220220
}

0 commit comments

Comments
 (0)