2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.openflowplugin.openflow.md.util;
10 import static org.junit.Assert.assertNotNull;
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;
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);
35 * Test method for {@link InventoryDataServiceUtil#nodeUpdatedBuilderFromDataPathId(Uint64 datapathId)}.
38 public void testNodeUpdatedBuilderFromDataPathId() {
39 NodeUpdatedBuilder nodeUpdatedBuilder = InventoryDataServiceUtil.nodeUpdatedBuilderFromDataPathId(PATH_ID);
40 assertNotNull(nodeUpdatedBuilder);
44 * Test method for {@link InventoryDataServiceUtil#nodeConnectorBuilderFromDatapathIdPortNo(Uint64 datapathId,
45 * Uint32 portNo, org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion ofVersion)}.
48 public void testNodeConnectorBuilderFromDatapathIdPortNo() {
49 NodeConnectorBuilder nodeConnectorBuilder = InventoryDataServiceUtil
50 .nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID, PORT_NO, OpenflowVersion.OF10);
51 assertNotNull(nodeConnectorBuilder);
53 nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
54 PORT_NO, OpenflowVersion.OF13);
55 assertNotNull(nodeConnectorBuilder);
57 nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
58 PORT_NO, OpenflowVersion.UNSUPPORTED);
59 assertNotNull(nodeConnectorBuilder);
63 * Test method for {@link InventoryDataServiceUtil#nodeConnectorUpdatedBuilderFromDatapathIdPortNo(
64 * Uint64 datapathId, Uint32 portNo, OpenflowVersion ofVersion)}.
67 public void testNodeConnectorUpdatedBuilderFromDatapathIdPortNo() {
68 NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilder = InventoryDataServiceUtil
69 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID, PORT_NO, OpenflowVersion.OF10);
70 assertNotNull(nodeConnectorUpdatedBuilder);
72 nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
73 PORT_NO, OpenflowVersion.OF13);
74 assertNotNull(nodeConnectorUpdatedBuilder);
76 nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
77 PORT_NO, OpenflowVersion.UNSUPPORTED);
78 assertNotNull(nodeConnectorUpdatedBuilder);
82 * Test method for {@link InventoryDataServiceUtil#nodeConnectorInstanceIdentifierFromDatapathIdPortno(
83 * Uint64 datapathId, Uint32 portNo, OpenflowVersion ofVersion)}.
86 public void testNodeConnectorInstanceIdentifierFromDatapathIdPortno() {
87 InstanceIdentifier<NodeConnector> nodeConnectorInstanceIdentifier = InventoryDataServiceUtil
88 .nodeConnectorInstanceIdentifierFromDatapathIdPortno(Uint64.ONE, PORT_NO, OpenflowVersion.OF10);
89 assertNotNull(nodeConnectorInstanceIdentifier);
93 * Test method for {@link InventoryDataServiceUtil#nodeConnectorRefFromDatapathIdPortno(
94 * Uint64 datapathId, Uint32 portNo, OpenflowVersion ofVersion)}.
97 public void testNodeConnectorRefFromDatapathIdPortno() {
98 NodeConnectorRef nodeConnectorRef = InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(PATH_ID,
100 OpenflowVersion.OF10);
101 assertNotNull(nodeConnectorRef);
103 nodeConnectorRef = InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(PATH_ID,
105 OpenflowVersion.OF13);
106 assertNotNull(nodeConnectorRef);
110 * Test method for {@link InventoryDataServiceUtil#dataPathIdFromNodeId(NodeId)}.
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"),
124 long[] expectedDPIDs = new long[] { 1234L, -8236511293788841338L, -1L };
126 for (int i = 0; i < nodeIds.length; i++) {
127 Uint64 datapathId = InventoryDataServiceUtil.dataPathIdFromNodeId(nodeIds[i]);
128 Assert.assertEquals(expectedDPIDs[i], datapathId.longValue());
133 * Test method for {@link InventoryDataServiceUtil#bigIntegerToPaddedHex(BigInteger)}.
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"),
146 String[] expectedPaddedHexes = new String[] { "00000000000004d2", "8db2089e01391a86", "ffffffffffffffff" };
148 for (int i = 0; i < dpids.length; i++) {
149 String datapathIdHex = InventoryDataServiceUtil.bigIntegerToPaddedHex(dpids[i]);
150 Assert.assertEquals(expectedPaddedHexes[i], datapathIdHex);
155 * Test method for {@link InventoryDataServiceUtil#portNoStringfromNodeConnectorID(String)}.
158 public void testNodeConnectorIDToPortNoString() {
159 String[] nodeConnectorIDs = new String[] { "openflow:2", "openflow:2:3411", "INPORT",
160 "openflow:628192264910264962" };
162 String[] expectedPortNoStrings = new String[] { "2", "3411", "INPORT", "628192264910264962" };
164 for (int i = 0; i < nodeConnectorIDs.length; i++) {
165 String portNoString = InventoryDataServiceUtil.portNoStringfromNodeConnectorID(nodeConnectorIDs[i]);
166 Assert.assertEquals(expectedPortNoStrings[i], portNoString);