|
@@ -18,21 +18,19 @@
|
|
|
*/
|
|
|
package org.elasticsearch.action.admin.indices.datastream;
|
|
|
|
|
|
-import org.elasticsearch.ResourceNotFoundException;
|
|
|
import org.elasticsearch.action.admin.indices.datastream.GetDataStreamAction.Request;
|
|
|
import org.elasticsearch.cluster.ClusterName;
|
|
|
import org.elasticsearch.cluster.ClusterState;
|
|
|
-import org.elasticsearch.cluster.DataStreamTestHelper;
|
|
|
import org.elasticsearch.cluster.metadata.DataStream;
|
|
|
-import org.elasticsearch.cluster.metadata.IndexMetadata;
|
|
|
-import org.elasticsearch.cluster.metadata.Metadata;
|
|
|
+import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
|
|
|
+import org.elasticsearch.common.collect.Tuple;
|
|
|
import org.elasticsearch.common.io.stream.Writeable;
|
|
|
+import org.elasticsearch.index.IndexNotFoundException;
|
|
|
import org.elasticsearch.test.AbstractWireSerializingTestCase;
|
|
|
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
|
|
|
-import static org.elasticsearch.cluster.DataStreamTestHelper.createTimestampField;
|
|
|
+import static org.elasticsearch.action.admin.indices.datastream.DeleteDataStreamRequestTests.getClusterStateWithDataStreams;
|
|
|
import static org.hamcrest.Matchers.containsString;
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
|
|
@@ -45,16 +43,20 @@ public class GetDataStreamsRequestTests extends AbstractWireSerializingTestCase<
|
|
|
|
|
|
@Override
|
|
|
protected Request createTestInstance() {
|
|
|
- final String searchParameter;
|
|
|
+ final String[] searchParameter;
|
|
|
switch (randomIntBetween(1, 4)) {
|
|
|
case 1:
|
|
|
- searchParameter = randomAlphaOfLength(8);
|
|
|
+ searchParameter = generateRandomStringArray(3, 8, false, false);
|
|
|
break;
|
|
|
case 2:
|
|
|
- searchParameter = randomAlphaOfLength(8) + "*";
|
|
|
+ String[] parameters = generateRandomStringArray(3, 8, false, false);
|
|
|
+ for (int k = 0; k < parameters.length; k++) {
|
|
|
+ parameters[k] = parameters[k] + "*";
|
|
|
+ }
|
|
|
+ searchParameter = parameters;
|
|
|
break;
|
|
|
case 3:
|
|
|
- searchParameter = "*";
|
|
|
+ searchParameter = new String[]{"*"};
|
|
|
break;
|
|
|
default:
|
|
|
searchParameter = null;
|
|
@@ -65,58 +67,75 @@ public class GetDataStreamsRequestTests extends AbstractWireSerializingTestCase<
|
|
|
|
|
|
public void testGetDataStream() {
|
|
|
final String dataStreamName = "my-data-stream";
|
|
|
- IndexMetadata idx = DataStreamTestHelper.createFirstBackingIndex(dataStreamName).build();
|
|
|
- DataStream existingDataStream =
|
|
|
- new DataStream(dataStreamName, createTimestampField("@timestamp"), List.of(idx.getIndex()));
|
|
|
- ClusterState cs = ClusterState.builder(new ClusterName("_name"))
|
|
|
- .metadata(Metadata.builder().dataStreams(Map.of(dataStreamName, existingDataStream)).build()).build();
|
|
|
- GetDataStreamAction.Request req = new GetDataStreamAction.Request(dataStreamName);
|
|
|
- List<DataStream> dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, req);
|
|
|
+ ClusterState cs = getClusterStateWithDataStreams(
|
|
|
+ List.of(new Tuple<>(dataStreamName, 1)), List.of());
|
|
|
+ GetDataStreamAction.Request req = new GetDataStreamAction.Request(new String[]{dataStreamName});
|
|
|
+ List<DataStream> dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
assertThat(dataStreams.size(), equalTo(1));
|
|
|
assertThat(dataStreams.get(0).getName(), equalTo(dataStreamName));
|
|
|
}
|
|
|
|
|
|
public void testGetDataStreamsWithWildcards() {
|
|
|
final String[] dataStreamNames = {"my-data-stream", "another-data-stream"};
|
|
|
- IndexMetadata idx1 = DataStreamTestHelper.createFirstBackingIndex(dataStreamNames[0]).build();
|
|
|
- IndexMetadata idx2 = DataStreamTestHelper.createFirstBackingIndex(dataStreamNames[1]).build();
|
|
|
-
|
|
|
- DataStream ds1 = new DataStream(dataStreamNames[0], createTimestampField("@timestamp"), List.of(idx1.getIndex()));
|
|
|
- DataStream ds2 = new DataStream(dataStreamNames[1], createTimestampField("@timestamp"), List.of(idx2.getIndex()));
|
|
|
- ClusterState cs = ClusterState.builder(new ClusterName("_name"))
|
|
|
- .metadata(Metadata.builder().dataStreams(
|
|
|
- Map.of(dataStreamNames[0], ds1, dataStreamNames[1], ds2)).build())
|
|
|
- .build();
|
|
|
-
|
|
|
- GetDataStreamAction.Request req = new GetDataStreamAction.Request(dataStreamNames[1].substring(0, 5) + "*");
|
|
|
- List<DataStream> dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, req);
|
|
|
+ ClusterState cs = getClusterStateWithDataStreams(
|
|
|
+ List.of(new Tuple<>(dataStreamNames[0], 1), new Tuple<>(dataStreamNames[1], 1)), List.of());
|
|
|
+
|
|
|
+ GetDataStreamAction.Request req = new GetDataStreamAction.Request(new String[]{dataStreamNames[1].substring(0, 5) + "*"});
|
|
|
+ List<DataStream> dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
assertThat(dataStreams.size(), equalTo(1));
|
|
|
assertThat(dataStreams.get(0).getName(), equalTo(dataStreamNames[1]));
|
|
|
|
|
|
- req = new GetDataStreamAction.Request("*");
|
|
|
- dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, req);
|
|
|
+ req = new GetDataStreamAction.Request(new String[]{"*"});
|
|
|
+ dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
assertThat(dataStreams.size(), equalTo(2));
|
|
|
assertThat(dataStreams.get(0).getName(), equalTo(dataStreamNames[1]));
|
|
|
assertThat(dataStreams.get(1).getName(), equalTo(dataStreamNames[0]));
|
|
|
|
|
|
- req = new GetDataStreamAction.Request((String) null);
|
|
|
- dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, req);
|
|
|
+ req = new GetDataStreamAction.Request((String[]) null);
|
|
|
+ dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
assertThat(dataStreams.size(), equalTo(2));
|
|
|
assertThat(dataStreams.get(0).getName(), equalTo(dataStreamNames[1]));
|
|
|
assertThat(dataStreams.get(1).getName(), equalTo(dataStreamNames[0]));
|
|
|
|
|
|
- req = new GetDataStreamAction.Request("matches-none*");
|
|
|
- dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, req);
|
|
|
+ req = new GetDataStreamAction.Request(new String[]{"matches-none*"});
|
|
|
+ dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
assertThat(dataStreams.size(), equalTo(0));
|
|
|
}
|
|
|
|
|
|
+ public void testGetDataStreamsWithoutWildcards() {
|
|
|
+ final String[] dataStreamNames = {"my-data-stream", "another-data-stream"};
|
|
|
+ ClusterState cs = getClusterStateWithDataStreams(
|
|
|
+ List.of(new Tuple<>(dataStreamNames[0], 1), new Tuple<>(dataStreamNames[1], 1)), List.of());
|
|
|
+
|
|
|
+ GetDataStreamAction.Request req = new GetDataStreamAction.Request(new String[]{dataStreamNames[0], dataStreamNames[1]});
|
|
|
+ List<DataStream> dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
+ assertThat(dataStreams.size(), equalTo(2));
|
|
|
+ assertThat(dataStreams.get(0).getName(), equalTo(dataStreamNames[1]));
|
|
|
+ assertThat(dataStreams.get(1).getName(), equalTo(dataStreamNames[0]));
|
|
|
+
|
|
|
+ req = new GetDataStreamAction.Request(new String[]{dataStreamNames[1]});
|
|
|
+ dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
+ assertThat(dataStreams.size(), equalTo(1));
|
|
|
+ assertThat(dataStreams.get(0).getName(), equalTo(dataStreamNames[1]));
|
|
|
+
|
|
|
+ req = new GetDataStreamAction.Request(new String[]{dataStreamNames[0]});
|
|
|
+ dataStreams = GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req);
|
|
|
+ assertThat(dataStreams.size(), equalTo(1));
|
|
|
+ assertThat(dataStreams.get(0).getName(), equalTo(dataStreamNames[0]));
|
|
|
+
|
|
|
+ GetDataStreamAction.Request req2 = new GetDataStreamAction.Request(new String[]{"foo"});
|
|
|
+ IndexNotFoundException e = expectThrows(IndexNotFoundException.class,
|
|
|
+ () -> GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req2));
|
|
|
+ assertThat(e.getMessage(), containsString("no such index [foo]"));
|
|
|
+ }
|
|
|
+
|
|
|
public void testGetNonexistentDataStream() {
|
|
|
final String dataStreamName = "my-data-stream";
|
|
|
ClusterState cs = ClusterState.builder(new ClusterName("_name")).build();
|
|
|
- GetDataStreamAction.Request req = new GetDataStreamAction.Request(dataStreamName);
|
|
|
- ResourceNotFoundException e = expectThrows(ResourceNotFoundException.class,
|
|
|
- () -> GetDataStreamAction.TransportAction.getDataStreams(cs, req));
|
|
|
- assertThat(e.getMessage(), containsString("data_stream matching [" + dataStreamName + "] not found"));
|
|
|
+ GetDataStreamAction.Request req = new GetDataStreamAction.Request(new String[]{dataStreamName});
|
|
|
+ IndexNotFoundException e = expectThrows(IndexNotFoundException.class,
|
|
|
+ () -> GetDataStreamAction.TransportAction.getDataStreams(cs, new IndexNameExpressionResolver(), req));
|
|
|
+ assertThat(e.getMessage(), containsString("no such index [" + dataStreamName + "]"));
|
|
|
}
|
|
|
|
|
|
}
|