Search in sources :

Example 1 with ElasticsearchMetaAlertDao

use of org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao in project metron by apache.

the class ElasticsearchMetaAlertIntegrationTest method shouldGetAllMetaAlertsForAlert.

@Test
public void shouldGetAllMetaAlertsForAlert() throws Exception {
    // Load alerts
    List<Map<String, Object>> alerts = buildAlerts(3);
    elasticsearchAdd(alerts, INDEX, SENSOR_NAME);
    // Load metaAlerts
    List<Map<String, Object>> metaAlerts = buildMetaAlerts(12, MetaAlertStatus.ACTIVE, Optional.of(Collections.singletonList(alerts.get(0))));
    metaAlerts.add(buildMetaAlert("meta_active_12", MetaAlertStatus.ACTIVE, Optional.of(Arrays.asList(alerts.get(0), alerts.get(2)))));
    metaAlerts.add(buildMetaAlert("meta_inactive", MetaAlertStatus.INACTIVE, Optional.of(Arrays.asList(alerts.get(0), alerts.get(2)))));
    // We pass MetaAlertDao.METAALERT_TYPE, because the "_doc" gets appended automatically.
    elasticsearchAdd(metaAlerts, METAALERTS_INDEX, MetaAlertDao.METAALERT_TYPE);
    // Verify load was successful
    List<GetRequest> createdDocs = metaAlerts.stream().map(metaAlert -> new GetRequest((String) metaAlert.get(Constants.GUID), METAALERT_TYPE)).collect(Collectors.toList());
    createdDocs.addAll(alerts.stream().map(alert -> new GetRequest((String) alert.get(Constants.GUID), SENSOR_NAME)).collect(Collectors.toList()));
    findCreatedDocs(createdDocs);
    int previousPageSize = ((ElasticsearchMetaAlertDao) metaDao).getPageSize();
    ((ElasticsearchMetaAlertDao) metaDao).setPageSize(5);
    {
        // Verify searches successfully return more than 10 results
        SearchResponse searchResponse0 = metaDao.getAllMetaAlertsForAlert("message_0");
        List<SearchResult> searchResults0 = searchResponse0.getResults();
        Assert.assertEquals(13, searchResults0.size());
        Set<Map<String, Object>> resultSet = new HashSet<>();
        Iterables.addAll(resultSet, Iterables.transform(searchResults0, r -> r.getSource()));
        StringBuffer reason = new StringBuffer("Unable to find " + metaAlerts.get(0) + "\n");
        reason.append(Joiner.on("\n").join(resultSet));
        Assert.assertTrue(reason.toString(), resultSet.contains(metaAlerts.get(0)));
        // Verify no meta alerts are returned because message_1 was not added to any
        SearchResponse searchResponse1 = metaDao.getAllMetaAlertsForAlert("message_1");
        List<SearchResult> searchResults1 = searchResponse1.getResults();
        Assert.assertEquals(0, searchResults1.size());
        // Verify only the meta alert message_2 was added to is returned
        SearchResponse searchResponse2 = metaDao.getAllMetaAlertsForAlert("message_2");
        List<SearchResult> searchResults2 = searchResponse2.getResults();
        Assert.assertEquals(1, searchResults2.size());
        Assert.assertEquals(metaAlerts.get(12), searchResults2.get(0).getSource());
    }
    ((ElasticsearchMetaAlertDao) metaDao).setPageSize(previousPageSize);
}
Also used : InvalidSearchException(org.apache.metron.indexing.dao.search.InvalidSearchException) Arrays(java.util.Arrays) AccessConfig(org.apache.metron.indexing.dao.AccessConfig) ALERT_FIELD(org.apache.metron.indexing.dao.MetaAlertDao.ALERT_FIELD) Date(java.util.Date) PatchRequest(org.apache.metron.indexing.dao.update.PatchRequest) GroupResult(org.apache.metron.indexing.dao.search.GroupResult) GroupResponse(org.apache.metron.indexing.dao.search.GroupResponse) METAALERTS_INDEX(org.apache.metron.indexing.dao.MetaAlertDao.METAALERTS_INDEX) Map(java.util.Map) SearchResult(org.apache.metron.indexing.dao.search.SearchResult) After(org.junit.After) MetaAlertCreateRequest(org.apache.metron.indexing.dao.metaalert.MetaAlertCreateRequest) Document(org.apache.metron.indexing.dao.update.Document) AfterClass(org.junit.AfterClass) MetaAlertDao(org.apache.metron.indexing.dao.MetaAlertDao) IndexDao(org.apache.metron.indexing.dao.IndexDao) Set(java.util.Set) GetRequest(org.apache.metron.indexing.dao.search.GetRequest) SearchRequest(org.apache.metron.indexing.dao.search.SearchRequest) Collectors(java.util.stream.Collectors) OriginalNotFoundException(org.apache.metron.indexing.dao.update.OriginalNotFoundException) ElasticSearchComponent(org.apache.metron.elasticsearch.integration.components.ElasticSearchComponent) List(java.util.List) METAALERT_TYPE(org.apache.metron.indexing.dao.MetaAlertDao.METAALERT_TYPE) Optional(java.util.Optional) Joiner(com.google.common.base.Joiner) SearchResponse(org.apache.metron.indexing.dao.search.SearchResponse) Iterables(com.google.common.collect.Iterables) MetaAlertStatus(org.apache.metron.indexing.dao.metaalert.MetaAlertStatus) BeforeClass(org.junit.BeforeClass) SimpleDateFormat(java.text.SimpleDateFormat) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Group(org.apache.metron.indexing.dao.search.Group) JSONUtils(org.apache.metron.common.utils.JSONUtils) STATUS_FIELD(org.apache.metron.indexing.dao.MetaAlertDao.STATUS_FIELD) Before(org.junit.Before) GroupRequest(org.apache.metron.indexing.dao.search.GroupRequest) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) Test(org.junit.Test) Constants(org.apache.metron.common.Constants) SortField(org.apache.metron.indexing.dao.search.SortField) File(java.io.File) MetaAlertCreateResponse(org.apache.metron.indexing.dao.metaalert.MetaAlertCreateResponse) ElasticsearchMetaAlertDao(org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao) METAALERT_FIELD(org.apache.metron.indexing.dao.MetaAlertDao.METAALERT_FIELD) Multiline(org.adrianwalker.multilinestring.Multiline) Assert(org.junit.Assert) Collections(java.util.Collections) ElasticsearchDao(org.apache.metron.elasticsearch.dao.ElasticsearchDao) Set(java.util.Set) HashSet(java.util.HashSet) SearchResponse(org.apache.metron.indexing.dao.search.SearchResponse) GetRequest(org.apache.metron.indexing.dao.search.GetRequest) List(java.util.List) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap) ElasticsearchMetaAlertDao(org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao) Test(org.junit.Test)

