Bug 1254 - Increase unit test coverage
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / util / InventoryDataServiceUtilTest.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 package org.opendaylight.openflowplugin.openflow.md.util;
9
10 import static org.junit.Assert.assertNotNull;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdatedBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValuesV10;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23
24 import java.math.BigInteger;
25 import java.util.List;
26
27 /**
28  *
29  */
30 public class InventoryDataServiceUtilTest {
31
32
33     private static final long PORT_NO = (long) PortNumberValuesV10.CONTROLLER.getIntValue();
34     private static final BigInteger PATH_ID = BigInteger.TEN;
35
36     @Before
37     public void setupEnvironment() {
38         OpenflowPortsUtil.init();
39     }
40
41     /**
42      * Test method for {@link InventoryDataServiceUtil#checkForNodes()}.
43      */
44     public void testCheckForNodes() {
45         Nodes nodes = InventoryDataServiceUtil.checkForNodes();
46         assertNotNull(nodes);
47     }
48
49     /**
50      * Test method for {@link InventoryDataServiceUtil#readAllNodes()}.
51      */
52     public void testReadAllNodes() {
53         List<org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node> nodes = InventoryDataServiceUtil.readAllNodes();
54         assertNotNull(nodes);
55     }
56
57     /**
58      * Test method for {@link InventoryDataServiceUtil#nodeUpdatedBuilderFromDataPathId(BigInteger datapathId)}.
59      */
60     public void testNodeUpdatedBuilderFromDataPathId() {
61         NodeUpdatedBuilder nodeUpdatedBuilder = InventoryDataServiceUtil.nodeUpdatedBuilderFromDataPathId(PATH_ID);
62         assertNotNull(nodeUpdatedBuilder);
63     }
64
65     /**
66      * Test method for {@link InventoryDataServiceUtil#nodeConnectorBuilderFromDatapathIdPortNo(BigInteger datapathId,
67      * Long portNo, OpenflowVersion ofVersion)}.
68      */
69     public void testNodeConnectorBuilderFromDatapathIdPortNo() {
70         NodeConnectorBuilder nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
71                 PORT_NO, OpenflowVersion.OF10);
72         assertNotNull(nodeConnectorBuilder);
73
74         nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
75                 PORT_NO, OpenflowVersion.OF13);
76         assertNotNull(nodeConnectorBuilder);
77
78         nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
79                 PORT_NO, OpenflowVersion.UNSUPPORTED);
80         assertNotNull(nodeConnectorBuilder);
81     }
82
83     /**
84      * Test method for {@link InventoryDataServiceUtil#nodeConnectorUpdatedBuilderFromDatapathIdPortNo(BigInteger datapathId,
85      * Long portNo, OpenflowVersion ofVersion)}
86      */
87     public void testNodeConnectorUpdatedBuilderFromDatapathIdPortNo() {
88         NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
89                 PORT_NO, OpenflowVersion.OF10);
90         assertNotNull(nodeConnectorUpdatedBuilder);
91
92         nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
93                 PORT_NO, OpenflowVersion.OF13);
94         assertNotNull(nodeConnectorUpdatedBuilder);
95
96         nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
97                 PORT_NO, OpenflowVersion.UNSUPPORTED);
98         assertNotNull(nodeConnectorUpdatedBuilder);
99     }
100
101     /**
102      * Test method for {@link InventoryDataServiceUtil#nodeConnectorInstanceIdentifierFromDatapathIdPortno(BigInteger datapathId, Long portNo, OpenflowVersion ofVersion)}
103      */
104     @Test
105     public void testNodeConnectorInstanceIdentifierFromDatapathIdPortno() {
106         InstanceIdentifier<NodeConnector> nodeConnectorInstanceIdentifier = InventoryDataServiceUtil.nodeConnectorInstanceIdentifierFromDatapathIdPortno(BigInteger.ONE,
107                 PORT_NO, OpenflowVersion.OF10);
108         assertNotNull(nodeConnectorInstanceIdentifier);
109     }
110
111     /**
112      * Test method for {@link InventoryDataServiceUtil#nodeConnectorRefFromDatapathIdPortno(BigInteger datapathId, Long portNo, OpenflowVersion ofVersion)}
113      */
114     @Test
115     public void testNodeConnectorRefFromDatapathIdPortno() {
116         NodeConnectorRef nodeConnectorRef = InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(PATH_ID,
117                 PORT_NO,
118                 OpenflowVersion.OF10);
119         assertNotNull(nodeConnectorRef);
120
121         nodeConnectorRef = InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(PATH_ID,
122                 PORT_NO,
123                 OpenflowVersion.OF13);
124         assertNotNull(nodeConnectorRef);
125     }
126
127     /**
128      * Test method for {@link InventoryDataServiceUtil#dataPathIdFromNodeId(NodeId)}.
129      */
130     @Test
131     public void testDataPathIdFromNodeId() {
132         String string = "openflow:";
133         NodeId[] nodeIds = new NodeId[]{
134                 // 0x00000000 000004d2
135                 new NodeId(string + "1234"),
136                 // 0x8db2089e 01391a86
137                 new NodeId(string + "10210232779920710278"),
138                 // 0xffffffff ffffffff
139                 new NodeId(string + "18446744073709551615"),
140         };
141
142         long[] expectedDPIDs = new long[]{
143                 1234L,
144                 -8236511293788841338L,
145                 -1L
146         };
147
148         for (int i = 0; i < nodeIds.length; i++) {
149             BigInteger datapathId = InventoryDataServiceUtil.dataPathIdFromNodeId(nodeIds[i]);
150             Assert.assertEquals(expectedDPIDs[i], datapathId.longValue());
151         }
152     }
153
154     /**
155      * Test method for {@link InventoryDataServiceUtil#bigIntegerToPaddedHex(BigInteger)}.
156      */
157     @Test
158     public void testLongToPaddedHex() {
159         BigInteger[] dpids = new BigInteger[]{
160                 // 0x00000000 000004d2
161                 new BigInteger("1234"),
162                 // 0x8db2089e 01391a86
163                 new BigInteger("10210232779920710278"),
164                 // 0xffffffff ffffffff
165                 new BigInteger("18446744073709551615"),
166         };
167
168         String[] expectedPaddedHexes = new String[]{
169                 "00000000000004d2",
170                 "8db2089e01391a86",
171                 "ffffffffffffffff"
172         };
173
174         for (int i = 0; i < dpids.length; i++) {
175             String datapathIdHex = InventoryDataServiceUtil.bigIntegerToPaddedHex(dpids[i]);
176             Assert.assertEquals(expectedPaddedHexes[i], datapathIdHex);
177         }
178     }
179
180 }