Skip to content

Commit a27784b

Browse files
authored
Refactor helper methods in DataStreamTestHelper (#130362)
For most of the usages of these methods, it made more sense to return a `ProjectMetadata` instead of a `ClusterState`. We also don't need to specify a specific project ID; generating a random one inside the helper method saves some boilerplate code.
1 parent 8f0e1f7 commit a27784b

File tree

20 files changed

+418
-562
lines changed

20 files changed

+418
-562
lines changed

modules/data-streams/src/test/java/org/elasticsearch/datastreams/DataStreamIndexSettingsProviderTests.java

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.elasticsearch.cluster.metadata.DataStream;
1212
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
1313
import org.elasticsearch.cluster.metadata.IndexMetadata;
14-
import org.elasticsearch.cluster.metadata.Metadata;
1514
import org.elasticsearch.cluster.metadata.ProjectMetadata;
1615
import org.elasticsearch.common.compress.CompressedXContent;
1716
import org.elasticsearch.common.settings.Settings;
@@ -53,7 +52,7 @@ public void setup() {
5352
}
5453

5554
public void testGetAdditionalIndexSettings() throws Exception {
56-
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
55+
ProjectMetadata projectMetadata = emptyProject();
5756
String dataStreamName = "logs-app1";
5857

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

9897
public void testGetAdditionalIndexSettingsIndexRoutingPathAlreadyDefined() throws Exception {
99-
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
98+
ProjectMetadata projectMetadata = emptyProject();
10099
String dataStreamName = "logs-app1";
101100

102101
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
@@ -140,7 +139,7 @@ public void testGetAdditionalIndexSettingsIndexRoutingPathAlreadyDefined() throw
140139
}
141140

142141
public void testGetAdditionalIndexSettingsMappingsMerging() throws Exception {
143-
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
142+
ProjectMetadata projectMetadata = emptyProject();
144143
String dataStreamName = "logs-app1";
145144

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

213212
public void testGetAdditionalIndexSettingsNoMappings() {
214-
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
213+
ProjectMetadata projectMetadata = emptyProject();
215214
String dataStreamName = "logs-app1";
216215

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

237236
public void testGetAdditionalIndexSettingsLookAheadTime() throws Exception {
238-
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
237+
ProjectMetadata projectMetadata = emptyProject();
239238
String dataStreamName = "logs-app1";
240239

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

262261
public void testGetAdditionalIndexSettingsLookBackTime() throws Exception {
263-
ProjectMetadata projectMetadata = Metadata.EMPTY_METADATA.getProject();
262+
ProjectMetadata projectMetadata = emptyProject();
264263
String dataStreamName = "logs-app1";
265264

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

291290
Instant sixHoursAgo = Instant.now().minus(6, ChronoUnit.HOURS).truncatedTo(ChronoUnit.SECONDS);
292291
Instant currentEnd = sixHoursAgo.plusMillis(lookAheadTime.getMillis());
293-
ProjectMetadata projectMetadata = DataStreamTestHelper.getClusterStateWithDataStream(
292+
ProjectMetadata projectMetadata = DataStreamTestHelper.getProjectWithDataStream(
293+
randomProjectIdOrDefault(),
294294
dataStreamName,
295295
List.of(new Tuple<>(sixHoursAgo, currentEnd))
296-
).getMetadata().getProject();
296+
);
297297

298298
Instant now = sixHoursAgo.plus(6, ChronoUnit.HOURS);
299299
Settings settings = Settings.EMPTY;
@@ -317,18 +317,18 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreated() throws Exce
317317
public void testGetAdditionalIndexSettingsDataStreamAlreadyCreatedTimeSettingsMissing() {
318318
String dataStreamName = "logs-app1";
319319
Instant twoHoursAgo = Instant.now().minus(4, ChronoUnit.HOURS).truncatedTo(ChronoUnit.MILLIS);
320-
Metadata.Builder mb = Metadata.builder(
321-
DataStreamTestHelper.getClusterStateWithDataStreams(
320+
ProjectMetadata.Builder projectBuilder = ProjectMetadata.builder(
321+
DataStreamTestHelper.getProjectWithDataStreams(
322322
List.of(Tuple.tuple(dataStreamName, 1)),
323323
List.of(),
324324
twoHoursAgo.toEpochMilli(),
325325
builder().build(),
326326
1
327-
).getMetadata()
327+
)
328328
);
329-
DataStream ds = mb.dataStream(dataStreamName);
330-
mb.put(ds.copy().setIndexMode(IndexMode.TIME_SERIES).build());
331-
ProjectMetadata projectMetadata = mb.build().getProject();
329+
DataStream ds = projectBuilder.dataStream(dataStreamName);
330+
projectBuilder.put(ds.copy().setIndexMode(IndexMode.TIME_SERIES).build());
331+
ProjectMetadata projectMetadata = projectBuilder.build();
332332

333333
Instant now = twoHoursAgo.plus(2, ChronoUnit.HOURS);
334334
Settings settings = Settings.EMPTY;
@@ -356,7 +356,7 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreatedTimeSettingsMi
356356
}
357357

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

362362
Settings settings = Settings.EMPTY;
@@ -377,10 +377,9 @@ public void testGetAdditionalIndexSettingsMigrateToTsdb() {
377377
String dataStreamName = "logs-app1";
378378
IndexMetadata idx = createFirstBackingIndex(dataStreamName).build();
379379
DataStream existingDataStream = newInstance(dataStreamName, List.of(idx.getIndex()));
380-
ProjectMetadata projectMetadata = Metadata.builder()
380+
ProjectMetadata projectMetadata = ProjectMetadata.builder(randomProjectIdOrDefault())
381381
.dataStreams(Map.of(dataStreamName, existingDataStream), Map.of())
382-
.build()
383-
.getProject();
382+
.build();
384383

385384
Settings settings = Settings.EMPTY;
386385
Settings result = provider.getAdditionalIndexSettings(
@@ -404,16 +403,13 @@ public void testGetAdditionalIndexSettingsMigrateToTsdb() {
404403
public void testGetAdditionalIndexSettingsDowngradeFromTsdb() {
405404
String dataStreamName = "logs-app1";
406405
Instant twoHoursAgo = Instant.now().minus(4, ChronoUnit.HOURS).truncatedTo(ChronoUnit.MILLIS);
407-
Metadata.Builder mb = Metadata.builder(
408-
DataStreamTestHelper.getClusterStateWithDataStreams(
409-
List.of(Tuple.tuple(dataStreamName, 1)),
410-
List.of(),
411-
twoHoursAgo.toEpochMilli(),
412-
builder().build(),
413-
1
414-
).getMetadata()
406+
ProjectMetadata projectMetadata = DataStreamTestHelper.getProjectWithDataStreams(
407+
List.of(Tuple.tuple(dataStreamName, 1)),
408+
List.of(),
409+
twoHoursAgo.toEpochMilli(),
410+
builder().build(),
411+
1
415412
);
416-
ProjectMetadata projectMetadata = mb.build().getProject();
417413

418414
Settings settings = Settings.EMPTY;
419415
Settings result = provider.getAdditionalIndexSettings(
@@ -691,7 +687,7 @@ public void testGenerateRoutingPathFromPassThroughObject() throws Exception {
691687
}
692688

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

modules/data-streams/src/test/java/org/elasticsearch/datastreams/UpdateTimeSeriesRangeServiceTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.apache.logging.log4j.core.appender.AbstractAppender;
1515
import org.apache.logging.log4j.core.filter.RegexFilter;
1616
import org.apache.logging.log4j.message.Message;
17+
import org.elasticsearch.cluster.ClusterName;
1718
import org.elasticsearch.cluster.ClusterState;
1819
import org.elasticsearch.cluster.metadata.DataStream;
1920
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
@@ -196,7 +197,8 @@ public void testUpdateTimeSeriesTemporalRange_NoUpdateBecauseReplicated() {
196197
public void testUpdateTimeSeriesTemporalRange_NoUpdateBecauseRegularDataStream() {
197198
String dataStreamName = "logs-app1";
198199
Instant now = Instant.now().truncatedTo(ChronoUnit.MILLIS);
199-
ClusterState in = DataStreamTestHelper.getClusterStateWithDataStreams(List.of(new Tuple<>(dataStreamName, 2)), List.of());
200+
final var project = DataStreamTestHelper.getProjectWithDataStreams(List.of(new Tuple<>(dataStreamName, 2)), List.of());
201+
ClusterState in = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(project).build();
200202

201203
now = now.plus(1, ChronoUnit.HOURS);
202204
ClusterState result = instance.updateTimeSeriesTemporalRange(in, now);

modules/data-streams/src/test/java/org/elasticsearch/datastreams/action/TransportDeleteDataStreamActionTests.java

Lines changed: 33 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010

1111
import org.elasticsearch.ResourceNotFoundException;
1212
import org.elasticsearch.action.datastreams.DeleteDataStreamAction;
13+
import org.elasticsearch.cluster.ClusterName;
1314
import org.elasticsearch.cluster.ClusterState;
1415
import org.elasticsearch.cluster.SnapshotsInProgress;
1516
import org.elasticsearch.cluster.metadata.DataStream;
1617
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
1718
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
1819
import org.elasticsearch.cluster.metadata.ProjectId;
20+
import org.elasticsearch.cluster.metadata.ProjectMetadata;
1921
import org.elasticsearch.common.Strings;
2022
import org.elasticsearch.common.collect.ImmutableOpenMap;
2123
import org.elasticsearch.common.settings.Settings;
@@ -47,61 +49,55 @@ public void testDeleteDataStream() {
4749
final String dataStreamName = "my-data-stream";
4850
final List<String> otherIndices = randomSubsetOf(List.of("foo", "bar", "baz"));
4951

50-
final var projectId = randomProjectIdOrDefault();
51-
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
52-
projectId,
53-
List.of(new Tuple<>(dataStreamName, 2)),
54-
otherIndices
55-
);
52+
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(List.of(new Tuple<>(dataStreamName, 2)), otherIndices);
5653
DeleteDataStreamAction.Request req = new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName });
5754
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
5855
iner,
59-
cs.projectState(projectId),
56+
projectStateFromProject(project),
6057
req,
6158
validator,
6259
Settings.EMPTY
6360
);
64-
assertThat(newState.metadata().getProject(projectId).dataStreams().size(), equalTo(0));
65-
assertThat(newState.metadata().getProject(projectId).indices().size(), equalTo(otherIndices.size()));
61+
final var newProject = newState.metadata().getProject(project.id());
62+
assertThat(newProject.dataStreams().size(), equalTo(0));
63+
assertThat(newProject.indices().size(), equalTo(otherIndices.size()));
6664
for (String indexName : otherIndices) {
67-
assertThat(newState.metadata().getProject(projectId).indices().get(indexName).getIndex().getName(), equalTo(indexName));
65+
assertThat(newProject.indices().get(indexName).getIndex().getName(), equalTo(indexName));
6866
}
6967
}
7068

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

75-
final var projectId = randomProjectIdOrDefault();
76-
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
77-
projectId,
73+
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
7874
List.of(new Tuple<>(dataStreamName, 2)),
7975
otherIndices,
8076
System.currentTimeMillis(),
8177
Settings.EMPTY,
8278
1,
83-
false
79+
false,
80+
true
8481
);
8582
DeleteDataStreamAction.Request req = new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName });
8683
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
8784
iner,
88-
cs.projectState(projectId),
85+
projectStateFromProject(project),
8986
req,
9087
validator,
9188
Settings.EMPTY
9289
);
93-
assertThat(newState.metadata().getProject(projectId).dataStreams().size(), equalTo(0));
94-
assertThat(newState.metadata().getProject(projectId).indices().size(), equalTo(otherIndices.size()));
90+
final var newProject = newState.metadata().getProject(project.id());
91+
assertThat(newProject.dataStreams().size(), equalTo(0));
92+
assertThat(newProject.indices().size(), equalTo(otherIndices.size()));
9593
for (String indexName : otherIndices) {
96-
assertThat(newState.metadata().getProject(projectId).indices().get(indexName).getIndex().getName(), equalTo(indexName));
94+
assertThat(newProject.indices().get(indexName).getIndex().getName(), equalTo(indexName));
9795
}
9896
}
9997

10098
public void testDeleteMultipleDataStreams() {
10199
String[] dataStreamNames = { "foo", "bar", "baz", "eggplant" };
102-
final var projectId = randomProjectIdOrDefault();
103-
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
104-
projectId,
100+
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
105101
List.of(
106102
new Tuple<>(dataStreamNames[0], randomIntBetween(1, 3)),
107103
new Tuple<>(dataStreamNames[1], randomIntBetween(1, 3)),
@@ -114,17 +110,18 @@ public void testDeleteMultipleDataStreams() {
114110
DeleteDataStreamAction.Request req = new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ba*", "eggplant" });
115111
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
116112
iner,
117-
cs.projectState(projectId),
113+
projectStateFromProject(project),
118114
req,
119115
validator,
120116
Settings.EMPTY
121117
);
122-
assertThat(newState.metadata().getProject(projectId).dataStreams().size(), equalTo(1));
123-
DataStream remainingDataStream = newState.metadata().getProject(projectId).dataStreams().get(dataStreamNames[0]);
118+
final var newProject = newState.metadata().getProject(project.id());
119+
assertThat(newProject.dataStreams().size(), equalTo(1));
120+
DataStream remainingDataStream = newProject.dataStreams().get(dataStreamNames[0]);
124121
assertNotNull(remainingDataStream);
125-
assertThat(newState.metadata().getProject(projectId).indices().size(), equalTo(remainingDataStream.getIndices().size()));
122+
assertThat(newProject.indices().size(), equalTo(remainingDataStream.getIndices().size()));
126123
for (Index i : remainingDataStream.getIndices()) {
127-
assertThat(newState.metadata().getProject(projectId).indices().get(i.getName()).getIndex(), equalTo(i));
124+
assertThat(newProject.indices().get(i.getName()).getIndex(), equalTo(i));
128125
}
129126
}
130127

@@ -133,12 +130,12 @@ public void testDeleteSnapshottingDataStream() {
133130
final String dataStreamName2 = "my-data-stream2";
134131
final List<String> otherIndices = randomSubsetOf(List.of("foo", "bar", "baz"));
135132

136-
final var projectId = randomProjectIdOrDefault();
137-
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
138-
projectId,
133+
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
139134
List.of(new Tuple<>(dataStreamName, 2), new Tuple<>(dataStreamName2, 2)),
140135
otherIndices
141136
);
137+
final var projectId = project.id();
138+
final ClusterState cs = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(project).build();
142139
SnapshotsInProgress snapshotsInProgress = SnapshotsInProgress.EMPTY.withAddedEntry(
143140
createEntry(dataStreamName, projectId, "repo1", false)
144141
).withAddedEntry(createEntry(dataStreamName2, projectId, "repo2", true));
@@ -180,9 +177,7 @@ private SnapshotsInProgress.Entry createEntry(String dataStreamName, ProjectId p
180177
public void testDeleteNonexistentDataStream() {
181178
final String dataStreamName = "my-data-stream";
182179
String[] dataStreamNames = { "foo", "bar", "baz", "eggplant" };
183-
final var projectId = randomProjectIdOrDefault();
184-
ClusterState cs = DataStreamTestHelper.getClusterStateWithDataStreams(
185-
projectId,
180+
ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
186181
List.of(
187182
new Tuple<>(dataStreamNames[0], randomIntBetween(1, 3)),
188183
new Tuple<>(dataStreamNames[1], randomIntBetween(1, 3)),
@@ -191,12 +186,13 @@ public void testDeleteNonexistentDataStream() {
191186
),
192187
List.of()
193188
);
189+
final ClusterState cs = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(project).build();
194190

195191
expectThrows(
196192
ResourceNotFoundException.class,
197193
() -> TransportDeleteDataStreamAction.removeDataStream(
198194
iner,
199-
cs.projectState(projectId),
195+
cs.projectState(project.id()),
200196
new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName }),
201197
validator,
202198
Settings.EMPTY
@@ -209,20 +205,15 @@ public void testDeleteNonexistentDataStream() {
209205
);
210206
ClusterState newState = TransportDeleteDataStreamAction.removeDataStream(
211207
iner,
212-
cs.projectState(projectId),
208+
cs.projectState(project.id()),
213209
req,
214210
validator,
215211
Settings.EMPTY
216212
);
217213
assertThat(newState, sameInstance(cs));
218-
assertThat(
219-
newState.metadata().getProject(projectId).dataStreams().size(),
220-
equalTo(cs.metadata().getProject(projectId).dataStreams().size())
221-
);
222-
assertThat(
223-
newState.metadata().getProject(projectId).dataStreams().keySet(),
224-
containsInAnyOrder(cs.metadata().getProject(projectId).dataStreams().keySet().toArray(Strings.EMPTY_ARRAY))
225-
);
214+
final var newProject = newState.metadata().getProject(project.id());
215+
assertThat(newProject.dataStreams().size(), equalTo(project.dataStreams().size()));
216+
assertThat(newProject.dataStreams().keySet(), containsInAnyOrder(project.dataStreams().keySet().toArray(Strings.EMPTY_ARRAY)));
226217
}
227218

228219
}

0 commit comments

Comments
 (0)