Example 2 with ElasticsearchMetaAlertDao

use of org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao in project metron by apache.

the class ElasticsearchMetaAlertIntegrationTest method setup.

@BeforeEach
public void setup() throws IOException {
    es.createIndexWithMapping(METAALERTS_INDEX, METAALERT_DOC, template.replace("%MAPPING_NAME%", METAALERT_TYPE));
    es.createIndexWithMapping(INDEX, "test_doc", template.replace("%MAPPING_NAME%", "test"));
    esDao = new ElasticsearchDao();
    esDao.init(accessConfig);
    ElasticsearchMetaAlertDao elasticsearchMetaDao = new ElasticsearchMetaAlertDao(esDao);
    elasticsearchMetaDao.setPageSize(5);
    metaDao = elasticsearchMetaDao;
}
Also used : ElasticsearchDao(org.apache.metron.elasticsearch.dao.ElasticsearchDao) ElasticsearchMetaAlertDao(org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao) BeforeEach(org.junit.jupiter.api.BeforeEach)

Aggregations

ElasticsearchDao (org.apache.metron.elasticsearch.dao.ElasticsearchDao)2 ElasticsearchMetaAlertDao (org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 Joiner (com.google.common.base.Joiner)1 Iterables (com.google.common.collect.Iterables)1 File (java.io.File)1 IOException (java.io.IOException)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 Multiline (org.adrianwalker.multilinestring.Multiline)1