Merge "Refactor Subnet.isSubnetOf - reduce number of 'if' statements. Added unitests."
[controller.git] / opendaylight / switchmanager / api / src / test / java / org / opendaylight / controller / switchmanager / SubnetTest.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 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
15 import java.net.Inet6Address;
16 import java.net.InetAddress;
17 import java.net.UnknownHostException;
18 import java.util.HashSet;
19 import java.util.Set;
20
21 import org.junit.Assert;
22 import org.junit.Test;
23 import org.opendaylight.controller.sal.utils.NodeCreator;
24 import org.opendaylight.controller.sal.core.Node;
25 import org.opendaylight.controller.sal.core.NodeConnector;
26 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
27
28 public class SubnetTest {
29
30     @Test
31     public void testSubnet() throws Exception {
32         InetAddress ipaddr = InetAddress.getByName("100.0.0.1");
33         Subnet subnet = new Subnet(ipaddr, (short) 24, (short) 5);
34         assertTrue(subnet.equals(subnet));
35         assertFalse(subnet.equals(null));
36         assertFalse(subnet.equals(ipaddr));
37         Subnet subnet2 = new Subnet(ipaddr, (short) 24, (short) 5);
38         Inet6Address ipv6 = (Inet6Address) Inet6Address
39                 .getByName("1111::2222:3333:4444:5555:6666");
40         Subnet subnet3 = new Subnet(ipv6, (short) 24, (short) 5);
41         assertTrue(subnet.equals(subnet2));
42         assertFalse(subnet.isMutualExclusive(subnet2));
43         assertTrue(subnet.isMutualExclusive(subnet3));
44         InetAddress subnetAddr = InetAddress.getByName("200.0.0.100");
45
46         assertTrue(subnet.isFlatLayer2() == true);
47
48         Set<NodeConnector> ncSet = new HashSet<NodeConnector>();
49         Node node = NodeCreator.createOFNode(((long) 10));
50         NodeConnector nc0 = NodeConnectorCreator.createOFNodeConnector(
51                 (short) 20, node);
52         NodeConnector nc1 = NodeConnectorCreator.createOFNodeConnector(
53                 (short) 30, node);
54         NodeConnector nc2 = NodeConnectorCreator.createOFNodeConnector(
55                 (short) 40, node);
56
57         ncSet.add(nc0);
58         ncSet.add(nc1);
59         ncSet.add(nc2);
60
61         assertTrue(subnet.hasNodeConnector(nc0));
62         assertFalse(subnet.hasNodeConnector(null));
63         subnet.addNodeConnectors(ncSet);
64         assertTrue(subnet.hasNodeConnector(nc0));
65
66         Set<NodeConnector> resultncSet = subnet.getNodeConnectors();
67         Assert.assertEquals(resultncSet, ncSet);
68         subnet.addNodeConnectors(null);
69         Assert.assertEquals(subnet.getNodeConnectors(), ncSet);
70
71         subnet.deleteNodeConnectors(null);
72         Assert.assertEquals(subnet.getNodeConnectors(), ncSet);
73
74         Set<NodeConnector> ncSet2 = new HashSet<NodeConnector>();
75         ncSet2.add(nc0);
76         subnet.deleteNodeConnectors(ncSet2);
77         assertFalse(subnet.getNodeConnectors().contains(nc0));
78         assertFalse(subnet.hasNodeConnector(nc0));
79         assertTrue(subnet.getNodeConnectors().contains(nc1));
80         assertTrue(subnet.getNodeConnectors().contains(nc2));
81
82         subnet.deleteNodeConnectors(ncSet2);
83
84         subnet.setNetworkAddress(subnetAddr);
85         assertTrue(subnet.isMutualExclusive(subnet2));
86         assertTrue(subnet.getNetworkAddress().equals(subnetAddr));
87
88         subnet.setSubnetMaskLength((short) 16);
89         assertTrue(subnet.getSubnetMaskLength() == 16);
90
91         subnet.setVlan((short) 100);
92         assertTrue(subnet.getVlan() == 100);
93
94         assertTrue(subnet.isFlatLayer2() == false);
95     }
96
97     @Test
98     public void checkIsSubnetOfComparisonMatch() {
99         String host = "10.0.0.1";
100         InetAddress ipAddrForSubnetComparison = null;
101         try {
102             ipAddrForSubnetComparison = InetAddress.getByName(host);
103         } catch (UnknownHostException e) {
104             fail("Failed to create InetAddress object for" + host);
105         }
106         SubnetConfig subnetConf = new SubnetConfig("subnet", "10.0.0.254/24",null);
107         Subnet subnet = new Subnet(subnetConf);
108         assertTrue(subnet.isSubnetOf(ipAddrForSubnetComparison));
109     }
110
111     @Test
112     public void checkIsSubnetOfComparisonNoMatch() {
113         String host = "100.0.0.1";
114         InetAddress ipAddrForSubnetComparison = null;
115         try {
116             ipAddrForSubnetComparison = InetAddress.getByName(host);
117         } catch (UnknownHostException e) {
118             fail("Failed to create InetAddress object for" + host);
119         }
120         SubnetConfig subnetConf = new SubnetConfig("subnet", "10.0.0.254/24",null);
121         Subnet subnet = new Subnet(subnetConf);
122         assertFalse(subnet.isSubnetOf(ipAddrForSubnetComparison));
123     }
124
125     @Test
126     public void checkIsSubnetOfComparisonIpEmpty() {
127         SubnetConfig subnetConf = new SubnetConfig("subnet", "10.0.0.254/24",null);
128         Subnet subnet = new Subnet(subnetConf);
129         assertFalse(subnet.isSubnetOf(null));
130     }
131
132
133
134 }