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