Merge "Refactor SubnetConfig"
[controller.git] / opendaylight / switchmanager / api / src / test / java / org / opendaylight / controller / switchmanager / SwitchTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.switchmanager;
10
11 import static org.junit.Assert.fail;
12
13 import java.util.ArrayList;
14 import java.util.HashMap;
15 import java.util.HashSet;
16 import java.util.Map;
17 import java.util.Set;
18
19 import org.junit.Assert;
20 import org.junit.Test;
21 import org.opendaylight.controller.sal.core.Description;
22 import org.opendaylight.controller.sal.core.ForwardingMode;
23 import org.opendaylight.controller.sal.core.Node;
24 import org.opendaylight.controller.sal.core.NodeConnector;
25 import org.opendaylight.controller.sal.core.Property;
26 import org.opendaylight.controller.sal.core.Tier;
27 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
28 import org.opendaylight.controller.sal.utils.NodeCreator;
29
30 public class SwitchTest {
31
32     @Test
33     public void testSwitchCreation() {
34
35         Node node = NodeCreator.createOFNode(((long) 10));
36         Node node2 = NodeCreator.createOFNode(((long) 11));
37         NodeConnector nc0 = NodeConnectorCreator.createOFNodeConnector(
38                 (short) 20, node);
39         NodeConnector nc1 = NodeConnectorCreator.createOFNodeConnector(
40                 (short) 30, node);
41         NodeConnector nc2 = NodeConnectorCreator.createOFNodeConnector(
42                 (short) 40, node);
43         NodeConnector nc3 = NodeConnectorCreator.createOFNodeConnector(
44                 (short) 50, node);
45         NodeConnector nc4 = NodeConnectorCreator.createOFNodeConnector(
46                 (short) 60, node);
47         NodeConnector nc5 = NodeConnectorCreator.createOFNodeConnector(
48                 (short) 70, node);
49
50         Set<NodeConnector> ncSet = new HashSet<NodeConnector>();
51         ArrayList<NodeConnector> portList = new ArrayList<NodeConnector>();
52
53         Switch sw = new Switch(node);
54         Switch sw2 = new Switch(node);
55         Assert.assertTrue(sw.equals(sw2));
56         sw2.setNode(node2);
57         Assert.assertTrue(sw2.getNode().equals(node2));
58         Assert.assertFalse(sw.equals(sw2));
59
60         ncSet.add(nc0);
61         ncSet.add(nc1);
62         ncSet.add(nc2);
63         sw.addNodeConnector(nc3);
64         try {
65             sw.addNodeConnector(nc3);
66         } catch (Exception e) {
67             fail("Attempted to add duplicate NodeConnector to set");
68         }
69
70         portList.add(nc4);
71         portList.add(nc5);
72
73         sw.setNodeConnectors(ncSet);
74         sw.addSpanPorts(portList);
75
76         sw.setDataLayerAddress(null);
77         Assert.assertNull(sw.getDataLayerAddress());
78         byte[] dlAddress = { (byte) 0x01, (byte) 0x02, (byte) 0x03,
79                 (byte) 0x04, (byte) 0x05, (byte) 0x06 };
80         sw.setDataLayerAddress(dlAddress);
81
82         Node resultNode = sw.getNode();
83         Set<NodeConnector> resultncSet = sw.getNodeConnectors();
84         byte[] resultdlAddress = sw.getDataLayerAddress();
85         ArrayList<NodeConnector> resultSpanPort = (ArrayList<NodeConnector>) sw
86                 .getSpanPorts();
87
88         Assert.assertEquals(node, resultNode);
89         for (int i = 0; i < dlAddress.length; i++) {
90             Assert.assertEquals(dlAddress[i], resultdlAddress[i]);
91         }
92
93         Assert.assertTrue(ncSet.equals(resultncSet));
94
95         for (int i = 0; i < portList.size(); i++) {
96             Assert.assertEquals(portList.get(i), resultSpanPort.get(i));
97         }
98     }
99
100     @Test
101     public void testSwitchAddRemovePort() {
102         Node node = NodeCreator.createOFNode(((long) 10));
103
104         NodeConnector nc0 = NodeConnectorCreator.createOFNodeConnector(
105                 (short) 20, node);
106         NodeConnector nc1 = NodeConnectorCreator.createOFNodeConnector(
107                 (short) 30, node);
108         NodeConnector nc4 = NodeConnectorCreator.createOFNodeConnector(
109                 (short) 60, node);
110         NodeConnector nc5 = NodeConnectorCreator.createOFNodeConnector(
111                 (short) 70, node);
112         ArrayList<NodeConnector> portList = new ArrayList<NodeConnector>();
113
114         portList.add(nc4);
115         portList.add(nc5);
116
117         Set<NodeConnector> ncSet = new HashSet<NodeConnector>();
118         ncSet.add(nc0);
119         ncSet.add(nc1);
120
121         Switch sw = new Switch(node);
122         sw.setNodeConnectors(ncSet);
123         sw.removeNodeConnector(nc0);
124         Assert.assertFalse(ncSet.contains(nc0));
125
126         sw.removeSpanPorts(portList);
127         Assert.assertTrue(sw.getSpanPorts().isEmpty());
128
129     }
130
131     @Test
132     public void testSwitchConfig(){
133         Map<String, Property> prop = new HashMap<String, Property>();
134         Property desc = new Description("swicth1");
135         prop.put(desc.getName(), desc);
136         Property tier = new Tier(1);
137         prop.put(tier.getName(), tier);
138         SwitchConfig sc1 = new SwitchConfig("123", prop);
139         SwitchConfig sc2 = new SwitchConfig("123", prop);
140         Property mode = new ForwardingMode(1);
141         prop.put(mode.getName(), mode);
142         SwitchConfig sc3 = new SwitchConfig("123", prop);
143         Assert.assertTrue(sc1.equals(sc2));
144         Assert.assertEquals(tier, sc1.getProperty(Tier.TierPropName));
145         Assert.assertFalse(sc1.equals(sc3));
146         Assert.assertTrue(sc1.hashCode() == sc2.hashCode());
147         Assert.assertTrue(sc1.getNodeProperties().equals(sc2.getNodeProperties()));
148     }
149
150 }