Skip to content

Commit 7b1f978

Browse files
authored
Move data stream test (#56505) (#56570)
Move data stream resolvability test from IndicesOptionsIntegrationIT to DataStreamIT class. Whether a transport action supports data streams is no longer controlled via indices options.
1 parent 2d08ef7 commit 7b1f978

File tree

2 files changed

+125
-110
lines changed

2 files changed

+125
-110
lines changed

server/src/internalClusterTest/java/org/elasticsearch/indices/DataStreamIT.java

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
* specific language governing permissions and limitations
1717
* under the License.
1818
*/
19-
2019
package org.elasticsearch.indices;
2120

21+
import org.elasticsearch.action.ActionRequestBuilder;
2222
import org.elasticsearch.action.DocWriteRequest;
2323
import org.elasticsearch.action.admin.indices.datastream.CreateDataStreamAction;
2424
import org.elasticsearch.action.admin.indices.datastream.DeleteDataStreamAction;
@@ -28,12 +28,17 @@
2828
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
2929
import org.elasticsearch.action.admin.indices.rollover.RolloverRequest;
3030
import org.elasticsearch.action.admin.indices.rollover.RolloverResponse;
31+
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequestBuilder;
32+
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
3133
import org.elasticsearch.action.bulk.BulkRequest;
3234
import org.elasticsearch.action.bulk.BulkResponse;
3335
import org.elasticsearch.action.delete.DeleteRequest;
3436
import org.elasticsearch.action.index.IndexRequest;
3537
import org.elasticsearch.action.index.IndexResponse;
38+
import org.elasticsearch.action.search.MultiSearchRequestBuilder;
39+
import org.elasticsearch.action.search.MultiSearchResponse;
3640
import org.elasticsearch.action.search.SearchRequest;
41+
import org.elasticsearch.action.search.SearchRequestBuilder;
3742
import org.elasticsearch.action.search.SearchResponse;
3843
import org.elasticsearch.action.update.UpdateRequest;
3944
import org.elasticsearch.cluster.metadata.DataStream;
@@ -46,7 +51,22 @@
4651
import java.util.Comparator;
4752
import java.util.List;
4853

54+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT._flush;
55+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.clearCache;
56+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.getAliases;
57+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.getFieldMapping;
58+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.getMapping;
59+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.getSettings;
60+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.health;
61+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.indicesStats;
62+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.msearch;
63+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.refreshBuilder;
64+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.search;
65+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.segments;
66+
import static org.elasticsearch.indices.IndicesOptionsIntegrationIT.validateQuery;
67+
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
4968
import static org.hamcrest.Matchers.equalTo;
69+
import static org.hamcrest.Matchers.instanceOf;
5070
import static org.hamcrest.Matchers.is;
5171
import static org.hamcrest.Matchers.notNullValue;
5272

@@ -179,6 +199,96 @@ public void testOtherWriteOps() throws Exception {
179199
}
180200
}
181201

