Search in sources :

Example 6 with AnomalyDetector

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);
}
Also used : AnomalyDetector(org.opensearch.ad.model.AnomalyDetector)

Example 7 with AnomalyDetector

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));
}
Also used : SearchRequest(org.opensearch.action.search.SearchRequest) AnomalyDetector(org.opensearch.ad.model.AnomalyDetector) Test(org.junit.Test)

Example 8 with AnomalyDetector

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()));
    }
}
Also used : Feature(org.opensearch.ad.model.Feature) AnomalyDetector(org.opensearch.ad.model.AnomalyDetector) SearchSourceBuilder(org.opensearch.search.builder.SearchSourceBuilder)

Example 9 with AnomalyDetector

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()));
    }
}
Also used : Feature(org.opensearch.ad.model.Feature) AnomalyDetector(org.opensearch.ad.model.AnomalyDetector)

Example 10 with AnomalyDetector

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());
}
Also used : Instant(java.time.Instant) Feature(org.opensearch.ad.model.Feature) AnomalyDetector(org.opensearch.ad.model.AnomalyDetector) SearchSourceBuilder(org.opensearch.search.builder.SearchSourceBuilder)

Aggregations

AnomalyDetector (org.opensearch.ad.model.AnomalyDetector)226 IOException (java.io.IOException)71 ActionListener (org.opensearch.action.ActionListener)54 Response (org.opensearch.client.Response)45 Map (java.util.Map)43 List (java.util.List)41 Client (org.opensearch.client.Client)38 SearchRequest (org.opensearch.action.search.SearchRequest)37 LogManager (org.apache.logging.log4j.LogManager)35 Logger (org.apache.logging.log4j.Logger)35 ArrayList (java.util.ArrayList)33 Optional (java.util.Optional)33 Test (org.junit.Test)32 SearchResponse (org.opensearch.action.search.SearchResponse)32 Instant (java.time.Instant)30 TimeValue (org.opensearch.common.unit.TimeValue)30 HashMap (java.util.HashMap)29 Entity (org.opensearch.ad.model.Entity)29 NamedXContentRegistry (org.opensearch.common.xcontent.NamedXContentRegistry)29 SearchSourceBuilder (org.opensearch.search.builder.SearchSourceBuilder)29