Fix Mockito Generics
[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.mockito.Mockito.when;
12 import com.google.common.base.Optional;
13 import com.google.common.util.concurrent.Futures;
14 import java.math.BigInteger;
15 import java.util.List;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.mockito.Mock;
21 import org.mockito.Mockito;
22 import org.mockito.runners.MockitoJUnitRunner;
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
24 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
25 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
26 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
27 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
28 import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdatedBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValuesV10;
40 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
41
42 /**
43  *
44  */
45 @RunWith(MockitoJUnitRunner.class)
46 public class InventoryDataServiceUtilTest {
47
48
49     private static final long PORT_NO = PortNumberValuesV10.CONTROLLER.getIntValue();
50     private static final BigInteger PATH_ID = BigInteger.TEN;
51
52     @Mock
53     DataBroker dataBroker;
54     @Mock
55     ReadOnlyTransaction readOnlyTransaction;
56     @Mock
57     WriteTransaction writeTransaction;
58     @Mock
59     Nodes nodes;
60     @Mock
61     Node node;
62
63
64     @Before
65     public void setupEnvironment() {
66         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
67         when(readOnlyTransaction.read(Mockito.any(LogicalDatastoreType.class), Mockito.<InstanceIdentifier<Nodes>>any())).thenReturn(Futures.immediateCheckedFuture(Optional.of(nodes)));
68
69         OpenflowPortsUtil.init();
70         OFSessionUtil.getSessionManager().setDataBroker(dataBroker);
71
72     }
73
74     @Test
75     /**
76      * Primitive test method for {@link InventoryDataServiceUtil#putNodeConnector(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector)} ()}.
77      */
78     public void testPutNodeConnector(){
79         when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
80
81         NodeId nodeId = new NodeId("1");
82         NodeConnectorBuilder nodeConnectorBuilder = new NodeConnectorBuilder();
83         NodeConnectorId nodeConnectorId = new NodeConnectorId("1");
84         nodeConnectorBuilder.setId(nodeConnectorId );
85         nodeConnectorBuilder.setKey(new NodeConnectorKey(nodeConnectorId ));
86         InventoryDataServiceUtil.putNodeConnector(nodeId, nodeConnectorBuilder.build());
87     }
88
89     /**
90      * Primitive test method for {@link InventoryDataServiceUtil#readNode(org.opendaylight.yangtools.yang.binding.InstanceIdentifier)} ()}.
91      */
92     @Test
93     public void testReadNode(){
94         when(readOnlyTransaction.read(Mockito.any(LogicalDatastoreType.class), Mockito.<InstanceIdentifier<Node>>any())).thenReturn(Futures.immediateCheckedFuture(Optional.of(node)));
95         InstanceIdentifier<Node> instanceId = InstanceIdentifier.create(Node.class);
96         Node node = InventoryDataServiceUtil.readNode(instanceId);
97         assertNotNull(node);
98     }
99     /**
100      * Test method for {@link InventoryDataServiceUtil#checkForNodes()}.
101      */
102     @Test
103     public void testCheckForNodes() {
104         Nodes nodes = InventoryDataServiceUtil.checkForNodes();
105         assertNotNull(nodes);
106     }
107
108     /**
109      * Test method for {@link InventoryDataServiceUtil#readAllNodes()}.
110      */
111     @Test
112     public void testReadAllNodes() {
113         List<org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node> nodes = InventoryDataServiceUtil.readAllNodes();
114         assertNotNull(nodes);
115     }
116
117     /**
118      * Test method for {@link InventoryDataServiceUtil#nodeUpdatedBuilderFromDataPathId(BigInteger datapathId)}.
119      */
120     @Test
121     public void testNodeUpdatedBuilderFromDataPathId() {
122         NodeUpdatedBuilder nodeUpdatedBuilder = InventoryDataServiceUtil.nodeUpdatedBuilderFromDataPathId(PATH_ID);
123         assertNotNull(nodeUpdatedBuilder);
124     }
125
126     /**
127      * Test method for {@link InventoryDataServiceUtil#nodeConnectorBuilderFromDatapathIdPortNo(BigInteger datapathId,
128      * Long portNo, org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion ofVersion)}.
129      */
130     @Test
131     public void testNodeConnectorBuilderFromDatapathIdPortNo() {
132         NodeConnectorBuilder nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
133                 PORT_NO, OpenflowVersion.OF10);
134         assertNotNull(nodeConnectorBuilder);
135
136         nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
137                 PORT_NO, OpenflowVersion.OF13);
138         assertNotNull(nodeConnectorBuilder);
139
140         nodeConnectorBuilder = InventoryDataServiceUtil.nodeConnectorBuilderFromDatapathIdPortNo(PATH_ID,
141                 PORT_NO, OpenflowVersion.UNSUPPORTED);
142         assertNotNull(nodeConnectorBuilder);
143     }
144
145     /**
146      * Test method for {@link InventoryDataServiceUtil#nodeConnectorUpdatedBuilderFromDatapathIdPortNo(BigInteger datapathId,
147      * Long portNo, OpenflowVersion ofVersion)}
148      */
149     @Test
150     public void testNodeConnectorUpdatedBuilderFromDatapathIdPortNo() {
151         NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
152                 PORT_NO, OpenflowVersion.OF10);
153         assertNotNull(nodeConnectorUpdatedBuilder);
154
155         nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
156                 PORT_NO, OpenflowVersion.OF13);
157         assertNotNull(nodeConnectorUpdatedBuilder);
158
159         nodeConnectorUpdatedBuilder = InventoryDataServiceUtil.nodeConnectorUpdatedBuilderFromDatapathIdPortNo(PATH_ID,
160                 PORT_NO, OpenflowVersion.UNSUPPORTED);
161         assertNotNull(nodeConnectorUpdatedBuilder);
162     }
163
164     /**
165      * Test method for {@link InventoryDataServiceUtil#nodeConnectorInstanceIdentifierFromDatapathIdPortno(BigInteger datapathId, Long portNo, OpenflowVersion ofVersion)}
166      */
167     @Test
168     public void testNodeConnectorInstanceIdentifierFromDatapathIdPortno() {
169         InstanceIdentifier<NodeConnector> nodeConnectorInstanceIdentifier = InventoryDataServiceUtil.nodeConnectorInstanceIdentifierFromDatapathIdPortno(BigInteger.ONE,
170                 PORT_NO, OpenflowVersion.OF10);
171         assertNotNull(nodeConnectorInstanceIdentifier);
172     }
173
174     /**
175      * Test method for {@link InventoryDataServiceUtil#nodeConnectorRefFromDatapathIdPortno(BigInteger datapathId, Long portNo, OpenflowVersion ofVersion)}
176      */
177     @Test
178     public void testNodeConnectorRefFromDatapathIdPortno() {
179         NodeConnectorRef nodeConnectorRef = InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(PATH_ID,
180                 PORT_NO,
181                 OpenflowVersion.OF10);
182         assertNotNull(nodeConnectorRef);
183
184         nodeConnectorRef = InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(PATH_ID,
185                 PORT_NO,
186                 OpenflowVersion.OF13);
187         assertNotNull(nodeConnectorRef);
188     }
189
190     /**
191      * Test method for {@link InventoryDataServiceUtil#dataPathIdFromNodeId(NodeId)}.
192      */
193     @Test
194     public void testDataPathIdFromNodeId() {
195         String string = "openflow:";
196         NodeId[] nodeIds = new NodeId[]{
197                 // 0x00000000 000004d2
198                 new NodeId(string + "1234"),
199                 // 0x8db2089e 01391a86
200                 new NodeId(string + "10210232779920710278"),
201                 // 0xffffffff ffffffff
202                 new NodeId(string + "18446744073709551615"),
203         };
204
205         long[] expectedDPIDs = new long[]{
206                 1234L,
207                 -8236511293788841338L,
208                 -1L
209         };
210
211         for (int i = 0; i < nodeIds.length; i++) {
212             BigInteger datapathId = InventoryDataServiceUtil.dataPathIdFromNodeId(nodeIds[i]);
213             Assert.assertEquals(expectedDPIDs[i], datapathId.longValue());
214         }
215     }
216
217     /**
218      * Test method for {@link InventoryDataServiceUtil#bigIntegerToPaddedHex(BigInteger)}.
219      */
220     @Test
221     public void testLongToPaddedHex() {
222         BigInteger[] dpids = new BigInteger[]{
223                 // 0x00000000 000004d2
224                 new BigInteger("1234"),
225                 // 0x8db2089e 01391a86
226                 new BigInteger("10210232779920710278"),
227                 // 0xffffffff ffffffff
228                 new BigInteger("18446744073709551615"),
229         };
230
231         String[] expectedPaddedHexes = new String[]{
232                 "00000000000004d2",
233                 "8db2089e01391a86",
234                 "ffffffffffffffff"
235         };
236
237         for (int i = 0; i < dpids.length; i++) {
238             String datapathIdHex = InventoryDataServiceUtil.bigIntegerToPaddedHex(dpids[i]);
239             Assert.assertEquals(expectedPaddedHexes[i], datapathIdHex);
240         }
241     }
242
243     /**
244      * Test method for {@link InventoryDataServiceUtil#portNoStringfromNodeConnectorID(String)}.
245      */
246     @Test
247     public void testNodeConnectorIDToPortNoString() {
248         String[] nodeConnectorIDs = new String[]{
249                         "openflow:2",
250                         "openflow:2:3411",
251                         "INPORT",
252                         "openflow:628192264910264962"
253         };
254
255         String[] expectedPortNoStrings = new String[]{
256                         "2",
257                         "3411",
258                         "INPORT",
259                         "628192264910264962"
260         };
261
262         for (int i = 0; i < nodeConnectorIDs.length; i++) {
263                 String portNoString = InventoryDataServiceUtil.portNoStringfromNodeConnectorID(nodeConnectorIDs[i]);
264                 Assert.assertEquals(expectedPortNoStrings[i], portNoString);
265         }
266     }
267 }