Skip to content

Commit e23f767

Browse files
committed
Fix test adding sampling method when there are no rounds
1 parent 67dd8ea commit e23f767

File tree

2 files changed

+18
-23
lines changed

2 files changed

+18
-23
lines changed

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

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.elasticsearch.common.settings.IndexScopedSettings;
2626
import org.elasticsearch.common.settings.Settings;
2727
import org.elasticsearch.core.TimeValue;
28-
import org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures;
2928
import org.elasticsearch.env.Environment;
3029
import org.elasticsearch.index.IndexSettingProviders;
3130
import org.elasticsearch.indices.EmptySystemIndices;
@@ -44,6 +43,8 @@
4443
import static org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.composeDataLifecycles;
4544
import static org.elasticsearch.common.settings.Settings.builder;
4645
import static org.elasticsearch.datastreams.MetadataDataStreamRolloverServiceTests.createSettingsProvider;
46+
import static org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures.randomResettable;
47+
import static org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures.randomSamplingMethod;
4748
import static org.elasticsearch.indices.ShardLimitValidator.SETTING_CLUSTER_MAX_SHARDS_PER_NODE;
4849
import static org.hamcrest.Matchers.containsString;
4950
import static org.hamcrest.Matchers.equalTo;
@@ -154,7 +155,7 @@ public void testLifecycleComposition() {
154155
true,
155156
randomRetention(),
156157
downsamplingRounds,
157-
randomSamplingMethod(downsamplingRounds)
158+
randomResettable(() -> randomSamplingMethod(downsamplingRounds.get()))
158159
);
159160
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle);
160161
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
@@ -167,11 +168,12 @@ public void testLifecycleComposition() {
167168
// If the last lifecycle is missing a property (apart from enabled) we keep the latest from the previous ones
168169
// Enabled is always true unless it's explicitly set to false
169170
{
171+
List<DataStreamLifecycle.DownsamplingRound> downsamplingRounds = randomRounds();
170172
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.createDataLifecycleTemplate(
171173
false,
172174
randomPositiveTimeValue(),
173-
randomRounds(),
174-
DataStreamLifecycleFixtures.randomSamplingMethod()
175+
downsamplingRounds,
176+
randomSamplingMethod(downsamplingRounds)
175177
);
176178
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle, DataStreamLifecycle.Template.DATA_DEFAULT);
177179
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
@@ -300,18 +302,4 @@ private static ResettableValue<List<DataStreamLifecycle.DownsamplingRound>> rand
300302
default -> throw new IllegalStateException("Unknown randomisation path");
301303
};
302304
}
303-
304-
private static ResettableValue<DownsampleConfig.SamplingMethod> randomSamplingMethod(
305-
ResettableValue<List<DataStreamLifecycle.DownsamplingRound>> rounds
306-
) {
307-
if (rounds.get() == null) {
308-
return randomBoolean() ? ResettableValue.undefined() : ResettableValue.reset();
309-
} else {
310-
return randomBoolean() ? ResettableValue.create(DataStreamLifecycleFixtures.randomSamplingMethod()) : ResettableValue.reset();
311-
}
312-
}
313-
314-
private static DownsampleConfig.SamplingMethod randomSamplingMethod(List<DataStreamLifecycle.DownsamplingRound> rounds) {
315-
return rounds == null ? null : DataStreamLifecycleFixtures.randomSamplingMethod();
316-
}
317305
}

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,18 @@ static void putComposableIndexTemplate(
145145
}
146146

147147
static DataStreamLifecycle.Template randomDataLifecycleTemplate() {
148+
ResettableValue<List<DataStreamLifecycle.DownsamplingRound>> downsampling = randomResettable(
149+
DataStreamLifecycleFixtures::randomDownsamplingRounds
150+
);
148151
return DataStreamLifecycle.createDataLifecycleTemplate(
149152
frequently(),
150153
randomResettable(ESTestCase::randomTimeValue),
151-
randomResettable(DataStreamLifecycleFixtures::randomDownsamplingRounds),
152-
randomResettable(DataStreamLifecycleFixtures::randomSamplingMethod)
154+
downsampling,
155+
randomResettable(() -> randomSamplingMethod(downsampling.get()))
153156
);
154157
}
155158

156-
private static <T> ResettableValue<T> randomResettable(Supplier<T> supplier) {
159+
public static <T> ResettableValue<T> randomResettable(Supplier<T> supplier) {
157160
return switch (randomIntBetween(0, 2)) {
158161
case 0 -> ResettableValue.undefined();
159162
case 1 -> ResettableValue.reset();
@@ -184,8 +187,12 @@ private static DataStreamLifecycle.DownsamplingRound nextRound(DataStreamLifecyc
184187
return new DataStreamLifecycle.DownsamplingRound(after, fixedInterval);
185188
}
186189

187-
public static DownsampleConfig.SamplingMethod randomSamplingMethod() {
188-
if (between(0, DownsampleConfig.SamplingMethod.values().length) == 0) {
190+
/**
191+
* In order to produce valid data stream lifecycle configurations, the sampling method can be defined only when
192+
* the downsampling rounds are also defined.
193+
*/
194+
public static DownsampleConfig.SamplingMethod randomSamplingMethod(List<DataStreamLifecycle.DownsamplingRound> downsamplingRounds) {
195+
if (downsamplingRounds == null || between(0, DownsampleConfig.SamplingMethod.values().length) == 0) {
189196
return null;
190197
} else {
191198
return randomFrom(DownsampleConfig.SamplingMethod.values());

0 commit comments

Comments
 (0)