2525import java .util .Set ;
2626
2727import static org .elasticsearch .cluster .metadata .DataStreamTestHelper .backingIndexEqualTo ;
28- import static org .hamcrest .Matchers .aMapWithSize ;
2928import static org .hamcrest .Matchers .containsInAnyOrder ;
3029import static org .hamcrest .Matchers .containsString ;
3130import static org .hamcrest .Matchers .empty ;
@@ -54,6 +53,7 @@ public class TsdbDataStreamRestIT extends DisabledSecurityDataStreamTestCase {
5453 "number_of_replicas": 1,
5554 "number_of_shards": 2,
5655 "mode": "time_series"
56+ SOURCEMODE
5757 }
5858 },
5959 "mappings":{
@@ -201,15 +201,35 @@ public class TsdbDataStreamRestIT extends DisabledSecurityDataStreamTestCase {
201201 {"@timestamp": "$now", "metricset": "pod", "k8s": {"pod": {"name": "elephant", "uid":"df3145b3-0563-4d3b-a0f7-897eb2876eb4", "ip": "10.10.55.3", "network": {"tx": 1434595272, "rx": 530605511}}}}
202202 """ ;
203203
204+ private static String getTemplate () {
205+ return TEMPLATE .replace ("SOURCEMODE" , randomFrom ("" , """
206+ , "mapping": { "source": { "mode": "stored" } }""" , """
207+ , "mapping": { "source": { "mode": "synthetic" } }""" ));
208+ }
209+
210+ private static boolean trialStarted = false ;
211+
204212 @ Before
205213 public void setup () throws IOException {
214+ if (trialStarted == false ) {
215+ // Start trial to support synthetic source.
216+ Request startTrial = new Request ("POST" , "/_license/start_trial" );
217+ startTrial .addParameter ("acknowledge" , "true" );
218+ try {
219+ client ().performRequest (startTrial );
220+ } catch (Exception e ) {
221+ // Ignore failures, the API is not present in Serverless.
222+ }
223+ trialStarted = true ;
224+ }
225+
206226 // Add component template:
207227 var request = new Request ("POST" , "/_component_template/custom_template" );
208228 request .setJsonEntity (COMPONENT_TEMPLATE );
209229 assertOK (client ().performRequest (request ));
210230 // Add composable index template
211231 request = new Request ("POST" , "/_index_template/1" );
212- request .setJsonEntity (TEMPLATE );
232+ request .setJsonEntity (getTemplate () );
213233 assertOK (client ().performRequest (request ));
214234 }
215235
@@ -220,7 +240,7 @@ public void testTsdbDataStreams() throws Exception {
220240 public void testTsdbDataStreamsNanos () throws Exception {
221241 // Overwrite template to use date_nanos field type:
222242 var putComposableIndexTemplateRequest = new Request ("POST" , "/_index_template/1" );
223- putComposableIndexTemplateRequest .setJsonEntity (TEMPLATE .replace ("date" , "date_nanos" ));
243+ putComposableIndexTemplateRequest .setJsonEntity (getTemplate () .replace ("date" , "date_nanos" ));
224244 assertOK (client ().performRequest (putComposableIndexTemplateRequest ));
225245
226246 assertTsdbDataStream ();
@@ -407,7 +427,6 @@ public void testSimulateTsdbDataStreamTemplate() throws Exception {
407427 var response = client ().performRequest (simulateIndexTemplateRequest );
408428 assertOK (response );
409429 var responseBody = entityAsMap (response );
410- assertThat (ObjectPath .evaluate (responseBody , "template.settings.index" ), aMapWithSize (6 ));
411430 assertThat (ObjectPath .evaluate (responseBody , "template.settings.index.number_of_shards" ), equalTo ("2" ));
412431 assertThat (ObjectPath .evaluate (responseBody , "template.settings.index.number_of_replicas" ), equalTo ("1" ));
413432 assertThat (ObjectPath .evaluate (responseBody , "template.settings.index.mode" ), equalTo ("time_series" ));
@@ -493,7 +512,7 @@ public void testMigrateRegularDataStreamToTsdbDataStream() throws Exception {
493512
494513 // Update template
495514 putComposableIndexTemplateRequest = new Request ("POST" , "/_index_template/1" );
496- putComposableIndexTemplateRequest .setJsonEntity (TEMPLATE );
515+ putComposableIndexTemplateRequest .setJsonEntity (getTemplate () );
497516 assertOK (client ().performRequest (putComposableIndexTemplateRequest ));
498517
499518 var rolloverRequest = new Request ("POST" , "/k8s/_rollover" );
0 commit comments