@Override public Status evaluate(double dsValue) { if (isThresholdExceeded(dsValue)) { if (isArmed()) { setExceededCount(getExceededCount() + 1); LOG.debug("evaluate: {} threshold exceeded, count={}", getType(), getExceededCount()); if (isTriggerCountExceeded()) { LOG.debug("evaluate: {} threshold triggered", getType()); setExceededCount(1); setArmed(false); return Status.TRIGGERED; } } } else if (isRearmExceeded(dsValue)) { if (!isArmed()) { LOG.debug("evaluate: {} threshold rearmed", getType()); setArmed(true); setExceededCount(0); return Status.RE_ARMED; } if (getExceededCount() > 0) { LOG.debug("evaluate: resetting {} threshold count to 0, because the current value indicates that the in-progress threshold has been rearmed, but it doesn't triggered yet.", getType()); setExceededCount(0); } } else { LOG.debug("evaluate: resetting {} threshold count to 0", getType()); setExceededCount(0); } return Status.NO_CHANGE; }
@Test public void testIsRearmExceededLowNoTriggeredBelow() { Threshold threshold = new Threshold(); threshold.setType(ThresholdType.LOW); threshold.setDsName("ds-name"); threshold.setDsType("node"); threshold.setValue(99.0); threshold.setRearm(0.5); threshold.setTrigger(1); ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold); ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper); assertFalse("rearm should not be exceeded", item.isRearmExceeded(0.0)); }
@Test public void testIsRearmExceededHighTriggeredEqual() { Threshold threshold = new Threshold(); threshold.setType(ThresholdType.HIGH); threshold.setDsName("ds-name"); threshold.setDsType("node"); threshold.setValue(99.0); threshold.setRearm(0.5); threshold.setTrigger(1); ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold); ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper); assertTrue("rearm should be exceeded", item.isRearmExceeded(0.5)); }
@Test public void testIsRearmExceededHighTriggeredBelow() { Threshold threshold = new Threshold(); threshold.setType(ThresholdType.HIGH); threshold.setDsName("ds-name"); threshold.setDsType("node"); threshold.setValue(99.0); threshold.setRearm(0.5); threshold.setTrigger(1); ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold); ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper); assertTrue("rearm should be exceeded", item.isRearmExceeded(0.0)); }
@Test public void testIsRearmExceededLowTriggeredEqual() { Threshold threshold = new Threshold(); threshold.setType(ThresholdType.LOW); threshold.setDsName("ds-name"); threshold.setDsType("node"); threshold.setValue(99.0); threshold.setRearm(0.5); threshold.setTrigger(1); ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold); ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper); assertTrue("rearm should be exceeded", item.isRearmExceeded(0.5)); }
@Test public void testIsRearmExceededLowTriggeredAbove() { Threshold threshold = new Threshold(); threshold.setType(ThresholdType.LOW); threshold.setDsName("ds-name"); threshold.setDsType("node"); threshold.setValue(99.0); threshold.setRearm(0.5); threshold.setTrigger(1); ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold); ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper); assertTrue("rearm should be exceeded", item.isRearmExceeded(1.0)); }
@Test public void testIsRearmExceededHighNoTriggeredAbove() { Threshold threshold = new Threshold(); threshold.setType(ThresholdType.HIGH); threshold.setDsName("ds-name"); threshold.setDsType("node"); threshold.setValue(99.0); threshold.setRearm(0.5); threshold.setTrigger(1); ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold); ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper); assertFalse("rearm should not be exceeded", item.isRearmExceeded(1.0)); }