SouthboundIT for vlan, vlanmode and vlan trunks 50/18850/2
authorRyan Goulding <ryandgoulding@gmail.com>
Wed, 22 Apr 2015 15:03:58 +0000 (11:03 -0400)
committerRyan Goulding <ryandgoulding@gmail.com>
Wed, 22 Apr 2015 15:51:46 +0000 (11:51 -0400)
Add integration tests to verify vlan, vlan mode and vlan trunks functionality.

Change-Id: I745ba976a244b42d7f38a9d43db8eacac77ba416
Signed-off-by: Ryan Goulding <ryandgoulding@gmail.com>
southbound/southbound-it/src/test/java/org/opendaylight/ovsdb/southbound/it/SouthboundIT.java

index 55dc19fd1ee872d7faeeacd04da3a21f842d117e..97329cdc0e158257a76b2b9d0a3f1fbb23ac913a 100644 (file)
@@ -20,8 +20,10 @@ import com.google.common.collect.ObjectArrays;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 import javax.inject.Inject;
 
@@ -37,12 +39,14 @@ import org.opendaylight.ovsdb.southbound.SouthboundMapper;
 import org.opendaylight.ovsdb.southbound.SouthboundProvider;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbPortInterfaceAttributes.VlanMode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
@@ -61,6 +65,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.PortExternalIdsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.PortOtherConfigs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.PortOtherConfigsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Trunks;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.TrunksBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
@@ -495,6 +501,11 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         Assume.assumeTrue(disconnectOvsdbNode(connectionInfo));
     }
 
+    private InstanceIdentifier<Node> getTpIid(ConnectionInfo connectionInfo, OvsdbBridgeAugmentation bridge) {
+        return SouthboundMapper.createInstanceIdentifier(connectionInfo,
+            bridge.getBridgeName());
+    }
+
     @Test
     public void testTerminationPointOfPort() throws InterruptedException {
         ConnectionInfo connectionInfo = getConnectionInfo(addressStr, portStr);
@@ -513,10 +524,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         Long ofPortExpected = new Long(45002);
         ovsdbTerminationBuilder.setOfport(ofPortExpected);
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                bridge.getBridgeName());
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -551,10 +561,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         ovsdbTerminationBuilder.setOfport(ofPortInput);
         ovsdbTerminationBuilder.setOfportRequest(ofPortRequestExpected);
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                new OvsdbBridgeName(SouthboundITConstants.BRIDGE_NAME));
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -599,10 +608,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         ovsdbTerminationBuilder.setPortExternalIds(portExternalIds);
 
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                bridge.getBridgeName());
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -644,10 +652,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         ovsdbTerminationBuilder.setInterfaceExternalIds(interfaceExternalIds);
 
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                bridge.getBridgeName());
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -690,10 +697,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         ovsdbTerminationBuilder.setOptions(options);
 
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                bridge.getBridgeName());
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -737,10 +743,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
 
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
         Thread.sleep(1000);
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                bridge.getBridgeName());
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -785,10 +790,9 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         ovsdbTerminationBuilder.setPortOtherConfigs(portOtherConfigs);
 
         Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
