/** * This method is called when an active alert is still violating its threshold. * * @param alertingState * the ongoing alert * @param violationValue * the value has violated the threshold */ public void alertOngoing(AlertingState alertingState, double violationValue) { if (alertingState == null) { throw new IllegalArgumentException("The given alerting state may not be null."); } if (log.isDebugEnabled()) { log.debug("Alert definition '{}' is ongoing.", alertingState.getAlertingDefinition().getName()); } if (alertingState.getAlertingDefinition().getThresholdType() == ThresholdType.UPPER_THRESHOLD) { alertingState.setExtremeValue(Math.max(violationValue, alertingState.getExtremeValue())); } else { alertingState.setExtremeValue(Math.min(violationValue, alertingState.getExtremeValue())); } for (IAlertAction alertAction : alertActions) { alertAction.onOngoing(alertingState); } }
properties.put(Placeholders.THRESHOLD_TYPE, definition.getThresholdType().getName()); properties.put(Placeholders.START_TIME, String.valueOf(dateFormat.format(new Date(alert.getStartTimestamp())))); properties.put(Placeholders.VIOLATION_VALUE, numberFormat.format(alertingState.getExtremeValue())); properties.put(Placeholders.CURRENT_TIME, String.valueOf(new Date(System.currentTimeMillis()))); properties.put(Placeholders.ALERT_ID, alert.getId()); properties.put(Placeholders.EXTREME_VALUE, numberFormat.format(alertingState.getExtremeValue()));
@Test @SuppressWarnings("unchecked") public void lowerThresholdNewExtremeValue() { IAlertAction alertAction = Mockito.mock(IAlertAction.class); Iterator<IAlertAction> iterator = Mockito.mock(Iterator.class); when(iterator.hasNext()).thenReturn(true, false); when(iterator.next()).thenReturn(alertAction); when(alertActions.iterator()).thenReturn(iterator); AlertingDefinition alertingDefinition = Mockito.mock(AlertingDefinition.class); when(alertingDefinition.getThresholdType()).thenReturn(ThresholdType.LOWER_THRESHOLD); AlertingState alertingState = Mockito.mock(AlertingState.class); when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getLastCheckTime()).thenReturn(1234L); when(alertingState.getExtremeValue()).thenReturn(5D); alertingService.alertOngoing(alertingState, 3D); verify(alertingState).setExtremeValue(3D); verify(alertingState).getExtremeValue(); verify(alertingState).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(alertAction).onOngoing(alertingState); verifyNoMoreInteractions(alertAction); verify(alertActions).iterator(); verifyNoMoreInteractions(alertActions); verifyZeroInteractions(alertRegistry); }
@Test @SuppressWarnings("unchecked") public void upperThresholdNewExtremeValue() { IAlertAction alertAction = Mockito.mock(IAlertAction.class); Iterator<IAlertAction> iterator = Mockito.mock(Iterator.class); when(iterator.hasNext()).thenReturn(true, false); when(iterator.next()).thenReturn(alertAction); when(alertActions.iterator()).thenReturn(iterator); AlertingDefinition alertingDefinition = Mockito.mock(AlertingDefinition.class); when(alertingDefinition.getThresholdType()).thenReturn(ThresholdType.UPPER_THRESHOLD); AlertingState alertingState = Mockito.mock(AlertingState.class); when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getLastCheckTime()).thenReturn(1234L); when(alertingState.getExtremeValue()).thenReturn(5D); alertingService.alertOngoing(alertingState, 10D); verify(alertingState).setExtremeValue(10D); verify(alertingState).getExtremeValue(); verify(alertingState).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(alertAction).onOngoing(alertingState); verifyNoMoreInteractions(alertAction); verify(alertActions).iterator(); verifyNoMoreInteractions(alertActions); verifyZeroInteractions(alertRegistry); }
@Test @SuppressWarnings("unchecked") public void lowerThreshold() { IAlertAction alertAction = Mockito.mock(IAlertAction.class); Iterator<IAlertAction> iterator = Mockito.mock(Iterator.class); when(iterator.hasNext()).thenReturn(true, false); when(iterator.next()).thenReturn(alertAction); when(alertActions.iterator()).thenReturn(iterator); AlertingDefinition alertingDefinition = Mockito.mock(AlertingDefinition.class); when(alertingDefinition.getThresholdType()).thenReturn(ThresholdType.LOWER_THRESHOLD); AlertingState alertingState = Mockito.mock(AlertingState.class); when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getLastCheckTime()).thenReturn(1234L); when(alertingState.getExtremeValue()).thenReturn(5D); alertingService.alertOngoing(alertingState, 10D); verify(alertingState).setExtremeValue(5D); verify(alertingState).getExtremeValue(); verify(alertingState).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(alertAction).onOngoing(alertingState); verifyNoMoreInteractions(alertAction); verify(alertActions).iterator(); verifyNoMoreInteractions(alertActions); verifyZeroInteractions(alertRegistry); }
@Test @SuppressWarnings("unchecked") public void upperThreshold() { IAlertAction alertAction = Mockito.mock(IAlertAction.class); Iterator<IAlertAction> iterator = Mockito.mock(Iterator.class); when(iterator.hasNext()).thenReturn(true, false); when(iterator.next()).thenReturn(alertAction); when(alertActions.iterator()).thenReturn(iterator); AlertingDefinition alertingDefinition = Mockito.mock(AlertingDefinition.class); when(alertingDefinition.getThresholdType()).thenReturn(ThresholdType.UPPER_THRESHOLD); AlertingState alertingState = Mockito.mock(AlertingState.class); when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getLastCheckTime()).thenReturn(1234L); when(alertingState.getExtremeValue()).thenReturn(5D); alertingService.alertOngoing(alertingState, 3D); verify(alertingState).setExtremeValue(5D); verify(alertingState).getExtremeValue(); verify(alertingState).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(alertAction).onOngoing(alertingState); verifyNoMoreInteractions(alertAction); verify(alertActions).iterator(); verifyNoMoreInteractions(alertActions); verifyZeroInteractions(alertRegistry); }
when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getAlert()).thenReturn(alert); when(alertingState.getExtremeValue()).thenReturn(100D); when(alertingDefinition.getName()).thenReturn("name"); when(alertingDefinition.getMeasurement()).thenReturn("measurement"); verify(alertingState).getAlertingDefinition(); verify(alertingState).getAlert(); verify(alertingState, times(2)).getExtremeValue(); verifyNoMoreInteractions(alertingState); verify(alertingDefinition).getName();
when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getAlert()).thenReturn(alert); when(alertingState.getExtremeValue()).thenReturn(100D); when(alertingDefinition.getName()).thenReturn("name"); when(alertingDefinition.getMeasurement()).thenReturn(Series.BusinessTransaction.NAME); verify(alertingState).getAlertingDefinition(); verify(alertingState).getAlert(); verify(alertingState, times(2)).getExtremeValue(); verifyNoMoreInteractions(alertingState); verify(alertingDefinition).getName();
when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getAlert()).thenReturn(alert); when(alertingState.getExtremeValue()).thenReturn(100D); when(alertingDefinition.getName()).thenReturn("name"); when(alertingDefinition.getMeasurement()).thenReturn(Series.BusinessTransaction.NAME); verify(alertingState).getAlertingDefinition(); verify(alertingState).getAlert(); verify(alertingState, times(2)).getExtremeValue(); verifyNoMoreInteractions(alertingState); verify(alertingDefinition).getName();
when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getAlert()).thenReturn(alert); when(alertingState.getExtremeValue()).thenReturn(100D); when(alertingDefinition.getName()).thenReturn("name"); when(alertingDefinition.getMeasurement()).thenReturn("measurement"); verify(alertingState).getAlertingDefinition(); verify(alertingState).getAlert(); verify(alertingState, times(2)).getExtremeValue(); verifyNoMoreInteractions(alertingState); verify(alertingDefinition).getName();
when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingState.getAlert()).thenReturn(alert); when(alertingState.getExtremeValue()).thenReturn(100D); when(alertingDefinition.getName()).thenReturn("name"); when(alertingDefinition.getMeasurement()).thenReturn("measurement"); verify(alertingState).getAlertingDefinition(); verify(alertingState).getAlert(); verify(alertingState, times(2)).getExtremeValue(); verifyNoMoreInteractions(alertingState); verify(alertingDefinition).getName();