2f4989577bb8154f7682c3ed8abee5c821b918dd
[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.GlobalConstants;
28 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
29 import org.opendaylight.controller.sal.utils.NodeCreator;
30 import org.opendaylight.controller.sal.utils.ServiceHelper;
31
32 public class SwitchTest {
33
34     @Test
35     public void testSwitchCreation() {
36
37         Node node = NodeCreator.createOFNode(((long) 10));
38         Node node2 = NodeCreator.createOFNode(((long) 11));
39         NodeConnector nc0 = NodeConnectorCreator.createOFNodeConnector(
40                 (short) 20, node);
41         NodeConnector nc1 = NodeConnectorCreator.createOFNodeConnector(
42                 (short) 30, node);
43         NodeConnector nc2 = NodeConnectorCreator.createOFNodeConnector(
44                 (short) 40, node);
45         NodeConnector nc3 = NodeConnectorCreator.createOFNodeConnector(
46                 (short) 50, node);
47         NodeConnector nc4 = NodeConnectorCreator.createOFNodeConnector(
48                 (short) 60, node);
49         NodeConnector nc5 = NodeConnectorCreator.createOFNodeConnector(
50                 (short) 70, node);
51
52         Set<NodeConnector> ncSet = new HashSet<NodeConnector>();
53         ArrayList<NodeConnector> portList = new ArrayList<NodeConnector>();
54
55         Switch sw = new Switch(node);
56         Switch sw2 = new Switch(node);
57         Assert.assertTrue(sw.equals(sw2));
58         sw2.setNode(node2);
59         Assert.assertTrue(sw2.getNode().equals(node2));
60         Assert.assertFalse(sw.equals(sw2));
61
62         ncSet.add(nc0);
63         ncSet.add(nc1);
64         ncSet.add(nc2);
65         sw.addNodeConnector(nc3);
66         try {
67             sw.addNodeConnector(nc3);
68         } catch (Exception e) {
69             fail("Attempted to add duplicate NodeConnector to set");
70         }
71
72         portList.add(nc4);
73         portList.add(nc5);
74
75         sw.setNodeConnectors(ncSet);
76         sw.addSpanPorts(portList);
77
78         sw.setDataLayerAddress(null);
79         Assert.assertNull(sw.getDataLayerAddress());
80         byte[] dlAddress = { (byte) 0x01, (byte) 0x02, (byte) 0x03,
81                 (byte) 0x04, (byte) 0x05, (byte) 0x06 };
82         sw.setDataLayerAddress(dlAddress);
83
84         Node resultNode = sw.getNode();
85         Set<NodeConnector> resultncSet = sw.getNodeConnectors();
86         byte[] resultdlAddress = sw.getDataLayerAddress();
87         ArrayList<NodeConnector> resultSpanPort = (ArrayList<NodeConnector>) sw
88                 .getSpanPorts();
89
90         Assert.assertEquals(node, resultNode);
91         for (int i = 0; i < dlAddress.length; i++)
92             Assert.assertEquals(dlAddress[i], resultdlAddress[i]);
93
94         Assert.assertTrue(ncSet.equals(resultncSet));
95
96         for (int i = 0; i < portList.size(); i++)
97             Assert.assertEquals(portList.get(i), resultSpanPort.get(i));
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 }