Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.elasticsearch.cluster.metadata.DataStream;
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
import org.elasticsearch.cluster.metadata.IndexMetadata;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.ProjectMetadata;
import org.elasticsearch.common.compress.CompressedXContent;
import org.elasticsearch.common.settings.Settings;
Expand Down Expand Up @@ -53,7 +52,7 @@ public void setup() {
}

public void testGetAdditionalIndexSettings() throws Exception {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Expand Down Expand Up @@ -96,7 +95,7 @@ public void testGetAdditionalIndexSettings() throws Exception {
}

public void testGetAdditionalIndexSettingsIndexRoutingPathAlreadyDefined() throws Exception {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Expand Down Expand Up @@ -140,7 +139,7 @@ public void testGetAdditionalIndexSettingsIndexRoutingPathAlreadyDefined() throw
}

public void testGetAdditionalIndexSettingsMappingsMerging() throws Exception {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Expand Down Expand Up @@ -211,7 +210,7 @@ public void testGetAdditionalIndexSettingsMappingsMerging() throws Exception {
}

public void testGetAdditionalIndexSettingsNoMappings() {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Expand All @@ -235,7 +234,7 @@ public void testGetAdditionalIndexSettingsNoMappings() {
}

public void testGetAdditionalIndexSettingsLookAheadTime() throws Exception {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Expand All @@ -260,7 +259,7 @@ public void testGetAdditionalIndexSettingsLookAheadTime() throws Exception {
}

public void testGetAdditionalIndexSettingsLookBackTime() throws Exception {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Expand Down Expand Up @@ -290,10 +289,11 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreated() throws Exce

Instant sixHoursAgo = Instant.now().minus(6, ChronoUnit.HOURS).truncatedTo(ChronoUnit.SECONDS);
Instant currentEnd = sixHoursAgo.plusMillis(lookAheadTime.getMillis());
ProjectMetadata projectMetadata = DataStreamTestHelper.getClusterStateWithDataStream(
ProjectMetadata projectMetadata = DataStreamTestHelper.getProjectWithDataStream(
randomProjectIdOrDefault(),
dataStreamName,
List.of(new Tuple<>(sixHoursAgo, currentEnd))
).getMetadata().getProject();
);

Instant now = sixHoursAgo.plus(6, ChronoUnit.HOURS);
Settings settings = Settings.EMPTY;
Expand All @@ -317,18 +317,18 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreated() throws Exce
public void testGetAdditionalIndexSettingsDataStreamAlreadyCreatedTimeSettingsMissing() {
String dataStreamName = "logs-app1";
Instant twoHoursAgo = Instant.now().minus(4, ChronoUnit.HOURS).truncatedTo(ChronoUnit.MILLIS);
Metadata.Builder mb = Metadata.builder(
DataStreamTestHelper.getClusterStateWithDataStreams(
ProjectMetadata.Builder projectBuilder = ProjectMetadata.builder(
DataStreamTestHelper.getProjectWithDataStreams(
List.of(Tuple.tuple(dataStreamName, 1)),
List.of(),
twoHoursAgo.toEpochMilli(),
builder().build(),
1
).getMetadata()
)
);
DataStream ds = mb.dataStream(dataStreamName);
mb.put(ds.copy().setIndexMode(IndexMode.TIME_SERIES).build());
ProjectMetadata projectMetadata = mb.build().getProject();
DataStream ds = projectBuilder.dataStream(dataStreamName);
projectBuilder.put(ds.copy().setIndexMode(IndexMode.TIME_SERIES).build());
ProjectMetadata projectMetadata = projectBuilder.build();

Instant now = twoHoursAgo.plus(2, ChronoUnit.HOURS);
Settings settings = Settings.EMPTY;
Expand Down Expand Up @@ -356,7 +356,7 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreatedTimeSettingsMi
}

public void testGetAdditionalIndexSettingsNonTsdbTemplate() {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";

Settings settings = Settings.EMPTY;
Expand All @@ -377,10 +377,9 @@ public void testGetAdditionalIndexSettingsMigrateToTsdb() {
String dataStreamName = "logs-app1";
IndexMetadata idx = createFirstBackingIndex(dataStreamName).build();
DataStream existingDataStream = newInstance(dataStreamName, List.of(idx.getIndex()));
ProjectMetadata projectMetadata = Metadata.builder()
ProjectMetadata projectMetadata = ProjectMetadata.builder(randomProjectIdOrDefault())
.dataStreams(Map.of(dataStreamName, existingDataStream), Map.of())
.build()
.getProject();
.build();

Settings settings = Settings.EMPTY;
Settings result = provider.getAdditionalIndexSettings(
Expand All @@ -404,16 +403,13 @@ public void testGetAdditionalIndexSettingsMigrateToTsdb() {
public void testGetAdditionalIndexSettingsDowngradeFromTsdb() {
String dataStreamName = "logs-app1";
Instant twoHoursAgo = Instant.now().minus(4, ChronoUnit.HOURS).truncatedTo(ChronoUnit.MILLIS);
Metadata.Builder mb = Metadata.builder(
DataStreamTestHelper.getClusterStateWithDataStreams(
List.of(Tuple.tuple(dataStreamName, 1)),
List.of(),
twoHoursAgo.toEpochMilli(),
builder().build(),
1
).getMetadata()
ProjectMetadata projectMetadata = DataStreamTestHelper.getProjectWithDataStreams(
List.of(Tuple.tuple(dataStreamName, 1)),
List.of(),
twoHoursAgo.toEpochMilli(),
builder().build(),
1
);
ProjectMetadata projectMetadata = mb.build().getProject();

Settings settings = Settings.EMPTY;
Settings result = provider.getAdditionalIndexSettings(
Expand Down Expand Up @@ -691,7 +687,7 @@ public void testGenerateRoutingPathFromPassThroughObject() throws Exception {
}

private Settings generateTsdbSettings(String mapping, Instant now) throws IOException {
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
ProjectMetadata projectMetadata = emptyProject();
String dataStreamName = "logs-app1";
Settings settings = Settings.EMPTY;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.core.filter.RegexFilter;
import org.apache.logging.log4j.message.Message;
import org.elasticsearch.cluster.ClusterName;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.DataStream;
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
Expand Down Expand Up @@ -196,7 +197,8 @@ public void testUpdateTimeSeriesTemporalRange_NoUpdateBecauseReplicated() {
public void testUpdateTimeSeriesTemporalRange_NoUpdateBecauseRegularDataStream() {
String dataStreamName = "logs-app1";
Instant now = Instant.now().truncatedTo(ChronoUnit.MILLIS);
ClusterState in = DataStreamTestHelper.getClusterStateWithDataStreams(List.of(new Tuple<>(dataStreamName, 2)), List.of());
final var project = DataStreamTestHelper.getProjectWithDataStreams(List.of(new Tuple<>(dataStreamName, 2)), List.of());
ClusterState in = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(project).build();

now = now.plus(1, ChronoUnit.HOURS);
ClusterState result = instance.updateTimeSeriesTemporalRange(in, now);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@

import org.elasticsearch.ResourceNotFoundException;
import org.elasticsearch.action.datastreams.DeleteDataStreamAction;
import org.elasticsearch.cluster.ClusterName;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.SnapshotsInProgress;
import org.elasticsearch.cluster.metadata.DataStream;
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.ProjectMetadata;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.collect.ImmutableOpenMap;
import org.elasticsearch.common.settings.Settings;
Expand Down Expand Up @@ -46,61 +48,55 @@ public void testDeleteDataStream() {
final String dataStreamName = "my-data-stream";
final List<String> otherIndices = randomSubsetOf(List.of("foo", "bar", "baz"));

final var projectId = randomProjectIdOrDefault();
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
projectId,
List.of(new Tuple<>(dataStreamName, 2)),
otherIndices
);
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(List.of(new Tuple<>(dataStreamName, 2)), otherIndices);
DeleteDataStreamAction.Request req = new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName });
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
iner,
cs.projectState(projectId),
projectStateFromProject(project),
req,
validator,
Settings.EMPTY
);
assertThat(newState.metadata().getProject(projectId).dataStreams().size(), equalTo(0));
assertThat(newState.metadata().getProject(projectId).indices().size(), equalTo(otherIndices.size()));
final var newProject = newState.metadata().getProject(project.id());
assertThat(newProject.dataStreams().size(), equalTo(0));
assertThat(newProject.indices().size(), equalTo(otherIndices.size()));
for (String indexName : otherIndices) {
assertThat(newState.metadata().getProject(projectId).indices().get(indexName).getIndex().getName(), equalTo(indexName));
assertThat(newProject.indices().get(indexName).getIndex().getName(), equalTo(indexName));
}
}

public void testDeleteDataStreamWithFailureStore() {
final String dataStreamName = "my-data-stream";
final List<String> otherIndices = randomSubsetOf(List.of("foo", "bar", "baz"));

final var projectId = randomProjectIdOrDefault();
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
projectId,
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
List.of(new Tuple<>(dataStreamName, 2)),
otherIndices,
System.currentTimeMillis(),
Settings.EMPTY,
1,
false
false,
true
);
DeleteDataStreamAction.Request req = new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName });
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
iner,
cs.projectState(projectId),
projectStateFromProject(project),
req,
validator,
Settings.EMPTY
);
assertThat(newState.metadata().getProject(projectId).dataStreams().size(), equalTo(0));
assertThat(newState.metadata().getProject(projectId).indices().size(), equalTo(otherIndices.size()));
final var newProject = newState.metadata().getProject(project.id());
assertThat(newProject.dataStreams().size(), equalTo(0));
assertThat(newProject.indices().size(), equalTo(otherIndices.size()));
for (String indexName : otherIndices) {
assertThat(newState.metadata().getProject(projectId).indices().get(indexName).getIndex().getName(), equalTo(indexName));
assertThat(newProject.indices().get(indexName).getIndex().getName(), equalTo(indexName));
}
}

public void testDeleteMultipleDataStreams() {
String[] dataStreamNames = { "foo", "bar", "baz", "eggplant" };
final var projectId = randomProjectIdOrDefault();
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
projectId,
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
List.of(
new Tuple<>(dataStreamNames[0], randomIntBetween(1, 3)),
new Tuple<>(dataStreamNames[1], randomIntBetween(1, 3)),
Expand All @@ -113,17 +109,18 @@ public void testDeleteMultipleDataStreams() {
DeleteDataStreamAction.Request req = new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ba*", "eggplant" });
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
iner,
cs.projectState(projectId),
projectStateFromProject(project),
req,
validator,
Settings.EMPTY
);
assertThat(newState.metadata().getProject(projectId).dataStreams().size(), equalTo(1));
DataStream remainingDataStream = newState.metadata().getProject(projectId).dataStreams().get(dataStreamNames[0]);
final var newProject = newState.metadata().getProject(project.id());
assertThat(newProject.dataStreams().size(), equalTo(1));
DataStream remainingDataStream = newProject.dataStreams().get(dataStreamNames[0]);
assertNotNull(remainingDataStream);
assertThat(newState.metadata().getProject(projectId).indices().size(), equalTo(remainingDataStream.getIndices().size()));
assertThat(newProject.indices().size(), equalTo(remainingDataStream.getIndices().size()));
for (Index i : remainingDataStream.getIndices()) {
assertThat(newState.metadata().getProject(projectId).indices().get(i.getName()).getIndex(), equalTo(i));
assertThat(newProject.indices().get(i.getName()).getIndex(), equalTo(i));
}
}

Expand All @@ -132,12 +129,12 @@ public void testDeleteSnapshottingDataStream() {
final String dataStreamName2 = "my-data-stream2";
final List<String> otherIndices = randomSubsetOf(List.of("foo", "bar", "baz"));

final var projectId = randomProjectIdOrDefault();
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
projectId,
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
List.of(new Tuple<>(dataStreamName, 2), new Tuple<>(dataStreamName2, 2)),
otherIndices
);
final var projectId = project.id();
final ClusterState cs = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(project).build();
SnapshotsInProgress snapshotsInProgress = SnapshotsInProgress.EMPTY.withAddedEntry(createEntry(dataStreamName, "repo1", false))
.withAddedEntry(createEntry(dataStreamName2, "repo2", true));
ClusterState snapshotCs = ClusterState.builder(cs).putCustom(SnapshotsInProgress.TYPE, snapshotsInProgress).build();
Expand Down Expand Up @@ -178,9 +175,7 @@ private SnapshotsInProgress.Entry createEntry(String dataStreamName, String repo
public void testDeleteNonexistentDataStream() {
final String dataStreamName = "my-data-stream";
String[] dataStreamNames = { "foo", "bar", "baz", "eggplant" };
final var projectId = randomProjectIdOrDefault();
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
projectId,
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
List.of(
new Tuple<>(dataStreamNames[0], randomIntBetween(1, 3)),
new Tuple<>(dataStreamNames[1], randomIntBetween(1, 3)),
Expand All @@ -189,12 +184,13 @@ public void testDeleteNonexistentDataStream() {
),
List.of()
);
final ClusterState cs = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(project).build();

expectThrows(
ResourceNotFoundException.class,
() -> TransportDeleteDataStreamAction.removeDataStream(
iner,
cs.projectState(projectId),
cs.projectState(project.id()),
new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName }),
validator,
Settings.EMPTY
Expand All @@ -207,20 +203,15 @@ public void testDeleteNonexistentDataStream() {
);
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
iner,
cs.projectState(projectId),
cs.projectState(project.id()),
req,
validator,
Settings.EMPTY
);
assertThat(newState, sameInstance(cs));
assertThat(
newState.metadata().getProject(projectId).dataStreams().size(),
equalTo(cs.metadata().getProject(projectId).dataStreams().size())
);
assertThat(
newState.metadata().getProject(projectId).dataStreams().keySet(),
containsInAnyOrder(cs.metadata().getProject(projectId).dataStreams().keySet().toArray(Strings.EMPTY_ARRAY))
);
final var newProject = newState.metadata().getProject(project.id());
assertThat(newProject.dataStreams().size(), equalTo(project.dataStreams().size()));
assertThat(newProject.dataStreams().keySet(), containsInAnyOrder(project.dataStreams().keySet().toArray(Strings.EMPTY_ARRAY)));
}

}
Loading