Search in sources :

Example 16 with Alert

use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.

the class AggregatingAlertProvider method accept.

/* (non-Javadoc)
     * @see reactor.fn.Consumer#accept(java.lang.Object)
     */
@Override
public void accept(Event<Alert> event) {
    final Alert alert = unwrapAlert(event.getData());
    final AlertManager mgr = (AlertManager) alert.getSource();
    final List<AlertResponder> responders = snapshotResponderts();
    responders.forEach(responder -> {
        AlertResponse resp = mgr.getResponse(alert);
        AlertResponseWrapper wrapper = new AlertResponseWrapper(resp);
        responder.alertChange(alert, wrapper);
    });
}
Also used : AlertManager(com.thinkbiganalytics.alerts.spi.AlertManager) AlertResponse(com.thinkbiganalytics.alerts.api.AlertResponse) Alert(com.thinkbiganalytics.alerts.api.Alert) SourceAlert(com.thinkbiganalytics.alerts.api.SourceAlert) AlertResponder(com.thinkbiganalytics.alerts.api.AlertResponder)

Example 17 with Alert

use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.

the class AggregatingAlertProviderTest method testGetAlertsSinceTimeManagerOnly.

@Test
public void testGetAlertsSinceTimeManagerOnly() {
    DateTime since = DateTime.now().minusSeconds(1);
    TestAlert mgrAlert = new TestAlert(this.manager);
    this.provider.addAlertManager(this.manager);
    when(this.manager.getAlerts(any(AlertCriteria.class))).thenAnswer(iteratorAnswer(mgrAlert));
    Iterator<? extends Alert> results = this.provider.getAlertsAfter(since);
    Iterator<? extends Alert> itr = Iterators.transform(results, providerToSourceAlertFunction());
    Alert alert = itr.next();
    assertThat(alert).isEqualTo(mgrAlert);
}
Also used : AlertCriteria(com.thinkbiganalytics.alerts.api.AlertCriteria) Alert(com.thinkbiganalytics.alerts.api.Alert) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Example 18 with Alert

use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.

the class AggregatingAlertProviderTest method testRespondToChange.

@Test
public void testRespondToChange() throws InterruptedException {
    TestAlert initMgrAlert = new TestAlert(this.manager, true);
    CountDownLatch latch = new CountDownLatch(1);
    this.provider.addAlertManager(this.manager);
    when(this.manager.getAlert(any(Alert.ID.class))).thenReturn(Optional.of(initMgrAlert));
    when(this.manager.getAlertAsServiceAccount(any(Alert.ID.class))).thenReturn(Optional.of(initMgrAlert));
    when(this.manager.getResponse(any(Alert.class))).thenReturn(this.response);
    when(this.response.handle(any(String.class), any(Serializable.class))).thenReturn(initMgrAlert);
    doAnswer(new Answer<Void>() {

        @Override
        public Void answer(InvocationOnMock invocation) throws Throwable {
            latch.countDown();
            return null;
        }
    }).when(this.listener).alertChange(any(Alert.class));
    this.provider.respondTo(new SourceAlertID(initMgrAlert.getId(), this.manager), new AlertResponder() {

        @Override
        public void alertChange(Alert alert, AlertResponse response) {
            response.handle(null, "handled");
        }
    });
    latch.await(10, TimeUnit.SECONDS);
    verify(this.response).handle(eq(null), eq("handled"));
    verify(this.listener, atLeastOnce()).alertChange(any(Alert.class));
}
Also used : Serializable(java.io.Serializable) AlertResponse(com.thinkbiganalytics.alerts.api.AlertResponse) CountDownLatch(java.util.concurrent.CountDownLatch) AlertResponder(com.thinkbiganalytics.alerts.api.AlertResponder) SourceAlertID(com.thinkbiganalytics.alerts.api.core.AggregatingAlertProvider.SourceAlertID) InvocationOnMock(org.mockito.invocation.InvocationOnMock) Alert(com.thinkbiganalytics.alerts.api.Alert) SourceAlertID(com.thinkbiganalytics.alerts.api.core.AggregatingAlertProvider.SourceAlertID) Test(org.junit.Test)

Example 19 with Alert

use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.

the class AggregatingAlertProviderTest method testGetAlertsSinceTimeAllSources.

@Test
public void testGetAlertsSinceTimeAllSources() {
    DateTime since = DateTime.now().minusSeconds(1);
    TestAlert mgrAlert = new TestAlert(this.manager);
    TestAlert srcAlert = new TestAlert(this.source);
    this.provider.addAlertSource(this.source);
    this.provider.addAlertManager(this.manager);
    when(this.source.getAlerts(any(AlertCriteria.class))).thenAnswer(iteratorAnswer(srcAlert));
    when(this.manager.getAlerts(any(AlertCriteria.class))).thenAnswer(iteratorAnswer(mgrAlert));
    Iterator<? extends Alert> results = this.provider.getAlertsAfter(since);
    Iterator<? extends Alert> itr = Iterators.transform(results, providerToSourceAlertFunction());
    List<Alert> alerts = Lists.newArrayList(itr);
    assertThat(alerts).hasSize(2).contains(srcAlert, mgrAlert);
}
Also used : AlertCriteria(com.thinkbiganalytics.alerts.api.AlertCriteria) Alert(com.thinkbiganalytics.alerts.api.Alert) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Example 20 with Alert

use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.

the class AggregatingAlertProviderTest method testGetAlertsSinceTimeSourceOnly.

@Test
public void testGetAlertsSinceTimeSourceOnly() {
    DateTime since = DateTime.now().minusSeconds(1);
    TestAlert srcAlert = new TestAlert(this.source);
    this.provider.addAlertSource(this.source);
    when(this.source.getAlerts(any(AlertCriteria.class))).thenAnswer(iteratorAnswer(srcAlert));
    Iterator<? extends Alert> results = this.provider.getAlertsAfter(since);
    Iterator<? extends Alert> itr = Iterators.transform(results, providerToSourceAlertFunction());
    Alert alert = itr.next();
    assertThat(alert).isEqualTo(srcAlert);
}
Also used : AlertCriteria(com.thinkbiganalytics.alerts.api.AlertCriteria) Alert(com.thinkbiganalytics.alerts.api.Alert) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Aggregations

Alert (com.thinkbiganalytics.alerts.api.Alert)29 ArrayList (java.util.ArrayList)9 Test (org.junit.Test)9 AlertCriteria (com.thinkbiganalytics.alerts.api.AlertCriteria)8 JpaAlert (com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert)8 AlertResponse (com.thinkbiganalytics.alerts.api.AlertResponse)7 DateTime (org.joda.time.DateTime)6 AlertSummary (com.thinkbiganalytics.alerts.api.AlertSummary)5 AlertManager (com.thinkbiganalytics.alerts.spi.AlertManager)5 List (java.util.List)5 BooleanBuilder (com.querydsl.core.BooleanBuilder)4 AlertResponder (com.thinkbiganalytics.alerts.api.AlertResponder)4 JpaAlertChangeEvent (com.thinkbiganalytics.metadata.jpa.alerts.JpaAlertChangeEvent)4 Serializable (java.io.Serializable)4 Predicate (com.querydsl.core.types.Predicate)3 JPAQueryFactory (com.querydsl.jpa.impl.JPAQueryFactory)3 AlertNotfoundException (com.thinkbiganalytics.alerts.api.AlertNotfoundException)3 AlertProvider (com.thinkbiganalytics.alerts.api.AlertProvider)3 URI (java.net.URI)3 Principal (java.security.Principal)3