/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2007-2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.netmgt.threshd;
import java.util.Date;
import org.junit.Test;
import org.opennms.netmgt.EventConstants;
import org.opennms.netmgt.config.threshd.Threshold;
import org.opennms.netmgt.threshd.ThresholdEvaluatorHighLow.ThresholdEvaluatorStateHighLow;
import org.opennms.netmgt.threshd.ThresholdEvaluatorState.Status;
import org.opennms.netmgt.xml.event.Event;
import org.opennms.test.ThrowableAnticipator;
public class ThresholdEvaluatorHighLowTest extends AbstractThresholdEvaluatorTestCase {
@Test
public void testConstructorThresholdNull() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold argument cannot be null"));
try {
new ThresholdEvaluatorStateHighLow(null);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testConstructorThresholdNoType() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold must have a 'type' value set"));
Threshold threshold = new Threshold();
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(1.0);
threshold.setRearm(0.5);
threshold.setTrigger(3);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
try {
new ThresholdEvaluatorStateHighLow(wrapper);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testConstructorThresholdNoDsName() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold must have a 'ds-name' value set"));
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsType("ds-type");
threshold.setValue(1.0);
threshold.setRearm(0.5);
threshold.setTrigger(3);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
try {
new ThresholdEvaluatorStateHighLow(wrapper);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testConstructorThresholdNoDsType() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold must have a 'ds-type' value set"));
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setValue(1.0);
threshold.setRearm(0.5);
threshold.setTrigger(3);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
try {
new ThresholdEvaluatorStateHighLow(wrapper);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testConstructorThresholdNoValue() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold must have a 'value' value set"));
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setRearm(0.5);
threshold.setTrigger(3);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
try {
new ThresholdEvaluatorStateHighLow(wrapper);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testConstructorThresholdNoRearm() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold must have a 'rearm' value set"));
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(1.0);
threshold.setTrigger(3);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
try {
new ThresholdEvaluatorStateHighLow(wrapper);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testConstructorThresholdNoTrigger() {
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalArgumentException("threshold must have a 'trigger' value set"));
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(1.0);
threshold.setRearm(0.5);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
try {
new ThresholdEvaluatorStateHighLow(wrapper);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testEvaluateHighNoTrigger() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(101.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("threshold evaluation status", Status.NO_CHANGE, status);
}
@Test
public void testEvaluateHighTriggerOnce() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("threshold evaluation status", Status.TRIGGERED, status);
}
@Test
public void testEvaluateHighNoTriggerTwice() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(2);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("threshold evaluation status", Status.NO_CHANGE, status);
}
@Test
public void testEvaluateHighTriggerTwice() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(2);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.NO_CHANGE, status);
status = item.evaluate(100.0);
assertEquals("second threshold evaluation status", Status.TRIGGERED, status);
}
@Test
public void testEvaluateHighTriggerTwiceNoRetrigger() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(2);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.NO_CHANGE, status);
status = item.evaluate(100.0);
assertEquals("second threshold evaluation status", Status.TRIGGERED, status);
status = item.evaluate(100.0);
assertEquals("third threshold evaluation status", Status.NO_CHANGE, status);
status = item.evaluate(100.0);
assertEquals("fourth threshold evaluation status", Status.NO_CHANGE, status);
}
@Test
public void testEvaluateHighTriggerRearm() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.TRIGGERED, status);
status = item.evaluate(0.0);
assertEquals("second threshold evaluation status", Status.RE_ARMED, status);
}
@Test
public void testEvaluateHighTriggerRearmTriggerAgain() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.TRIGGERED, status);
status = item.evaluate(0.0);
assertEquals("second threshold evaluation status", Status.RE_ARMED, status);
status = item.evaluate(100.0);
assertEquals("third threshold evaluation status", Status.TRIGGERED, status);
}
@Test
public void testEvaluateLowTriggerOnce() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorState item = new ThresholdEvaluatorStateHighLow(wrapper);
Status status = item.evaluate(100.0);
assertEquals("threshold evaluation status", Status.NO_CHANGE, status);
}
@Test
public void testIsThresholdExceededHighTriggeredAbove() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertTrue("threshold should be exceeded", item.isThresholdExceeded(100.0));
}
@Test
public void testIsThresholdExceededHighTriggeredEqual() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertTrue("threshold should be exceeded", item.isThresholdExceeded(99.0));
}
@Test
public void testIsThresholdExceededHighNotTriggeredBelow() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertFalse("threshold should not be exceeded", item.isThresholdExceeded(98.0));
}
@Test
public void testIsThresholdExceededLowTriggeredBelow() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertTrue("threshold should be exceeded", item.isThresholdExceeded(98.0));
}
@Test
public void testIsThresholdExceededLowTriggeredEqual() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertTrue("threshold should be exceeded", item.isThresholdExceeded(99.0));
}
@Test
public void testIsThresholdExceededLowNotTriggeredAbove() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertFalse("threshold should not be exceeded", item.isThresholdExceeded(100.0));
}
@Test
public void testIsThresholdExceededBogusType() {
Threshold threshold = new Threshold();
threshold.setType("relativeChange");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalStateException("This thresholding strategy can only be used for thresholding types of 'high' and 'low'."));
try {
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
item.isThresholdExceeded(98.0);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testIsRearmExceededHighTriggeredBelow() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
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 testIsRearmExceededHighTriggeredEqual() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
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 testIsRearmExceededHighNoTriggeredAbove() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
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));
}
@Test
public void testIsRearmExceededLowTriggeredAbove() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
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 testIsRearmExceededLowTriggeredEqual() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
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 testIsRearmExceededLowNoTriggeredBelow() {
Threshold threshold = new Threshold();
threshold.setType("low");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
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 testIsRearmExceededBogusType() {
Threshold threshold = new Threshold();
threshold.setType("relativeChange");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThrowableAnticipator ta = new ThrowableAnticipator();
ta.anticipate(new IllegalStateException("This thresholding strategy can only be used for thresholding types of 'high' and 'low'."));
try {
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
item.isThresholdExceeded(0.0);
} catch (Throwable t) {
ta.throwableReceived(t);
}
ta.verifyAnticipated();
}
@Test
public void testIsTriggerCountExceededAtTriggerValueOne() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertFalse("trigger count should not be exeeded before exceeding value", item.isTriggerCountExceeded());
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.TRIGGERED, status);
assertTrue("trigger count should be exeeded after exceeding value (and being triggered)", item.isTriggerCountExceeded());
}
@Test
public void testIsTriggerCountExceededNotAtTriggerValueTwo() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(2);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertFalse("trigger count should not be exeeded before exceeding value", item.isTriggerCountExceeded());
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.NO_CHANGE, status);
assertFalse("trigger count should not be exeeded after only exceeding value once", item.isTriggerCountExceeded());
}
@Test
public void testIsTriggerCountExceededNotAfterReArm() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(0.5);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
assertFalse("trigger count should not be exeeded before exceeding value", item.isTriggerCountExceeded());
Status status = item.evaluate(100.0);
assertEquals("first threshold evaluation status", Status.TRIGGERED, status);
assertTrue("trigger count should be exeeded after exceeding value", item.isTriggerCountExceeded());
status = item.evaluate(0.0);
assertEquals("first threshold evaluation status", Status.RE_ARMED, status);
assertFalse("trigger count should be reset after being rearmed", item.isTriggerCountExceeded());
}
@Test
public void testGetEventForStateDefaultUEIS() {
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(95.0);
threshold.setTrigger(1);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
// High exceed, with null instance
Event event=item.getEventForState(Status.TRIGGERED, new Date(), 100.0, null);
assertEquals("UEI should be the highThresholdExceededUEI", EventConstants.HIGH_THRESHOLD_EVENT_UEI, event.getUei());
parmPresentAndValueNonNull(event, "instance");
// High rearm, with null instance
event=item.getEventForState(Status.RE_ARMED, new Date(), 94.0, null);
assertEquals("UEI should be the highThresholdRearmedUEI", EventConstants.HIGH_THRESHOLD_REARM_EVENT_UEI, event.getUei());
parmPresentAndValueNonNull(event, "instance");
// High exceed, with non-null instance
event=item.getEventForState(Status.TRIGGERED, new Date(), 100.0, new MockCollectionResourceWrapper("testInstance"));
assertEquals("UEI should be the highThresholdExceededUEI", EventConstants.HIGH_THRESHOLD_EVENT_UEI, event.getUei());
parmPresentWithValue(event, "instance", "testInstance");
// High rearm, with non-null instance
event=item.getEventForState(Status.RE_ARMED, new Date(), 94.0, new MockCollectionResourceWrapper("testInstance"));
assertEquals("UEI should be the highThresholdRearmedUEI", EventConstants.HIGH_THRESHOLD_REARM_EVENT_UEI, event.getUei());
parmPresentWithValue(event, "instance", "testInstance");
// Set it up again for low tests
threshold.setType("low");
threshold.setValue(95.0);
threshold.setRearm(99.0);
// Low exceed, with null instance
event=item.getEventForState(Status.TRIGGERED, new Date(), 94.0, null);
assertEquals("UEI should be the lowThresholdExceededUEI", EventConstants.LOW_THRESHOLD_EVENT_UEI, event.getUei());
parmPresentAndValueNonNull(event, "instance");
// Low rearm, with null instance
event=item.getEventForState(Status.RE_ARMED, new Date(), 100.0, null);
assertEquals("UEI should be the lowThresholdRearmedUEI", EventConstants.LOW_THRESHOLD_REARM_EVENT_UEI, event.getUei());
parmPresentAndValueNonNull(event, "instance");
// Low exceed, with non-null instance
event=item.getEventForState(Status.TRIGGERED, new Date(), 94.0, new MockCollectionResourceWrapper("testInstance"));
assertEquals("UEI should be the lowThresholdExceededUEI", EventConstants.LOW_THRESHOLD_EVENT_UEI, event.getUei());
parmPresentWithValue(event, "instance", "testInstance");
// Low rearm, with non-null instance
event=item.getEventForState(Status.RE_ARMED, new Date(), 100.0, new MockCollectionResourceWrapper("testInstance"));
assertEquals("UEI should be the lowThresholdRearmedUEI", EventConstants.LOW_THRESHOLD_REARM_EVENT_UEI, event.getUei());
parmPresentWithValue(event, "instance", "testInstance");
}
@Test
public void testGetEventForStateCustomUEIS() {
String triggeredUEI="uei.opennms.org/custom/thresholdTriggered";
String rearmedUEI="uei.opennms.org/custom/thresholdRearmed";
Threshold threshold = new Threshold();
threshold.setType("high");
threshold.setDsName("ds-name");
threshold.setDsType("ds-type");
threshold.setValue(99.0);
threshold.setRearm(95.0);
threshold.setTrigger(1);
threshold.setTriggeredUEI(triggeredUEI);
threshold.setRearmedUEI(rearmedUEI);
ThresholdConfigWrapper wrapper=new ThresholdConfigWrapper(threshold);
ThresholdEvaluatorStateHighLow item = new ThresholdEvaluatorStateHighLow(wrapper);
Event event=item.getEventForState(Status.TRIGGERED, new Date(), 100.0, null);
assertEquals("UEI should be the uei.opennms.org/custom/thresholdTriggered", triggeredUEI, event.getUei());
parmPresentAndValueNonNull(event, "instance");
event=item.getEventForState(Status.RE_ARMED, new Date(), 94.0, null);
assertEquals("UEI should be the uei.opennms.org/custom/thresholdRearmed", rearmedUEI, event.getUei());
parmPresentAndValueNonNull(event, "instance");
}
}