Skip to content

Commit 1d383f6

Browse files
committed
Add downsampling method to the data stream lifecycle config
1 parent 3195327 commit 1d383f6

File tree

13 files changed

+250
-48
lines changed

13 files changed

+250
-48
lines changed

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.elasticsearch.common.settings.IndexScopedSettings;
2525
import org.elasticsearch.common.settings.Settings;
2626
import org.elasticsearch.core.TimeValue;
27+
import org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures;
2728
import org.elasticsearch.env.Environment;
2829
import org.elasticsearch.index.IndexSettingProviders;
2930
import org.elasticsearch.indices.EmptySystemIndices;
@@ -150,7 +151,8 @@ public void testLifecycleComposition() {
150151
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.createDataLifecycleTemplate(
151152
true,
152153
randomRetention(),
153-
randomDownsampling()
154+
randomDownsampling(),
155+
ResettableValue.create(DataStreamLifecycleFixtures.randomSamplingMethod())
154156
);
155157
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle);
156158
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
@@ -165,7 +167,8 @@ public void testLifecycleComposition() {
165167
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.createDataLifecycleTemplate(
166168
false,
167169
randomPositiveTimeValue(),
168-
randomRounds()
170+
randomRounds(),
171+
DataStreamLifecycleFixtures.randomSamplingMethod()
169172
);
170173
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle, DataStreamLifecycle.Template.DATA_DEFAULT);
171174
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
@@ -178,12 +181,14 @@ public void testLifecycleComposition() {
178181
DataStreamLifecycle.Template lifecycle1 = DataStreamLifecycle.createDataLifecycleTemplate(
179182
false,
180183
randomPositiveTimeValue(),
181-
randomRounds()
184+
randomRounds(),
185+
DataStreamLifecycleFixtures.randomSamplingMethod()
182186
);
183187
DataStreamLifecycle.Template lifecycle2 = DataStreamLifecycle.createDataLifecycleTemplate(
184188
true,
185189
randomPositiveTimeValue(),
186-
randomRounds()
190+
randomRounds(),
191+
DataStreamLifecycleFixtures.randomSamplingMethod()
187192
);
188193
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle1, lifecycle2);
189194
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public void testResponseIlmAndDataStreamLifecycleRepresentation() throws Excepti
154154
.setGeneration(3)
155155
.setAllowCustomRouting(true)
156156
.setIndexMode(IndexMode.STANDARD)
157-
.setLifecycle(DataStreamLifecycle.createDataLifecycle(false, null, null))
157+
.setLifecycle(DataStreamLifecycle.createDataLifecycle(false, null, null, null))
158158
.setDataStreamOptions(DataStreamOptions.FAILURE_STORE_ENABLED)
159159
.setFailureIndices(DataStream.DataStreamIndices.failureIndicesBuilder(failureStores).build())
160160
.build();

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.elasticsearch.action.admin.indices.rollover.MaxAgeCondition;
1313
import org.elasticsearch.action.admin.indices.rollover.RolloverInfo;
1414
import org.elasticsearch.action.admin.indices.template.put.TransportPutComposableIndexTemplateAction;
15+
import org.elasticsearch.action.downsample.DownsampleConfig;
1516
import org.elasticsearch.cluster.metadata.ComposableIndexTemplate;
1617
import org.elasticsearch.cluster.metadata.DataStream;
1718
import org.elasticsearch.cluster.metadata.DataStreamFailureStore;
@@ -37,6 +38,7 @@
3738

3839
import static org.elasticsearch.cluster.metadata.DataStreamTestHelper.newInstance;
3940
import static org.elasticsearch.test.ESIntegTestCase.client;
41+
import static org.elasticsearch.test.ESTestCase.between;
4042
import static org.elasticsearch.test.ESTestCase.frequently;
4143
import static org.elasticsearch.test.ESTestCase.randomIntBetween;
4244
import static org.junit.Assert.assertTrue;
@@ -145,7 +147,8 @@ static DataStreamLifecycle.Template randomDataLifecycleTemplate() {
145147
return DataStreamLifecycle.createDataLifecycleTemplate(
146148
frequently(),
147149
randomResettable(ESTestCase::randomTimeValue),
148-
randomResettable(DataStreamLifecycleFixtures::randomDownsamplingRounds)
150+
randomResettable(DataStreamLifecycleFixtures::randomDownsamplingRounds),
151+
randomResettable(DataStreamLifecycleFixtures::randomSamplingMethod)
149152
);
150153
}
151154

@@ -179,4 +182,13 @@ private static DataStreamLifecycle.DownsamplingRound nextRound(DataStreamLifecyc
179182
var fixedInterval = new DateHistogramInterval((previous.fixedInterval().estimateMillis() * randomIntBetween(2, 5)) + "ms");
180183
return new DataStreamLifecycle.DownsamplingRound(after, fixedInterval);
181184
}
185+
186+
public static DownsampleConfig.SamplingMethod randomSamplingMethod() {
187+
return switch (between(0, 2)) {
188+
case 0 -> null;
189+
case 1 -> DownsampleConfig.SamplingMethod.AGGREGATE;
190+
case 2 -> DownsampleConfig.SamplingMethod.LAST_VALUE;
191+
default -> throw new IllegalStateException("Unknown randomisation path");
192+
};
193+
}
182194
}

0 commit comments

Comments
 (0)