JUnit JAXB tests for Neutron Networks 78/17078/3
authorRyan Moats <rmoats@us.ibm.com>
Tue, 24 Mar 2015 13:24:08 +0000 (08:24 -0500)
committerRyan Moats <rmoats@us.ibm.com>
Sat, 28 Mar 2015 01:41:34 +0000 (20:41 -0500)
This code currently changes the namespace treatment of router:external
and provider: extensions and so may be unsafe for the NB code.

Change-Id: I7916679a96cbe51ba2157d29e0a501b73da185e4
Signed-off-by: Ryan Moats <rmoats@us.ibm.com>
model/src/main/yang/neutron-provider.yang
neutron-spi/pom.xml
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronFirewallRule.java
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork.java
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork_Segment.java [new file with mode: 0644]
neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java [new file with mode: 0644]

index f1088944905b32cd919163c2c1a48561446a40a3..088b208aa5c1ed2e044f8ffceb73224a2d147161 100644 (file)
@@ -60,7 +60,7 @@ module neutron-provider {
           This module augments the networks container in the neutron-networks
           module with provider information.
           ";
-        list providers {
+        list segments {
             description "List of provider network(s) associated with this network.";
             key segmentation-id;
             uses provider-attrs;
index b7a9ab2086772f112956e4c103a02a4166556871..7c26fec13127356ab4021a6d1769401adc9272f0 100644 (file)
        <version>1.19</version>
        <scope>test</scope>
     </dependency>
+    <dependency>
+       <groupId>com.sun.jersey</groupId>
+       <artifactId>jersey-json</artifactId>
+       <version>1.19</version>
+       <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
index a1c46f83ecb075dc2e6ddefd6e177772ecd1c566..c02ea70177fc3753177f18d1d344e39d4d4c2b05 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 Red Hat, Inc.  All rights reserved.
+ * Copyright (C) 2015 Red Hat, Inc. 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,
index 670af585e880e3fd13d6669818ae42f9ab0fa013..621cdaa0fc0af6a1fe316fb95f246a5951991eaa 100644 (file)
@@ -42,16 +42,21 @@ public class NeutronNetwork implements Serializable, INeutronObject {
     @XmlElement (name = "tenant_id")
     String tenantID;                 // tenant for this network
 
-    @XmlElement (defaultValue = "false", namespace = "router", name = "external")
+    @XmlElement (defaultValue = "false", name = "router:external")
+    //    @XmlElement (defaultValue="false", namespace="router", name="external")
     Boolean routerExternal;           // network external or not
 
-    @XmlElement (defaultValue = "flat", namespace = "provider", name = "network_type")
+    @XmlElement (defaultValue = "flat", name = "provider:network_type")
+    //    @XmlElement (defaultValue="flat", namespace="provider", name="network_type")
     String providerNetworkType;      // provider network type (flat or vlan)
 
-    @XmlElement (namespace = "provider", name = "physical_network")
+    @XmlElement (name = "provider:physical_network")
+    //    @XmlElement (namespace="provider", name="physical_network")
     String providerPhysicalNetwork;  // provider physical network (name)
 
-    @XmlElement (namespace = "provider", name = "segmentation_id")
+    @XmlElement (name = "provider:segmentation_id")
+    //    @XmlElement (namespace="provider", name="segmentation_id")
+
     String providerSegmentationID;   // provide segmentation ID (vlan ID)
 
     @XmlElement (name = "status")
@@ -60,6 +65,9 @@ public class NeutronNetwork implements Serializable, INeutronObject {
     @XmlElement (name = "subnets")
     List<String> subnets;            // subnets (read-only)
 
+    @XmlElement (name="segments")
+    List<NeutronNetwork_Segment> segments;
+
     /* This attribute lists the ports associated with an instance
      * which is needed for determining if that instance can be deleted
      */
@@ -191,6 +199,14 @@ public class NeutronNetwork implements Serializable, INeutronObject {
         subnets.remove(uuid);
     }
 
+    public void setSegments(List<NeutronNetwork_Segment> segments) {
+        this.segments = segments;
+    }
+
+    public List<NeutronNetwork_Segment> getSegments() {
+        return segments;
+    }
+
     public List<NeutronPort> getPortsOnNetwork() {
         return myPorts;
     }
@@ -241,6 +257,18 @@ public class NeutronNetwork implements Serializable, INeutronObject {
             if (s.equals("tenant_id")) {
                 ans.setTenantID(this.getTenantID());
             }
+            if (s.equals("router:external")) {
+                ans.setRouterExternal(this.getRouterExternal());
+            }
+            if (s.equals("provider:segmentation_id")) {
+                ans.setProviderSegmentationID(this.getProviderSegmentationID());
+            }
+            if (s.equals("provider:physical_network")) {
+                ans.setProviderPhysicalNetwork(this.getProviderPhysicalNetwork());
+            }
+            if (s.equals("provider:network_type")) {
+                ans.setProviderNetworkType(this.getProviderNetworkType());
+            }
         }
         return ans;
     }
@@ -251,7 +279,8 @@ public class NeutronNetwork implements Serializable, INeutronObject {
                 + adminStateUp + ", shared=" + shared + ", tenantID=" + tenantID + ", routerExternal=" + routerExternal
                 + ", providerNetworkType=" + providerNetworkType + ", providerPhysicalNetwork="
                 + providerPhysicalNetwork + ", providerSegmentationID=" + providerSegmentationID + ", status=" + status
-                + ", subnets=" + subnets + ", myPorts=" + myPorts + "]";
+                + ", subnets=" + subnets + ", myPorts=" + myPorts
+            + ", segments = " + segments + "]";
     }
 }
 
diff --git a/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork_Segment.java b/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork_Segment.java
new file mode 100644 (file)
index 0000000..43f3ba3
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright IBM Corporation, 2013.  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.neutron.spi;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "network")
+@XmlAccessorType(XmlAccessType.NONE)
+
+public class NeutronNetwork_Segment implements Serializable {
+    // See OpenStack Network API v2.0 Reference for description of
+    // annotated attributes
+
+    private static final long serialVersionUID = 1L;
+
+    @XmlElement (defaultValue="flat", name="provider:network_type")
+    //    @XmlElement (defaultValue="flat", namespace="provider", name="network_type")
+    String providerNetworkType;      // provider network type (flat or vlan)
+
+    @XmlElement (name="provider:physical_network")
+    //    @XmlElement (namespace="provider", name="physical_network")
+    String providerPhysicalNetwork;  // provider physical network (name)
+
+    @XmlElement (name="provider:segmentation_id")
+    //    @XmlElement (namespace="provider", name="segmentation_id")
+    String providerSegmentationID;   // provide segmentation ID (vlan ID)
+
+    public NeutronNetwork_Segment() {
+    }
+
+    public String getProviderNetworkType() {
+        return providerNetworkType;
+    }
+
+    public void setProviderNetworkType(String providerNetworkType) {
+        this.providerNetworkType = providerNetworkType;
+    }
+
+    public String getProviderPhysicalNetwork() {
+        return providerPhysicalNetwork;
+    }
+
+    public void setProviderPhysicalNetwork(String providerPhysicalNetwork) {
+        this.providerPhysicalNetwork = providerPhysicalNetwork;
+    }
+
+    public String getProviderSegmentationID() {
+        return providerSegmentationID;
+    }
+
+    public void setProviderSegmentationID(String providerSegmentationID) {
+        this.providerSegmentationID = providerSegmentationID;
+    }
+
+    @Override
+    public String toString() {
+        return "NeutronNetwork_Segment [ " +
+               ", providerNetworkType=" + providerNetworkType +
+               ", providerPhysicalNetwork=" + providerPhysicalNetwork +
+               ", providerSegmentationID=" + providerSegmentationID + "]";
+    }
+}
+
diff --git a/neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java b/neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java
new file mode 100644 (file)
index 0000000..f616680
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2015 IBM, Inc.
+ *
+ * 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.neutron.spi;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.opendaylight.neutron.spi.JaxbTestHelper;
+import org.opendaylight.neutron.spi.NeutronNetwork;
+
+public class NeutronNetworkJAXBTest {
+
+    private static final String NeutronNetwork_SingleProvider_sourceJson="{ " +
+         "\"status\": \"ACTIVE\", " +
+        "\"subnets\": [ \"3b80198d-4f7b-4f77-9ef5-774d54e17126\" ], " +
+        "\"name\": \"net1\", " +
+        "\"admin_state_up\": true, " +
+        "\"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", " +
+        "\"router:external\": false, " +
+        "\"provider:segmentation_id\": \"2\", " +
+        "\"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", " +
+        "\"provider:network_type\": \"vlan\", " +
+        "\"shared\": false, " +
+        "\"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" }";
+
+    @Test
+    public void test_NeutronNetwork_SingleProvider_JAXB() {
+        NeutronNetwork dummyObject = new NeutronNetwork();
+        try {
+            NeutronNetwork testObject = (NeutronNetwork) JaxbTestHelper.jaxbUnmarshall(dummyObject, NeutronNetwork_SingleProvider_sourceJson);
+            Assert.assertEquals("NeutronNetwork JAXB Test 1: Testing id failed",
+                  "4e8e5957-649f-477b-9e5b-f1f75b21c03c", testObject.getID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 2: Testing tenant_id failed",
+                  "9bacb3c5d39d41a79512987f338cf177", testObject.getTenantID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 3: Testing physical network id failed",
+                  "8bab8453-1bc9-45af-8c70-f83aa9b50453", testObject.getProviderPhysicalNetwork());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 4: Testing status failed",
+                  "ACTIVE", testObject.getStatus());
+
+            List<String> subnets = testObject.getSubnets();
+            Assert.assertEquals("NeutronNetwork JAXB Test 5.1: Testing subnets list length failed",
+                  1, subnets.size());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 5.2: Testing subnets value failed",
+                                "3b80198d-4f7b-4f77-9ef5-774d54e17126", subnets.get(0));
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 6: Testing name failed",
+                                "net1", testObject.getNetworkName());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 7: Testing admin state up failed",
+                  true, testObject.getAdminStateUp());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 8: Testing router external failed",
+                  false, testObject.getRouterExternal());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9: Testing provider segmentation id failed",
+                  "2", testObject.getProviderSegmentationID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 10: Testing provider network type id failed",
+                  "vlan", testObject.getProviderNetworkType());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 11: Testing shared failed",
+                  false, testObject.getShared());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static final String NeutronNetwork_MultipleProvider_sourceJson="{" +
+        "\"status\": \"ACTIVE\", " +
+        "\"subnets\": [ \"3b80198d-4f7b-4f77-9ef5-774d54e17126\" ], " +
+        "\"name\": \"net1\", " +
+        "\"admin_state_up\": true, " +
+        "\"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", " +
+        "\"router:external\": false, " +
+        "\"segments\": [ { " +
+            "\"provider:segmentation_id\": \"2\", " +
+            "\"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", " +
+            "\"provider:network_type\": \"vlan\" }, " +
+        "{ \"provider:segmentation_id\": null, " +
+            "\"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50454\", " +
+            "\"provider:network_type\": \"stt\" } ], " +
+        "\"shared\": false, " +
+        "\"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" }";
+
+    @Test
+    public void test_NeutronNetwork_MultipleProvider_JAXB() {
+        NeutronNetwork dummyObject = new NeutronNetwork();
+        try {
+            NeutronNetwork testObject = (NeutronNetwork) JaxbTestHelper.jaxbUnmarshall(dummyObject, NeutronNetwork_MultipleProvider_sourceJson);
+            Assert.assertEquals("NeutronNetwork JAXB Test 1: Testing id failed",
+                  "4e8e5957-649f-477b-9e5b-f1f75b21c03c", testObject.getID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 2: Testing tenant_id failed",
+                  "9bacb3c5d39d41a79512987f338cf177", testObject.getTenantID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 3: Testing status failed",
+                  "ACTIVE", testObject.getStatus());
+
+            List<String> subnets = testObject.getSubnets();
+            Assert.assertEquals("NeutronNetwork JAXB Test 4.1: Testing subnets list length failed",
+                  1, subnets.size());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 4.2: Testing subnets value failed",
+                                "3b80198d-4f7b-4f77-9ef5-774d54e17126", subnets.get(0));
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 5: Testing name failed",
+                                "net1", testObject.getNetworkName());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 6: Testing admin state up failed",
+                  true, testObject.getAdminStateUp());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 7: Testing router external failed",
+                  false, testObject.getRouterExternal());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 8: Testing shared failed",
+                  false, testObject.getShared());
+
+            List<NeutronNetwork_Segment> segments = testObject.getSegments();
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.1: Testing segments list length failed",
+                  2, segments.size());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.2: Testing segment index 0 segmentation id failed",
+                                "2", segments.get(0).getProviderSegmentationID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.3: Testing segment index 0 physical network failed",
+                                "8bab8453-1bc9-45af-8c70-f83aa9b50453", segments.get(0).getProviderPhysicalNetwork());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.4: Testing segment index 0 network type failed",
+                                "vlan", segments.get(0).getProviderNetworkType());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.5: Testing segment index 1 segmentation id failed",
+                                null, segments.get(1).getProviderSegmentationID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.3: Testing segment index 1 physical network failed",
+                                "8bab8453-1bc9-45af-8c70-f83aa9b50454", segments.get(1).getProviderPhysicalNetwork());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 9.4: Testing segment index 1 network type failed",
+                                "stt", segments.get(1).getProviderNetworkType());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}