|
@@ -44,9 +44,13 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
|
|
|
public void testCreateDataStream() throws Exception {
|
|
|
final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService();
|
|
|
final String dataStreamName = "my-data-stream";
|
|
|
- ClusterState cs = ClusterState.builder(new ClusterName("_name")).build();
|
|
|
+ ComposableIndexTemplate template = new ComposableIndexTemplate(List.of(dataStreamName + "*"), null, null, null, null, null,
|
|
|
+ new ComposableIndexTemplate.DataStreamTemplate("@timestamp"));
|
|
|
+ ClusterState cs = ClusterState.builder(new ClusterName("_name"))
|
|
|
+ .metadata(Metadata.builder().put("template", template).build())
|
|
|
+ .build();
|
|
|
CreateDataStreamClusterStateUpdateRequest req =
|
|
|
- new CreateDataStreamClusterStateUpdateRequest(dataStreamName, "@timestamp", TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
ClusterState newState = MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req);
|
|
|
assertThat(newState.metadata().dataStreams().size(), equalTo(1));
|
|
|
assertThat(newState.metadata().dataStreams().get(dataStreamName).getName(), equalTo(dataStreamName));
|
|
@@ -63,7 +67,7 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
|
|
|
ClusterState cs = ClusterState.builder(new ClusterName("_name"))
|
|
|
.metadata(Metadata.builder().dataStreams(Map.of(dataStreamName, existingDataStream)).build()).build();
|
|
|
CreateDataStreamClusterStateUpdateRequest req =
|
|
|
- new CreateDataStreamClusterStateUpdateRequest(dataStreamName, "@timestamp", TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
|
|
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
|
|
|
() -> MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req));
|
|
@@ -75,7 +79,7 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
|
|
|
final String dataStreamName = "_My-da#ta- ,stream-";
|
|
|
ClusterState cs = ClusterState.builder(new ClusterName("_name")).build();
|
|
|
CreateDataStreamClusterStateUpdateRequest req =
|
|
|
- new CreateDataStreamClusterStateUpdateRequest(dataStreamName, "@timestamp", TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
|
|
|
() -> MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req));
|
|
|
assertThat(e.getMessage(), containsString("must not contain the following characters"));
|
|
@@ -86,7 +90,7 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
|
|
|
final String dataStreamName = "MAY_NOT_USE_UPPERCASE";
|
|
|
ClusterState cs = ClusterState.builder(new ClusterName("_name")).build();
|
|
|
CreateDataStreamClusterStateUpdateRequest req =
|
|
|
- new CreateDataStreamClusterStateUpdateRequest(dataStreamName, "@timestamp", TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
|
|
|
() -> MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req));
|
|
|
assertThat(e.getMessage(), containsString("data_stream [" + dataStreamName + "] must be lowercase"));
|
|
@@ -97,12 +101,39 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
|
|
|
final String dataStreamName = ".may_not_start_with_period";
|
|
|
ClusterState cs = ClusterState.builder(new ClusterName("_name")).build();
|
|
|
CreateDataStreamClusterStateUpdateRequest req =
|
|
|
- new CreateDataStreamClusterStateUpdateRequest(dataStreamName, "@timestamp", TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
|
|
|
() -> MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req));
|
|
|
assertThat(e.getMessage(), containsString("data_stream [" + dataStreamName + "] must not start with '.'"));
|
|
|
}
|
|
|
|
|
|
+ public void testCreateDataStreamNoTemplate() throws Exception {
|
|
|
+ final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService();
|
|
|
+ final String dataStreamName = "my-data-stream";
|
|
|
+ ClusterState cs = ClusterState.builder(new ClusterName("_name"))
|
|
|
+ .build();
|
|
|
+ CreateDataStreamClusterStateUpdateRequest req =
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ Exception e = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req));
|
|
|
+ assertThat(e.getMessage(), equalTo("no matching index template found for data stream [my-data-stream]"));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testCreateDataStreamNoValidTemplate() throws Exception {
|
|
|
+ final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService();
|
|
|
+ final String dataStreamName = "my-data-stream";
|
|
|
+ ComposableIndexTemplate template = new ComposableIndexTemplate(List.of(dataStreamName + "*"), null, null, null, null, null, null);
|
|
|
+ ClusterState cs = ClusterState.builder(new ClusterName("_name"))
|
|
|
+ .metadata(Metadata.builder().put("template", template).build())
|
|
|
+ .build();
|
|
|
+ CreateDataStreamClusterStateUpdateRequest req =
|
|
|
+ new CreateDataStreamClusterStateUpdateRequest(dataStreamName, TimeValue.ZERO, TimeValue.ZERO);
|
|
|
+ Exception e = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req));
|
|
|
+ assertThat(e.getMessage(),
|
|
|
+ equalTo("matching index template [template] for data stream [my-data-stream] has no data stream template"));
|
|
|
+ }
|
|
|
+
|
|
|
private static MetadataCreateIndexService getMetadataCreateIndexService() throws Exception {
|
|
|
MetadataCreateIndexService s = mock(MetadataCreateIndexService.class);
|
|
|
when(s.applyCreateIndexRequest(any(ClusterState.class), any(CreateIndexClusterStateUpdateRequest.class), anyBoolean()))
|