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