202+
public void testDataStreamsResolvability() {
203+
String dataStreamName = "logs-foobar";
204+
CreateDataStreamAction.Request request = new CreateDataStreamAction.Request(dataStreamName);
205+
request.setTimestampFieldName("ts");
206+
client().admin().indices().createDataStream(request).actionGet();
207+
208+
verifyResolvability(dataStreamName, client().prepareIndex(dataStreamName, "_doc")
209+
.setSource("{}", XContentType.JSON)
210+
.setOpType(DocWriteRequest.OpType.CREATE),
211+
false);
212+
verifyResolvability(dataStreamName, refreshBuilder(dataStreamName), false);
213+
verifyResolvability(dataStreamName, search(dataStreamName), false, 1);
214+
verifyResolvability(dataStreamName, msearch(null, dataStreamName), false);
215+
verifyResolvability(dataStreamName, clearCache(dataStreamName), false);
216+
verifyResolvability(dataStreamName, _flush(dataStreamName),false);
217+
verifyResolvability(dataStreamName, segments(dataStreamName), false);
218+
verifyResolvability(dataStreamName, indicesStats(dataStreamName), false);
219+
verifyResolvability(dataStreamName, IndicesOptionsIntegrationIT.forceMerge(dataStreamName), false);
220+
verifyResolvability(dataStreamName, validateQuery(dataStreamName), false);
221+
verifyResolvability(dataStreamName, client().admin().indices().prepareUpgrade(dataStreamName), false);
222+
verifyResolvability(dataStreamName, client().admin().indices().prepareRecoveries(dataStreamName), false);
223+
verifyResolvability(dataStreamName, client().admin().indices().prepareUpgradeStatus(dataStreamName), false);
224+
verifyResolvability(dataStreamName, getAliases(dataStreamName), true);
225+
verifyResolvability(dataStreamName, getFieldMapping(dataStreamName), true);
226+
verifyResolvability(dataStreamName, getMapping(dataStreamName), true);
227+
verifyResolvability(dataStreamName, getSettings(dataStreamName), true);
228+
verifyResolvability(dataStreamName, health(dataStreamName), false);
229+
230+
request = new CreateDataStreamAction.Request("logs-barbaz");
231+
request.setTimestampFieldName("ts");
232+
client().admin().indices().createDataStream(request).actionGet();
233+
verifyResolvability("logs-barbaz", client().prepareIndex("logs-barbaz", "_doc")
234+
.setSource("{}", XContentType.JSON)
235+
.setOpType(DocWriteRequest.OpType.CREATE),
236+
false);
237+
238+
String wildcardExpression = "logs*";
239+
verifyResolvability(wildcardExpression, refreshBuilder(wildcardExpression), false);
240+
verifyResolvability(wildcardExpression, search(wildcardExpression), false, 2);
241+
verifyResolvability(wildcardExpression, msearch(null, wildcardExpression), false);
242+
verifyResolvability(wildcardExpression, clearCache(wildcardExpression), false);
243+
verifyResolvability(wildcardExpression, _flush(wildcardExpression),false);
244+
verifyResolvability(wildcardExpression, segments(wildcardExpression), false);
245+
verifyResolvability(wildcardExpression, indicesStats(wildcardExpression), false);
246+
verifyResolvability(wildcardExpression, IndicesOptionsIntegrationIT.forceMerge(wildcardExpression), false);
247+
verifyResolvability(wildcardExpression, validateQuery(wildcardExpression), false);
248+
verifyResolvability(wildcardExpression, client().admin().indices().prepareUpgrade(wildcardExpression), false);
249+
verifyResolvability(wildcardExpression, client().admin().indices().prepareRecoveries(wildcardExpression), false);
250+
verifyResolvability(wildcardExpression, client().admin().indices().prepareUpgradeStatus(wildcardExpression), false);
251+
verifyResolvability(wildcardExpression, getAliases(wildcardExpression), true);
252+
verifyResolvability(wildcardExpression, getFieldMapping(wildcardExpression), true);
253+
verifyResolvability(wildcardExpression, getMapping(wildcardExpression), true);
254+
verifyResolvability(wildcardExpression, getSettings(wildcardExpression), true);
255+
verifyResolvability(wildcardExpression, health(wildcardExpression), false);
256+
}
257+
258+
private static void verifyResolvability(String dataStream, ActionRequestBuilder requestBuilder, boolean fail) {
259+
verifyResolvability(dataStream, requestBuilder, fail, 0);
260+
}
261+
262+
private static void verifyResolvability(String dataStream, ActionRequestBuilder requestBuilder, boolean fail, long expectedCount) {
263+
if (fail) {
264+
String expectedErrorMessage = "The provided expression [" + dataStream +
265+
"] matches a data stream, specify the corresponding concrete indices instead.";
266+
if (requestBuilder instanceof MultiSearchRequestBuilder) {
267+
MultiSearchResponse multiSearchResponse = ((MultiSearchRequestBuilder) requestBuilder).get();
268+
assertThat(multiSearchResponse.getResponses().length, equalTo(1));
269+
assertThat(multiSearchResponse.getResponses()[0].isFailure(), is(true));
270+
assertThat(multiSearchResponse.getResponses()[0].getFailure(), instanceOf(IllegalArgumentException.class));
271+
assertThat(multiSearchResponse.getResponses()[0].getFailure().getMessage(), equalTo(expectedErrorMessage));
272+
} else if (requestBuilder instanceof ValidateQueryRequestBuilder) {
273+
ValidateQueryResponse response = (ValidateQueryResponse) requestBuilder.get();
274+
assertThat(response.getQueryExplanation().get(0).getError(), equalTo(expectedErrorMessage));
275+
} else {
276+
Exception e = expectThrows(IllegalArgumentException.class, requestBuilder::get);
277+
assertThat(e.getMessage(), equalTo(expectedErrorMessage));
278+
}
279+
} else {
280+
if (requestBuilder instanceof SearchRequestBuilder) {
281+
SearchRequestBuilder searchRequestBuilder = (SearchRequestBuilder) requestBuilder;
282+
assertHitCount(searchRequestBuilder.get(), expectedCount);
283+
} else if (requestBuilder instanceof MultiSearchRequestBuilder) {
284+
MultiSearchResponse multiSearchResponse = ((MultiSearchRequestBuilder) requestBuilder).get();
285+
assertThat(multiSearchResponse.getResponses()[0].isFailure(), is(false));
286+
} else {
287+
requestBuilder.get();
288+
}
289+
}
290+
}
291+
182292
private static void indexDocs(String dataStream, int numDocs) {
183293
BulkRequest bulkRequest = new BulkRequest();
184294
for (int i = 0; i < numDocs; i++) {

0 commit comments

Comments
 (0)