Unit test for converters in alto-commons. 41/25341/1
authorjensenzhang <jingxuan.n.zhang@gmail.com>
Sun, 16 Aug 2015 22:36:32 +0000 (06:36 +0800)
committerjensenzhang <jingxuan.n.zhang@gmail.com>
Sun, 16 Aug 2015 22:36:32 +0000 (06:36 +0800)
Change-Id: Ibf5296c7b5f028fe3d7d02e5891e9d238950c4e7
Signed-off-by: jensenzhang <jingxuan.n.zhang@gmail.com>
alto-commons/src/main/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCAddressGroupConverter.java
alto-commons/src/main/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCNetworkMapConverter.java
alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelCostMapConverterTest.java [new file with mode: 0644]
alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelEndpointPropMapConverterTest.java [new file with mode: 0644]
alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelNetworkMapConverterTest.java [new file with mode: 0644]
alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCCostMapConverterTest.java [new file with mode: 0644]
alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCNetworkMapConverterTest.java [new file with mode: 0644]

index 64b0c2d4a443c32460ce544a62724d2963d11283..d7eda04ee87401a2b9db9c25d5cc9a75a1392624 100644 (file)
@@ -29,7 +29,7 @@ public class YANGJSON2RFCAddressGroupConverter extends Converter<JsonNode, RFC72
 
         for (JsonNode address: node) {
             JsonNode prefixes = address.get("endpointPrefix");
-            assert !prefixes.isArray();
+            assert prefixes.isArray();
             for (JsonNode prefix: prefixes) {
                 JsonNode ipv4 = prefix.get("ipv4Prefix");
                 JsonNode ipv6 = prefix.get("ipv6Prefix");
index 4ada65f16aa39da092f7b7b23fcf985eb7d98581..c9bc5b28c63f7969f5a66e740f03e10d74561c52 100644 (file)
@@ -42,7 +42,7 @@ public class YANGJSON2RFCNetworkMapConverter extends Converter<JsonNode, RFC7285
         for (JsonNode egroup: map) {
             String pid = extract_pid(egroup);
             JsonNode addr_group = egroup.get("endpointAddressGroup");
-            assert addr_group.isNull();
+            assert !addr_group.isNull();
             RFC7285Endpoint.AddressGroup ag = group_converter.convert(addr_group);
 
             nm.map.put(pid, ag);
diff --git a/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelCostMapConverterTest.java b/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelCostMapConverterTest.java
new file mode 100644 (file)
index 0000000..a3664cd
--- /dev/null
@@ -0,0 +1,34 @@
+package org.opendaylight.alto.commons.types.converter;
+
+import org.opendaylight.alto.commons.types.model150404.ModelCostMap;
+import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class RFC2ModelCostMapConverterTest {
+    String costMapJson;
+    RFC2ModelCostMapConverter converter;
+    ObjectMapper mapper;
+    ModelJSONMapper model2Json;
+    String yangModelString;
+
+    @Before
+    public void init() {
+        costMapJson = "{\"meta\":{\"dependent-vtags\":[{\"resource-id\":\"my-default-network-map\",\"tag\":\"3ee2cb7e8d63d9fab71b9b34cbf764436315542e\"}],\"cost-type\":{\"cost-mode\":\"numerical\",\"cost-metric\":\"routingcost\"}},\"cost-map\":{\"PID1\":{\"PID1\":1,\"PID2\":5,\"PID3\":10},\"PID2\":{\"PID1\":5,\"PID2\":1,\"PID3\":15},\"PID3\":{\"PID1\":20,\"PID2\":15}}}";
+        converter = new RFC2ModelCostMapConverter();
+        mapper = new ObjectMapper();
+        model2Json = new ModelJSONMapper();
+        yangModelString = "{\"alto-service:resource-id\":\"my-default-network-map-routingcost-numerical\",\"alto-service:tag\":\"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4786\",\"alto-service:meta\":{\"alto-service:dependent-vtags\":[{\"alto-service:resource-id\":\"my-default-network-map\",\"alto-service:tag\":\"3ee2cb7e8d63d9fab71b9b34cbf764436315542e\"}],\"alto-service:cost-type\":{\"alto-service:cost-mode\":\"numerical\",\"alto-service:cost-metric\":\"routingcost\"}},\"alto-service:map\":[{\"alto-service:src\":\"PID1\",\"alto-service:dst-costs\":[{\"alto-service:dst\":\"PID1\",\"alto-cost-default:cost-default\":\"1\"},{\"alto-service:dst\":\"PID2\",\"alto-cost-default:cost-default\":\"5\"},{\"alto-service:dst\":\"PID3\",\"alto-cost-default:cost-default\":\"10\"}]},{\"alto-service:src\":\"PID2\",\"alto-service:dst-costs\":[{\"alto-service:dst\":\"PID1\",\"alto-cost-default:cost-default\":\"5\"},{\"alto-service:dst\":\"PID2\",\"alto-cost-default:cost-default\":\"1\"},{\"alto-service:dst\":\"PID3\",\"alto-cost-default:cost-default\":\"15\"}]},{\"alto-service:src\":\"PID3\",\"alto-service:dst-costs\":[{\"alto-service:dst\":\"PID1\",\"alto-cost-default:cost-default\":\"20\"},{\"alto-service:dst\":\"PID2\",\"alto-cost-default:cost-default\":\"15\"}]}]}";
+    }
+
+    @Test
+    public void onRFC2Model() throws Exception {
+        RFC7285CostMap costMap = mapper.readValue(costMapJson,RFC7285CostMap.class);
+        ModelCostMap model = converter.convert(costMap);
+        String resultJson = model2Json.asJSON(model);
+        Assert.assertEquals(resultJson, this.yangModelString);
+    }
+}
diff --git a/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelEndpointPropMapConverterTest.java b/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelEndpointPropMapConverterTest.java
new file mode 100644 (file)
index 0000000..b58efb5
--- /dev/null
@@ -0,0 +1,35 @@
+package org.opendaylight.alto.commons.types.converter;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.alto.commons.types.model150404.ModelEndpointPropertyMap;
+import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285EndpointPropertyMap;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class RFC2ModelEndpointPropMapConverterTest {
+    String endpointPropMapJson;
+    RFC2ModelEndpointPropMapConverter converter;
+    ObjectMapper mapper;
+    ModelJSONMapper model2Json;
+    String yangModelString;
+
+    @Before
+    public void init(){
+        endpointPropMapJson = "{\"meta\":{\"dependent-vtags\":[{\"resource-id\":\"my-default-network-map\",\"tag\":\"7915dc0290c2705481c491a2b4ffbec482b3cf62\"}]},\"endpoint-properties\":{\"ipv4:192.0.2.34\":{\"my-default-network-map.pid\":\"PID1\",\"priv:ietf-example-prop\":\"1\"},\"ipv4:203.0.113.129\":{\"my-default-network-map.pid\":\"PID3\"}}}";
+        converter = new RFC2ModelEndpointPropMapConverter();
+        mapper = new ObjectMapper();
+        model2Json = new ModelJSONMapper();
+        yangModelString = "{\"alto-service:meta\":{\"alto-service:dependent-vtags\":[{\"alto-service:resource-id\":\"my-default-network-map\",\"alto-service:tag\":\"7915dc0290c2705481c491a2b4ffbec482b3cf62\"}]},\"alto-service:endpoint-properties\":[{\"alto-service:endpoint\":\"ipv4:192.0.2.34\",\"alto-service:properties\":[{\"alto-service:property-type\":\"my-default-network-map.pid\",\"alto-service:property\":\"PID1\"},{\"alto-service:property-type\":\"priv:ietf-example-prop\",\"alto-service:property\":\"1\"}]},{\"alto-service:endpoint\":\"ipv4:203.0.113.129\",\"alto-service:properties\":[{\"alto-service:property-type\":\"my-default-network-map.pid\",\"alto-service:property\":\"PID3\"}]}]}";
+    }
+
+    @Test
+    public void onRFC2Model() throws Exception{
+        RFC7285EndpointPropertyMap endpointPropertyMap = mapper.readValue(this.endpointPropMapJson, RFC7285EndpointPropertyMap.class);
+        ModelEndpointPropertyMap model = converter.convert(endpointPropertyMap);
+        String resultJson = model2Json.asJSON(model);
+        Assert.assertEquals(resultJson, this.yangModelString);
+    }
+}
diff --git a/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelNetworkMapConverterTest.java b/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/RFC2ModelNetworkMapConverterTest.java
new file mode 100644 (file)
index 0000000..e4708d6
--- /dev/null
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2014 André Martins, Colin Dixon, Evan Zeller and others. All
+ * rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.alto.commons.types.converter;
+
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285JSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285NetworkMap;
+import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
+import org.opendaylight.alto.commons.types.model150404.ModelNetworkMap;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class RFC2ModelNetworkMapConverterTest {
+
+    private RFC2ModelNetworkMapConverter nmconv;
+    private RFC7285JSONMapper rfcMapper;
+    private ModelJSONMapper modelMapper;
+
+    @Before
+    public void init() {
+        nmconv = new RFC2ModelNetworkMapConverter();
+        rfcMapper = new RFC7285JSONMapper();
+        modelMapper = new ModelJSONMapper();
+    }
+
+    @Test
+    public void onRFC2ModelNetworkMap() throws Exception {
+        String testInput = "{\"network-map\": {\"PID1\": {\"ipv4\": [\"192.0.2.0/24\", \"198.51.100.0/25\"]}, \"PID2\": {\"ipv4\": [\"198.51.100.128/25\"]}, \"PID3\": {\"ipv6\": [\"::/0\"], \"ipv4\": [\"0.0.0.0/0\"]}}, \"meta\": {\"vtag\": {\"tag\": \"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785\", \"resource-id\": \"my-default-network-map\"}}}";
+        RFC7285NetworkMap rfcMap = rfcMapper.asNetworkMap(testInput);
+        ModelNetworkMap modelMap = nmconv.convert(rfcMap);
+        String result = modelMapper.asJSON(modelMap);
+        String testOutput = "{\"alto-service:resource-id\":\"my-default-network-map\",\"alto-service:tag\":\"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785\",\"alto-service:map\":[{\"alto-service:pid\":\"PID1\",\"alto-service:endpoint-address-group\":[{\"alto-service:address-type\":\"ipv4\",\"alto-service:endpoint-prefix\":[\"192.0.2.0/24\",\"198.51.100.0/25\"]}]},{\"alto-service:pid\":\"PID2\",\"alto-service:endpoint-address-group\":[{\"alto-service:address-type\":\"ipv4\",\"alto-service:endpoint-prefix\":[\"198.51.100.128/25\"]}]},{\"alto-service:pid\":\"PID3\",\"alto-service:endpoint-address-group\":[{\"alto-service:address-type\":\"ipv4\",\"alto-service:endpoint-prefix\":[\"0.0.0.0/0\"]},{\"alto-service:address-type\":\"ipv6\",\"alto-service:endpoint-prefix\":[\"::/0\"]}]}]}";
+        Assert.assertEquals(testOutput, result);
+    }
+}
diff --git a/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCCostMapConverterTest.java b/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCCostMapConverterTest.java
new file mode 100644 (file)
index 0000000..8bc247e
--- /dev/null
@@ -0,0 +1,34 @@
+package org.opendaylight.alto.commons.types.converter;
+
+import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class YANGJSON2RFCCostMapConverterTest {
+    String costMapJson;
+    YANGJSON2RFCCostMapConverter converter;
+    ObjectMapper mapper;
+    ModelJSONMapper model2Json;
+    String yangModelString;
+
+    @Before
+    public void init() {
+        yangModelString = "{\"key\":{\"resourceId\":{\"value\":\"my-default-network-map-routingcost-numerical\"}},\"map\":[{\"key\":{\"src\":{\"value\":\"PID3\"}},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Map\",\"dstCosts\":[{\"dst\":{\"value\":\"PID2\"},\"cost\":\"15\"},{\"dst\":{\"value\":\"PID1\"},\"cost\":\"20\"}],\"src\":{\"value\":\"PID3\"}},{\"key\":{\"src\":{\"value\":\"PID2\"}},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Map\",\"dstCosts\":[{\"dst\":{\"value\":\"PID2\"},\"cost\":\"1\"},{\"dst\":{\"value\":\"PID1\"},\"cost\":\"5\"},{\"dst\":{\"value\":\"PID3\"},\"cost\":\"15\"}],\"src\":{\"value\":\"PID2\"}},{\"key\":{\"src\":{\"value\":\"PID1\"}},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Map\",\"dstCosts\":[{\"dst\":{\"value\":\"PID2\"},\"cost\":\"5\"},{\"dst\":{\"value\":\"PID1\"},\"cost\":\"1\"},{\"dst\":{\"value\":\"PID3\"},\"cost\":\"10\"}],\"src\":{\"value\":\"PID1\"}}],\"tag\":{\"value\":\"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4786\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.cost.maps.CostMap\",\"resourceId\":{\"value\":\"my-default-network-map-routingcost-numerical\"},\"meta\":{\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Meta\",\"costType\":{\"description\":null,\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.map.meta.CostType\",\"costMetric\":{\"value\":\"routingcost\",\"enumeration\":null,\"string\":\"routingcost\"},\"costMode\":\"Numerical\"},\"dependentVtags\":[{\"key\":{\"resourceId\":{\"value\":\"my-default-network-map\"}},\"tag\":{\"value\":\"3ee2cb7e8d63d9fab71b9b34cbf764436315542e\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.dependent.vtags.DependentVtags\",\"resourceId\":{\"value\":\"my-default-network-map\"}}]}}";
+        converter = new YANGJSON2RFCCostMapConverter();
+        mapper = new ObjectMapper();
+        model2Json = new ModelJSONMapper();
+        costMapJson = "{\"meta\":{\"dependent-vtags\":[{\"resource-id\":\"my-default-network-map\",\"tag\":\"3ee2cb7e8d63d9fab71b9b34cbf764436315542e\"}],\"cost-type\":{\"cost-mode\":\"numerical\",\"cost-metric\":\"routingcost\"}},\"cost-map\":{\"PID3\":{\"PID2\":15.0,\"PID1\":20.0},\"PID2\":{\"PID2\":1.0,\"PID1\":5.0,\"PID3\":15.0},\"PID1\":{\"PID2\":5.0,\"PID1\":1.0,\"PID3\":10.0}}}";
+    }
+
+    @Test
+    public void onYANGJSON2RFC() throws Exception {
+        JsonNode node = mapper.readTree(yangModelString);
+        RFC7285CostMap costMap = converter.convert(node);
+        String resultJson = model2Json.asJSON(costMap);
+        Assert.assertEquals(resultJson, this.costMapJson);
+    }
+}
diff --git a/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCNetworkMapConverterTest.java b/alto-commons/src/test/java/org/opendaylight/alto/commons/types/converter/YANGJSON2RFCNetworkMapConverterTest.java
new file mode 100644 (file)
index 0000000..0a07fb2
--- /dev/null
@@ -0,0 +1,33 @@
+package org.opendaylight.alto.commons.types.converter;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+//import org.opendaylight.alto.commons.types.model150404.ModelNetworkMap;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285JSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285NetworkMap;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class YANGJSON2RFCNetworkMapConverterTest {
+    private RFC7285JSONMapper rfcMapper;
+    private YANGJSON2RFCNetworkMapConverter ynmc;
+    private ObjectMapper objectMapper;
+    private RFC2ModelNetworkMapConverter nmconv;
+    @Before
+    public void init() {
+        rfcMapper = new RFC7285JSONMapper();
+        objectMapper = new ObjectMapper();
+        ynmc = new YANGJSON2RFCNetworkMapConverter();
+    }
+
+    @Test
+    public void onModel2RFCNetworkMap() throws Exception {
+        String testInput = "{\"resourceId\":{\"value\":\"my-default-network-map\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMap\",\"tag\":{\"value\":\"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785\"},\"key\":{\"resourceId\":{\"value\":\"my-default-network-map\"}},\"map\":[{\"endpointAddressGroup\":[{\"endpointPrefix\":[{\"ipv4Prefix\":null,\"ipv6Prefix\":{\"value\":\"::/0\"},\"value\":\"::/0\"}],\"addressType\":{\"value\":\"ipv6\",\"enumeration\":\"Ipv6\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroup\",\"key\":{\"addressType\":{\"value\":\"ipv6\",\"enumeration\":\"Ipv6\"}}},{\"endpointPrefix\":[{\"ipv4Prefix\":{\"value\":\"0.0.0.0/0\"},\"ipv6Prefix\":null,\"value\":\"0.0.0.0/0\"}],\"addressType\":{\"value\":\"ipv4\",\"enumeration\":\"Ipv4\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroup\",\"key\":{\"addressType\":{\"value\":\"ipv4\",\"enumeration\":\"Ipv4\"}}}],\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map\",\"key\":{\"pid\":{\"value\":\"PID3\"}},\"pid\":{\"value\":\"PID3\"}},{\"endpointAddressGroup\":[{\"endpointPrefix\":[{\"ipv4Prefix\":{\"value\":\"198.51.100.128/25\"},\"ipv6Prefix\":null,\"value\":\"198.51.100.128/25\"}],\"addressType\":{\"value\":\"ipv4\",\"enumeration\":\"Ipv4\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroup\",\"key\":{\"addressType\":{\"value\":\"ipv4\",\"enumeration\":\"Ipv4\"}}}],\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map\",\"key\":{\"pid\":{\"value\":\"PID2\"}},\"pid\":{\"value\":\"PID2\"}},{\"endpointAddressGroup\":[{\"endpointPrefix\":[{\"ipv4Prefix\":{\"value\":\"192.0.2.0/24\"},\"ipv6Prefix\":null,\"value\":\"192.0.2.0/24\"},{\"ipv4Prefix\":{\"value\":\"198.51.100.0/25\"},\"ipv6Prefix\":null,\"value\":\"198.51.100.0/25\"}],\"addressType\":{\"value\":\"ipv4\",\"enumeration\":\"Ipv4\"},\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroup\",\"key\":{\"addressType\":{\"value\":\"ipv4\",\"enumeration\":\"Ipv4\"}}}],\"implementedInterface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map\",\"key\":{\"pid\":{\"value\":\"PID1\"}},\"pid\":{\"value\":\"PID1\"}}]}";
+        ObjectNode node = (ObjectNode) objectMapper.readTree(testInput);
+        RFC7285NetworkMap rnm = ynmc.convert(node);
+        String result = rfcMapper.asJSON(rnm);
+        String testOutput = "{\"meta\":{\"vtag\":{\"resource-id\":\"my-default-network-map\",\"tag\":\"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785\"}},\"network-map\":{\"PID3\":{\"ipv4\":[\"0.0.0.0/0\"],\"ipv6\":[\"::/0\"]},\"PID2\":{\"ipv4\":[\"198.51.100.128/25\"]},\"PID1\":{\"ipv4\":[\"192.0.2.0/24\",\"198.51.100.0/25\"]}}}";
+        Assert.assertEquals(testOutput, result);
+    }
+}