-        InstanceIdentifier<Node> terminationPointIid =
-                SouthboundMapper.createInstanceIdentifier(connectionInfo,
-                bridge.getBridgeName());
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
         Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
 
         List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
         for (TerminationPoint terminationPoint : terminationPoints) {
@@ -806,6 +810,155 @@ public class SouthboundIT extends AbstractMdsalTestBase {
         Assert.assertTrue(deleteBridge(connectionInfo));
     }
 
+    @Test
+    public void testTerminationPointVlan() throws InterruptedException {
+        ConnectionInfo connectionInfo = getConnectionInfo(addressStr, portStr);
+        connectOvsdbNode(connectionInfo);
+        Assert.assertTrue(addBridge(connectionInfo, SouthboundITConstants.BRIDGE_NAME));
+        OvsdbBridgeAugmentation bridge = getBridge(connectionInfo);
+        Assert.assertNotNull(bridge);
+        NodeId nodeId = SouthboundMapper.createManagedNodeId(SouthboundMapper.createInstanceIdentifier(
+                connectionInfo, bridge.getBridgeName()));
+        OvsdbTerminationPointAugmentationBuilder ovsdbTerminationBuilder =
+                createGenericOvsdbTerminationPointAugmentationBuilder();
+        String portName = "testTerminationPointVlanId";
+        ovsdbTerminationBuilder.setName(portName);
+        //setup
+        Integer vlanId = new Integer(4000);
+        ovsdbTerminationBuilder.setVlanTag(new VlanId(vlanId));
+
+        Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
+        InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
+        Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+        Assert.assertNotNull(terminationPointNode);
+
+        List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
+        for (TerminationPoint terminationPoint : terminationPoints) {
+            OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation =
+                    terminationPoint.getAugmentation(OvsdbTerminationPointAugmentation.class);
+            if (ovsdbTerminationPointAugmentation.getName().equals(portName)) {
+                //test
+                VlanId actualVlanId = ovsdbTerminationPointAugmentation.getVlanTag();
+                Assert.assertNotNull(actualVlanId);
+                Integer actualVlanIdInt = actualVlanId.getValue();
+                Assert.assertTrue(actualVlanIdInt.equals(vlanId));
+            }
+        }
+        Assert.assertTrue(deleteBridge(connectionInfo));
+    }
+
+    @Test
+    public void testTerminationPointVlanModes() throws InterruptedException {
+        VlanMode []vlanModes = VlanMode.values();
+        for (VlanMode vlanMode : vlanModes) {
+            ConnectionInfo connectionInfo = getConnectionInfo(addressStr, portStr);
+            connectOvsdbNode(connectionInfo);
+            Assert.assertTrue(addBridge(connectionInfo, SouthboundITConstants.BRIDGE_NAME));
+            OvsdbBridgeAugmentation bridge = getBridge(connectionInfo);
+            Assert.assertNotNull(bridge);
+            NodeId nodeId = SouthboundMapper.createManagedNodeId(SouthboundMapper.createInstanceIdentifier(
+                    connectionInfo, bridge.getBridgeName()));
+            OvsdbTerminationPointAugmentationBuilder ovsdbTerminationBuilder =
+                    createGenericOvsdbTerminationPointAugmentationBuilder();
+            String portName = "testTerminationPointVlanMode" + vlanMode.toString();
+            ovsdbTerminationBuilder.setName(portName);
+            //setup
+            ovsdbTerminationBuilder.setVlanMode(vlanMode);
+            Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
+            InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
+            Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+            Assert.assertNotNull(terminationPointNode);
+
+            List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
+            for (TerminationPoint terminationPoint : terminationPoints) {
+                OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation =
+                        terminationPoint.getAugmentation(OvsdbTerminationPointAugmentation.class);
+                if (ovsdbTerminationPointAugmentation.getName().equals(portName)) {
+                    //test
+                    Assert.assertTrue(ovsdbTerminationPointAugmentation.getVlanMode().equals(vlanMode));
+                }
+            }
+            Assert.assertTrue(deleteBridge(connectionInfo));
+        }
+    }
+
+    private ArrayList<Set<Integer>> generateVlanSets() {
+        ArrayList<Set<Integer>> vlanSets = new ArrayList<Set<Integer>>();
+
+        Set<Integer> emptySet = new HashSet<Integer>();
+        vlanSets.add(emptySet);
+
+        Set<Integer> singleSet = new HashSet<Integer>();
+        Integer single = new Integer(2222);
+        singleSet.add(single);
+        vlanSets.add(singleSet);
+
+        Set<Integer> minMaxMiddleSet = new HashSet<Integer>();
+        Integer min = new Integer(0);
+        minMaxMiddleSet.add(min);
+        Integer max = new Integer(4095);
+        minMaxMiddleSet.add(max);
+        Integer minPlusOne = new Integer(min + 1);
+        minMaxMiddleSet.add(minPlusOne);
+        Integer maxMinusOne = new Integer(max - 1);
+        minMaxMiddleSet.add(maxMinusOne);
+        Integer middle = new Integer((max - min) / 2);
+        minMaxMiddleSet.add(middle);
+        vlanSets.add(minMaxMiddleSet);
+
+        return vlanSets;
+    }
+
+    private List<Trunks> buildTrunkList(Set<Integer> trunkSet) {
+        List<Trunks> trunkList = Lists.newArrayList();
+        for (Integer trunk : trunkSet) {
+            TrunksBuilder trunkBuilder = new TrunksBuilder();
+            trunkBuilder.setTrunk(new VlanId(trunk));
+            trunkList.add(trunkBuilder.build());
+        }
+        return trunkList;
+    }
+
+    @Test
+    public void testTerminationPointVlanTrunks() throws InterruptedException {
+        ArrayList<Set<Integer>> vlanSets = generateVlanSets();
+        int testCase = 0;
+        for (Set<Integer> vlanSet : vlanSets) {
+            ++testCase;
+            ConnectionInfo connectionInfo = getConnectionInfo(addressStr, portStr);
+            connectOvsdbNode(connectionInfo);
+            Assert.assertTrue(addBridge(connectionInfo, SouthboundITConstants.BRIDGE_NAME));
+            OvsdbBridgeAugmentation bridge = getBridge(connectionInfo);
+            Assert.assertNotNull(bridge);
+            NodeId nodeId = SouthboundMapper.createManagedNodeId(SouthboundMapper.createInstanceIdentifier(
+                    connectionInfo, bridge.getBridgeName()));
+            OvsdbTerminationPointAugmentationBuilder ovsdbTerminationBuilder =
+                    createGenericOvsdbTerminationPointAugmentationBuilder();
+            String portName = "testTerminationPointVlanTrunks" + testCase;
+            ovsdbTerminationBuilder.setName(portName);
+            //setup
+            List<Trunks> trunks = buildTrunkList(vlanSet);
+            ovsdbTerminationBuilder.setTrunks(trunks);
+            Assert.assertTrue(addTerminationPoint(nodeId, portName, ovsdbTerminationBuilder));
+            InstanceIdentifier<Node> terminationPointIid = getTpIid(connectionInfo, bridge);
+            Node terminationPointNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, terminationPointIid);
+            Assert.assertNotNull(terminationPointNode);
+
+            List<TerminationPoint> terminationPoints = terminationPointNode.getTerminationPoint();
+            for (TerminationPoint terminationPoint : terminationPoints) {
+                OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation =
+                        terminationPoint.getAugmentation(OvsdbTerminationPointAugmentation.class);
+                if (ovsdbTerminationPointAugmentation.getName().equals(portName)) {
+                    List<Trunks> actualTrunks = ovsdbTerminationPointAugmentation.getTrunks();
+                    for (Trunks trunk : trunks) {
+                        Assert.assertTrue(actualTrunks.contains(trunk));
+                    }
+                }
+            }
+            Assert.assertTrue(deleteBridge(connectionInfo));
+        }
+    }
+
     /**
      * isBundleReady is used to check if the requested bundle is Active
      */