aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/faultmanagement/fmweb/src/test/java/org/onosproject/faultmanagement/web/AlarmJsonMatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/faultmanagement/fmweb/src/test/java/org/onosproject/faultmanagement/web/AlarmJsonMatcher.java')
-rw-r--r--framework/src/onos/apps/faultmanagement/fmweb/src/test/java/org/onosproject/faultmanagement/web/AlarmJsonMatcher.java135
1 files changed, 135 insertions, 0 deletions
diff --git a/framework/src/onos/apps/faultmanagement/fmweb/src/test/java/org/onosproject/faultmanagement/web/AlarmJsonMatcher.java b/framework/src/onos/apps/faultmanagement/fmweb/src/test/java/org/onosproject/faultmanagement/web/AlarmJsonMatcher.java
new file mode 100644
index 00000000..14bb45f3
--- /dev/null
+++ b/framework/src/onos/apps/faultmanagement/fmweb/src/test/java/org/onosproject/faultmanagement/web/AlarmJsonMatcher.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.faultmanagement.web;
+
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeDiagnosingMatcher;
+import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Hamcrest matcher for alarms.
+ */
+public final class AlarmJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
+
+ private final Alarm alarm;
+
+ private AlarmJsonMatcher(final Alarm alarm) {
+ this.alarm = alarm;
+ }
+
+ @Override
+ public boolean matchesSafely(final JsonNode jsonAlarm, final Description description) {
+ final String jsonAlarmId = jsonAlarm.get("id").asText();
+ final String alarmId = Long.toString(alarm.id().fingerprint());
+ if (!jsonAlarmId.equals(alarmId)) {
+ description.appendText("alarm id was " + jsonAlarmId);
+ return false;
+ }
+
+ final String jsonDeviceId = jsonAlarm.get("deviceId").asText();
+ final String alarmDeviceId = alarm.deviceId().toString();
+ if (!jsonDeviceId.equals(alarmDeviceId)) {
+ description.appendText("DeviceId was " + jsonDeviceId);
+ return false;
+ }
+
+
+ final String jsonDescription = jsonAlarm.get("description").asText();
+ final String alarmDesc = alarm.description();
+ if (!jsonDescription.equals(alarmDesc)) {
+ description.appendText("description was " + jsonDescription);
+ return false;
+ }
+
+ final long jsonTimeRaised = jsonAlarm.get("timeRaised").asLong();
+ final long timeRaised = alarm.timeRaised();
+ if (timeRaised != jsonTimeRaised) {
+ description.appendText("timeRaised was " + jsonTimeRaised);
+ return false;
+ }
+
+
+ final long jsonTimeUpdated = jsonAlarm.get("timeUpdated").asLong();
+ final long timeUpdated = alarm.timeUpdated();
+ if (timeUpdated != jsonTimeUpdated) {
+ description.appendText("timeUpdated was " + jsonTimeUpdated);
+ return false;
+ }
+
+ final JsonNode jsonTimeClearedNode = jsonAlarm.get("timeCleared");
+
+ if (alarm.timeCleared() != null) {
+ final Long jsonTimeCleared = jsonTimeClearedNode.longValue();
+ final Long timeCleared = alarm.timeCleared();
+
+ if (!timeCleared.equals(jsonTimeCleared)) {
+ description.appendText("Time Cleared was " + jsonTimeCleared);
+ return false;
+ }
+ } else {
+ // No clear time not specified, JSON representation must be empty
+ if (!jsonTimeClearedNode.isNull()) {
+ description.appendText("Time Cleared should be null");
+ return false;
+ }
+ }
+
+ final String jsonSeverity = jsonAlarm.get("severity").asText();
+ final String severity = alarm.severity().toString();
+ if (!severity.equals(jsonSeverity)) {
+ description.appendText("severity was " + jsonSeverity);
+ return false;
+ }
+
+ final JsonNode jsonAlarmNode = jsonAlarm.get("source");
+
+ if (alarm.source() != null) {
+ final String jsonSource = jsonAlarmNode.textValue();
+ final String source = alarm.source().toString();
+
+ if (!source.equals(jsonSource)) {
+ description.appendText("source was " + jsonSource);
+ return false;
+ }
+ } else {
+ // source not specified, JSON representation must be empty
+ if (!jsonAlarmNode.isNull()) {
+ description.appendText("source should be null");
+ return false;
+ }
+ }
+
+ // In progress
+ return true;
+ }
+
+ @Override
+ public void describeTo(final Description description) {
+ description.appendText(alarm.toString());
+ }
+
+ /**
+ * Factory to allocate a alarm matcher.
+ *
+ * @param alarm alarm object we are looking for
+ * @return matcher
+ */
+ public static AlarmJsonMatcher matchesAlarm(final Alarm alarm) {
+ return new AlarmJsonMatcher(alarm);
+ }
+}