Modify a annotation and refactor Web UI.

Change-Id: I985733e8f4e7d0cda292ed4a240d1250db8e2316
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java
index ca97f8d..ee84e59 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java
@@ -17,6 +17,7 @@
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.testing.EqualsTester;
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.packet.IpAddress;
@@ -59,6 +60,7 @@
     private static final int OUTPUT_INTERFACE_ID = 2;
 
     private static final int VLAN_ID = 1;
+    private static final short VXLAN_ID = 10;
     private static final int PROTOCOL = 1;
     private static final int FLOW_TYPE = 1;
     private static final String DEVICE_ID = "of:00000000000000a1";
@@ -130,6 +132,9 @@
 
         ObjectNode nodeJson = flowInfoCodec.encode(flowInfo, context);
         assertThat(nodeJson, matchesFlowInfo(flowInfo));
+
+        FlowInfo flowInfoDecoded = flowInfoCodec.decode(nodeJson, context);
+        new EqualsTester().addEqualityGroup(flowInfo, flowInfoDecoded).testEquals();
     }
 
     /**
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonMatcher.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonMatcher.java
index d795aee..7574054 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonMatcher.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonMatcher.java
@@ -86,11 +86,17 @@
         }
 
         // check vlan id
-        String jsonVlanId = jsonNode.get(VLAN_ID).asText();
-        String vlanId = flowInfo.vlanId().toString();
-        if (!jsonVlanId.equals(vlanId)) {
-            description.appendText("VLAN id was " + jsonVlanId);
-            return false;
+        try {
+            if (!(jsonNode.get(VLAN_ID).isNull())) {
+                String jsonVlanId = jsonNode.get(VLAN_ID).asText();
+                String vlanId = flowInfo.vlanId().toString();
+                if (!jsonVlanId.equals(vlanId)) {
+                    description.appendText("VLAN id was " + jsonVlanId);
+                    return false;
+                }
+            }
+        } catch (NullPointerException ex) {
+            description.appendText("VLAN id was null");
         }
 
         // check source IP
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultPrometheusTelemetryConfigTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultPrometheusTelemetryConfigTest.java
index 6a0c0b5..7012ee8 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultPrometheusTelemetryConfigTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultPrometheusTelemetryConfigTest.java
@@ -26,19 +26,19 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-import static org.onosproject.openstacktelemetry.impl.OsgiPropertyConstants.PROMETHEUS_EXPORTER_PORT_DEFAULT;
-import static org.onosproject.openstacktelemetry.impl.OsgiPropertyConstants.PROMETHEUS_EXPORTER_ADDRESS_DEFAULT;
+import static org.onosproject.openstacktelemetry.impl.OsgiPropertyConstants.PROP_PROMETHEUS_EXPORTER_PORT_DEFAULT;
+import static org.onosproject.openstacktelemetry.impl.OsgiPropertyConstants.PROP_PROMETHEUS_EXPORTER_ADDRESS_DEFAULT;
 
 /**
  * Unit tests for DefaultPrometheusTelemetryConfig class.
  */
 public class DefaultPrometheusTelemetryConfigTest {
 
-    private static final String IP_ADDRESS_1 = PROMETHEUS_EXPORTER_ADDRESS_DEFAULT;
+    private static final String IP_ADDRESS_1 = PROP_PROMETHEUS_EXPORTER_ADDRESS_DEFAULT;
     private static final String IP_ADDRESS_2 = "10.10.1.2";
 
-    private static final int PORT_1 = PROMETHEUS_EXPORTER_PORT_DEFAULT;
-    private static final int PORT_2 = PROMETHEUS_EXPORTER_PORT_DEFAULT + 1;
+    private static final int PORT_1 = PROP_PROMETHEUS_EXPORTER_PORT_DEFAULT;
+    private static final int PORT_2 = PROP_PROMETHEUS_EXPORTER_PORT_DEFAULT + 1;
 
     private static final Map<String, Object> CONFIG_MAP_1 =
             ImmutableMap.of("key1", "value1");
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java
index 3a4aaed..47ef6d9 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java
@@ -29,6 +29,9 @@
 
     private static final TelemetryService GRPC_SERVICE = new GrpcTelemetryManager();
     private static final TelemetryService INFLUXDB_SERVICE = new InfluxDbTelemetryManager();
+    private static final TelemetryService KAFKA_SERVICE = new KafkaTelemetryManager();
+    private static final TelemetryService PROMETHEUS_SERVICE = new PrometheusTelemetryManager();
+    private static final TelemetryService REST_SERVICE = new PrometheusTelemetryManager();
 
     private OpenstackTelemetryManager manager;
 
@@ -51,11 +54,11 @@
 
         TelemetryService kafkaService = new KafkaTelemetryManager();
 
-        assertEquals(2, manager.telemetryServices().size());
+        assertEquals(5, manager.telemetryServices().size());
 
         manager.addTelemetryService(kafkaService);
 
-        assertEquals(3, manager.telemetryServices().size());
+        assertEquals(6, manager.telemetryServices().size());
     }
 
     /**
@@ -65,11 +68,11 @@
     public void testRemoveTelemetryService() {
         addDefaultServices();
 
-        assertEquals(2, manager.telemetryServices().size());
+        assertEquals(5, manager.telemetryServices().size());
 
         manager.removeTelemetryService(GRPC_SERVICE);
 
-        assertEquals(1, manager.telemetryServices().size());
+        assertEquals(4, manager.telemetryServices().size());
     }
 
     /**
@@ -83,5 +86,8 @@
     private void addDefaultServices() {
         manager.addTelemetryService(GRPC_SERVICE);
         manager.addTelemetryService(INFLUXDB_SERVICE);
+        manager.addTelemetryService(KAFKA_SERVICE);
+        manager.addTelemetryService(PROMETHEUS_SERVICE);
+        manager.addTelemetryService(REST_SERVICE);
     }
 }
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtilTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtilTest.java
new file mode 100644
index 0000000..d6d147f
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtilTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * 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.openstacktelemetry.util;
+
+import org.junit.Test;
+import org.onlab.packet.IPv4;
+
+import static org.junit.Assert.assertEquals;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getProtocolNameFromType;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getProtocolTypeFromString;
+
+public class OpenstackTelemetryUtilTest {
+
+    private static final String PROTOCOL_TCP_L = "TCP";
+    private static final String PROTOCOL_TCP_S = "tcp";
+    private static final String PROTOCOL_UDP_L = "UDP";
+    private static final String PROTOCOL_UDP_S = "udp";
+    private static final String PROTOCOL_ANY_L = "ANY";
+    private static final String PROTOCOL_ANY_S = "any";
+
+    /**
+     * Tests getting a protocol type from a protocol name.
+     */
+    @Test
+    public void testGetProtocolTypeFromString() {
+        assertEquals(IPv4.PROTOCOL_TCP, getProtocolTypeFromString(PROTOCOL_TCP_L));
+        assertEquals(IPv4.PROTOCOL_TCP, getProtocolTypeFromString(PROTOCOL_TCP_S));
+
+        assertEquals(IPv4.PROTOCOL_UDP, getProtocolTypeFromString(PROTOCOL_UDP_L));
+        assertEquals(IPv4.PROTOCOL_UDP, getProtocolTypeFromString(PROTOCOL_UDP_S));
+
+        assertEquals(0, getProtocolTypeFromString(PROTOCOL_ANY_L));
+        assertEquals(0, getProtocolTypeFromString(PROTOCOL_ANY_S));
+    }
+
+    /**
+     * Tests getting a protocol name from a protocol type.
+     */
+    @Test
+    public void testGetProtocolNameFromType() {
+        assertEquals(PROTOCOL_TCP_S, getProtocolNameFromType(IPv4.PROTOCOL_TCP));
+        assertEquals(PROTOCOL_UDP_S, getProtocolNameFromType(IPv4.PROTOCOL_UDP));
+        assertEquals(PROTOCOL_ANY_S, getProtocolNameFromType((byte) 0));
+    }
+}