@@ -331,6 +331,71 @@ public void testUpdateAnomalyDetector_disableFlattenResultIndex_shouldDeletePipe
331
331
assertEquals ("Expected 404 response but got: " + statusCode , 404 , statusCode );
332
332
}
333
333
334
+ public void testUpdateAnomalyDetectorFlattenResultIndexField () throws Exception {
335
+ TestHelpers .createIndexWithTimeField (client (), INDEX_NAME , TIME_FIELD , false );
336
+ String testIndexData = "{\" keyword-field\" : \" field-1\" , \" ip-field\" : \" 1.2.3.4\" , \" timestamp\" : 1}" ;
337
+ TestHelpers .ingestDataToIndex (client (), INDEX_NAME , TestHelpers .toHttpEntity (testIndexData ));
338
+ AnomalyDetector detector = TestHelpers
339
+ .randomDetector (
340
+ ImmutableList .of (TestHelpers .randomFeature ("feature_bytes" , "agg" , true )),
341
+ INDEX_NAME ,
342
+ 5 ,
343
+ TIME_FIELD ,
344
+ null ,
345
+ ADCommonName .CUSTOM_RESULT_INDEX_PREFIX + "test"
346
+ );
347
+ Response response = TestHelpers
348
+ .makeRequest (client (), "POST" , TestHelpers .AD_BASE_DETECTORS_URI , ImmutableMap .of (), TestHelpers .toHttpEntity (detector ), null );
349
+ assertEquals ("Create anomaly detector failed" , RestStatus .CREATED , TestHelpers .restStatus (response ));
350
+ Map <String , Object > responseMap = entityAsMap (response );
351
+ String id = (String ) responseMap .get ("_id" );
352
+ List <Feature > features = detector .getFeatureAttributes ();
353
+ long expectedFeatures = features .stream ().filter (Feature ::getEnabled ).count ();
354
+ AnomalyDetector newDetector = new AnomalyDetector (
355
+ id ,
356
+ null ,
357
+ detector .getName (),
358
+ detector .getDescription (),
359
+ detector .getTimeField (),
360
+ detector .getIndices (),
361
+ features ,
362
+ detector .getFilterQuery (),
363
+ detector .getInterval (),
364
+ detector .getWindowDelay (),
365
+ detector .getShingleSize (),
366
+ detector .getUiMetadata (),
367
+ detector .getSchemaVersion (),
368
+ detector .getLastUpdateTime (),
369
+ detector .getCategoryFields (),
370
+ detector .getUser (),
371
+ detector .getCustomResultIndexOrAlias (),
372
+ TestHelpers .randomImputationOption (features ),
373
+ randomIntBetween (1 , 10000 ),
374
+ randomInt (TimeSeriesSettings .MAX_SHINGLE_SIZE / 2 ),
375
+ randomIntBetween (1 , 1000 ),
376
+ detector .getRules (),
377
+ null ,
378
+ null ,
379
+ null ,
380
+ true ,
381
+ detector .getLastBreakingUIChangeTime ()
382
+ );
383
+
384
+ Exception ex = expectThrows (
385
+ ResponseException .class ,
386
+ () -> TestHelpers
387
+ .makeRequest (
388
+ client (),
389
+ "PUT" ,
390
+ TestHelpers .AD_BASE_DETECTORS_URI + "/" + id + "?refresh=true" ,
391
+ ImmutableMap .of (),
392
+ TestHelpers .toHttpEntity (newDetector ),
393
+ null
394
+ )
395
+ );
396
+ assertThat (ex .getMessage (), containsString (CommonMessages .CAN_NOT_CHANGE_FLATTEN_RESULT_INDEX ));
397
+ }
398
+
334
399
public void testCreateAnomalyDetector () throws Exception {
335
400
AnomalyDetector detector = createIndexAndGetAnomalyDetector (INDEX_NAME );
336
401
updateClusterSettings (ADEnabledSetting .AD_ENABLED , false );
0 commit comments