use of org.opensearch.ad.model.AnomalyDetector in project anomaly-detection by opensearch-project.
the class RestHandlerUtilsTests method testValidateAnomalyDetectorWithDuplicateFeatureNames.
public void testValidateAnomalyDetectorWithDuplicateFeatureNames() throws IOException {
String featureName = randomAlphaOfLength(5);
AnomalyDetector detector = TestHelpers.randomAnomalyDetector(ImmutableList.of(randomFeature(featureName, randomAlphaOfLength(5)), randomFeature(featureName, randomAlphaOfLength(5))));
String error = RestHandlerUtils.checkAnomalyDetectorFeaturesSyntax(detector, 2);
assertEquals("Detector has duplicate feature names: " + featureName, error);
}
use of org.opensearch.ad.model.AnomalyDetector in project anomaly-detection by opensearch-project.
the class ThrottlerTests method testInsertFilteredQuery.
@Test
public void testInsertFilteredQuery() {
AnomalyDetector detector = mock(AnomalyDetector.class);
when(detector.getDetectorId()).thenReturn("test detector Id");
SearchRequest dummySearchRequest = new SearchRequest();
// first time: key doesn't exist
assertTrue(throttler.insertFilteredQuery(detector.getDetectorId(), dummySearchRequest));
// second time: key exists
assertFalse(throttler.insertFilteredQuery(detector.getDetectorId(), dummySearchRequest));
}
use of org.opensearch.ad.model.AnomalyDetector in project anomaly-detection by opensearch-project.
the class ParseUtilsTests method testGenerateInternalFeatureQuery.
public void testGenerateInternalFeatureQuery() throws IOException {
AnomalyDetector detector = TestHelpers.randomAnomalyDetector(null, Instant.now());
long startTime = randomLong();
long endTime = randomLong();
SearchSourceBuilder builder = ParseUtils.generateInternalFeatureQuery(detector, startTime, endTime, TestHelpers.xContentRegistry());
for (Feature feature : detector.getFeatureAttributes()) {
assertTrue(builder.toString().contains(feature.getId()));
}
}
use of org.opensearch.ad.model.AnomalyDetector in project anomaly-detection by opensearch-project.
the class ParseUtilsTests method testGenerateInternalFeatureQueryTemplate.
public void testGenerateInternalFeatureQueryTemplate() throws IOException {
AnomalyDetector detector = TestHelpers.randomAnomalyDetector(null, Instant.now());
String builder = ParseUtils.generateInternalFeatureQueryTemplate(detector, TestHelpers.xContentRegistry());
for (Feature feature : detector.getFeatureAttributes()) {
assertTrue(builder.contains(feature.getId()));
}
}
use of org.opensearch.ad.model.AnomalyDetector in project anomaly-detection by opensearch-project.
the class ParseUtilsTests method testBatchFeatureQuery.
public void testBatchFeatureQuery() throws IOException {
String index = randomAlphaOfLength(5);
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
Feature feature1 = TestHelpers.randomFeature(true);
Feature feature2 = TestHelpers.randomFeature(false);
AnomalyDetector detector = TestHelpers.randomAnomalyDetector(ImmutableList.of(index), ImmutableList.of(feature1, feature2), null, now, 1, false, null);
long startTime = now.minus(10, ChronoUnit.DAYS).toEpochMilli();
long endTime = now.plus(10, ChronoUnit.DAYS).toEpochMilli();
SearchSourceBuilder searchSourceBuilder = ParseUtils.batchFeatureQuery(detector, null, startTime, endTime, TestHelpers.xContentRegistry());
assertEquals("{\"size\":0,\"query\":{\"bool\":{\"must\":[{\"range\":{\"" + detector.getTimeField() + "\":{\"from\":" + startTime + ",\"to\":" + endTime + ",\"include_lower\":true,\"include_upper\":false,\"format\":\"epoch_millis\",\"boost\"" + ":1.0}}},{\"bool\":{\"must\":[{\"term\":{\"user\":{\"value\":\"kimchy\",\"boost\":1.0}}}],\"filter\":" + "[{\"term\":{\"tag\":{\"value\":\"tech\",\"boost\":1.0}}}],\"must_not\":[{\"range\":{\"age\":{\"from\":10," + "\"to\":20,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}}],\"should\":[{\"term\":{\"tag\":" + "{\"value\":\"wow\",\"boost\":1.0}}},{\"term\":{\"tag\":{\"value\":\"elasticsearch\",\"boost\":1.0}}}]," + "\"adjust_pure_negative\":true,\"minimum_should_match\":\"1\",\"boost\":1.0}}],\"adjust_pure_negative" + "\":true,\"boost\":1.0}},\"aggregations\":{\"feature_aggs\":{\"composite\":{\"size\":10000,\"sources\":" + "[{\"date_histogram\":{\"date_histogram\":{\"field\":\"" + detector.getTimeField() + "\",\"missing_bucket\":false,\"order\":\"asc\"," + "\"fixed_interval\":\"60s\"}}}]},\"aggregations\":{\"" + feature1.getId() + "\":{\"value_count\":{\"field\":\"ok\"}}}}}}", searchSourceBuilder.toString());
}
Aggregations