Unit test unimgrUtils
[unimgr.git] / impl / src / test / java / org / opendaylight / unimgr / impl / UnimgrUtilsTest.java
1 package org.opendaylight.unimgr.impl;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.mockito.Matchers.any;
6 import static org.mockito.Mockito.doNothing;
7 import static org.mockito.Mockito.mock;
8 import static org.mockito.Mockito.verify;
9 import static org.mockito.Mockito.when;
10 import static org.mockito.Mockito.times;
11
12 import org.mockito.Mock;
13 import org.mockito.Mockito;
14
15 import org.powermock.core.classloader.annotations.PrepareForTest;
16 import org.powermock.modules.junit4.PowerMockRunner;
17
18 import com.google.common.base.Optional;
19 import com.google.common.collect.ImmutableBiMap;
20 import com.google.common.util.concurrent.CheckedFuture;
21
22 import org.powermock.api.mockito.PowerMockito;
23 import org.powermock.api.support.membermodification.MemberMatcher;
24 import org.powermock.api.support.membermodification.MemberModifier;
25
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.UUID;
29
30 import org.junit.Before;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.junit.runner.RunWith;
35 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
36 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
37 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
38 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
39 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
40 import org.opendaylight.ovsdb.southbound.SouthboundConstants;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeName;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolBase;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentationBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentationBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbPortInterfaceAttributes.VlanMode;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntryBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.EvcAugmentation;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.EvcAugmentationBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentationBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.EgressBw;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.IngressBw;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniDest;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniDestBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniDestKey;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniSource;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniSourceBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniSourceKey;
76 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
77 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
78 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
79 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
80 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
81 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
82
83
84 @RunWith(PowerMockRunner.class)
85 @PrepareForTest({InstanceIdentifier.class, LogicalDatastoreType.class, UnimgrMapper.class, UnimgrUtils.class, UUID.class})
86 public class UnimgrUtilsTest {
87
88     @Rule
89     public final ExpectedException exception = ExpectedException.none();
90     @Mock private DataBroker dataBroker;
91     @Mock private Node bridgeNode;
92     @Mock private String bridgeName;
93     @Mock private String portName;
94     @Mock private String type;
95     @Mock private WriteTransaction transaction;
96     @Mock private IpAddress mockIp;
97     @SuppressWarnings({ "rawtypes" })
98     @Mock private CheckedFuture checkedFuture;
99     @SuppressWarnings("unchecked")
100     private static final InstanceIdentifier<TerminationPoint> tpIid = PowerMockito.mock(InstanceIdentifier.class);
101     private static final IpAddress IP = new IpAddress(new Ipv4Address("192.168.1.2"));
102     private static final NodeId OVSDB_NODE_ID = new NodeId("ovsdb://7011db35-f44b-4aab-90f6-d89088caf9d8");
103     @SuppressWarnings("unchecked")
104     private static final InstanceIdentifier<Node> MOCK_NODE_IID = PowerMockito.mock(InstanceIdentifier.class);
105
106     @Before
107     public void setUp() throws Exception {
108         PowerMockito.mockStatic(UnimgrUtils.class, Mockito.CALLS_REAL_METHODS);
109         PowerMockito.mockStatic(UnimgrMapper.class, Mockito.CALLS_REAL_METHODS);
110         PowerMockito.mockStatic(InstanceIdentifier.class);
111         PowerMockito.mockStatic(LogicalDatastoreType.class);
112         PowerMockito.mockStatic(UUID.class);
113     }
114
115     /*
116      *  This test for 2 functions with the
117      *  same name that take different parameters.
118      */
119     @Test
120     public void testCreateBridgeNode() throws Exception {
121         //TODO
122     }
123
124     @Test
125     public void testCreateControllerEntries() {
126         String targetString = new String("controllerEntry");
127         List<ControllerEntry> controllerEntries = new ArrayList<ControllerEntry>();
128         ControllerEntryBuilder controllerEntryBuilder = new ControllerEntryBuilder();
129         controllerEntryBuilder.setTarget(new Uri(targetString));
130         controllerEntries.add(controllerEntryBuilder.build());
131         assertEquals(controllerEntries, UnimgrUtils.createControllerEntries(targetString));
132     }
133
134     @SuppressWarnings("unchecked")
135     @Test
136     public void testCreateGreTunnel() throws Exception {
137
138         UniAugmentation sourceUniAug = new UniAugmentationBuilder()
139                 .setIpAddress(new IpAddress(new Ipv4Address("192.168.1.1")))
140                 .build();
141         UniAugmentation destUniAug = new UniAugmentationBuilder()
142                 .setIpAddress(new IpAddress(new Ipv4Address("192.168.1.2")))
143                 .build();
144
145         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
146         doNothing().when(transaction).put(any(LogicalDatastoreType.class),
147                                           any(InstanceIdentifier.class),
148                                           any(TerminationPoint.class));
149         when(transaction.submit()).thenReturn(checkedFuture);
150
151         MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class, "getTerminationPointIid", Node.class, String.class));
152         MemberModifier.suppress(MemberMatcher.method(UnimgrUtils.class, "createMdsalProtocols"));
153
154         UnimgrUtils.createGreTunnel(dataBroker,
155                                     sourceUniAug,
156                                     destUniAug,
157                                     bridgeNode,
158                                     bridgeName,
159                                     portName);
160         verify(transaction).put(any(LogicalDatastoreType.class),
161                                 any(InstanceIdentifier.class),
162                                 any(TerminationPoint.class));
163         verify(transaction).submit();
164     }
165
166     @Test
167     public void testCreateMdsalProtocols() {
168         List<ProtocolEntry> protocolList = new ArrayList<ProtocolEntry>();
169         ImmutableBiMap<String, Class<? extends OvsdbBridgeProtocolBase>> mapper =
170                 SouthboundConstants.OVSDB_PROTOCOL_MAP.inverse();
171         ProtocolEntry protoEntry = new ProtocolEntryBuilder().setProtocol((Class<? extends OvsdbBridgeProtocolBase>) mapper.get("OpenFlow13")).build();
172         protocolList.add(protoEntry);
173         assertEquals(protocolList, UnimgrUtils.createMdsalProtocols());
174     }
175
176     @Test
177     public void testCreateOvsdbBridgeAugmentation() throws Exception {
178         OvsdbNodeRef ovsdbNodeRef = new OvsdbNodeRef(PowerMockito.mock(InstanceIdentifier.class));
179         UniAugmentation uni = new UniAugmentationBuilder().setOvsdbNodeRef(ovsdbNodeRef).build();
180         UUID bridgeUuid = PowerMockito.mock(UUID.class);
181         PowerMockito.when(UUID.randomUUID()).thenReturn(bridgeUuid);
182         OvsdbBridgeAugmentation ovsdbNode = new OvsdbBridgeAugmentationBuilder()
183                                                     .setBridgeName(new OvsdbBridgeName(UnimgrConstants.DEFAULT_BRIDGE_NAME))
184                                                     .setManagedBy(ovsdbNodeRef)
185                                                     .setBridgeUuid(new Uuid(bridgeUuid.toString()))
186                                                     .build();
187         assertEquals(ovsdbNode, UnimgrUtils.createOvsdbBridgeAugmentation(uni));
188         // Force an exception
189         Uni ovsdbNodeRefNull = new UniAugmentationBuilder().setOvsdbNodeRef(null).build();
190         exception.expect(Exception.class);
191         UnimgrUtils.createOvsdbBridgeAugmentation(ovsdbNodeRefNull);
192     }
193
194     /*
195      *  This test for 2 functions with the
196      *  same name that take different parameters.
197      */
198     @SuppressWarnings("unchecked")
199     @Test
200     public void testCreateOvsdbNode() {
201         MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class, "getOvsdbNodeIid", IpAddress.class));
202         PowerMockito.when(UnimgrMapper.getOvsdbNodeIid(mockIp)).thenReturn(MOCK_NODE_IID);
203         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
204         //when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
205         Uni uni = new UniAugmentationBuilder().setIpAddress(new IpAddress(new Ipv4Address("192.168.1.2"))).build();
206         // createOvsdbNode with NodeId and Uni
207         UnimgrUtils.createOvsdbNode(dataBroker, OVSDB_NODE_ID, uni);
208         doNothing().when(transaction).put(any(LogicalDatastoreType.class),
209                                           any(InstanceIdentifier.class),
210                                           any(Node.class));
211         when(transaction.submit()).thenReturn(checkedFuture);
212         verify(transaction).put(any(LogicalDatastoreType.class),
213                                 any(InstanceIdentifier.class),
214                                 any(Node.class));
215         verify(transaction).submit();
216         // Test with a null uni
217         exception.expect(Exception.class);
218         UnimgrUtils.createOvsdbNode(dataBroker, OVSDB_NODE_ID, null);
219         // createOvsdbNode with Uni
220         UniAugmentation uniAug = new UniAugmentationBuilder(uni).build();
221         UnimgrUtils.createOvsdbNode(dataBroker, uniAug);
222         MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class, "getOvsdbNodeIid", NodeId.class));
223         PowerMockito.when(UnimgrMapper.getOvsdbNodeIid(OVSDB_NODE_ID)).thenReturn(MOCK_NODE_IID);
224         doNothing().when(transaction).put(any(LogicalDatastoreType.class),
225                                           any(InstanceIdentifier.class),
226                                           any(Node.class));
227         when(transaction.submit()).thenReturn(checkedFuture);
228         verify(transaction).put(any(LogicalDatastoreType.class),
229                                 any(InstanceIdentifier.class),
230                                 any(Node.class));
231         verify(transaction).submit();
232         // try with a null uni
233         exception.expect(Exception.class);
234         UnimgrUtils.createOvsdbNode(dataBroker, null);
235     }
236
237     @Test
238     public void testCreateOvsdbNodeAugmentation() {
239         Uni uni = new UniAugmentationBuilder().setIpAddress(new IpAddress(new Ipv4Address("192.168.1.2"))).build();
240         ConnectionInfo connectionInfos = new ConnectionInfoBuilder()
241                 .setRemoteIp(uni.getIpAddress())
242                 .setRemotePort(new PortNumber(UnimgrConstants.OVSDB_PORT))
243                 .build();
244         OvsdbNodeAugmentation ovsdbNode = new OvsdbNodeAugmentationBuilder()
245                 .setConnectionInfo(connectionInfos).build();
246         assertEquals(ovsdbNode, UnimgrUtils.createOvsdbNodeAugmentation(uni));
247     }
248
249     @Test
250     public void testCreateOvsdbNodeId() {
251         String nodeId = UnimgrConstants.OVSDB_PREFIX
252                 + IP.getIpv4Address().getValue().toString()
253                 + ":"
254                 + UnimgrConstants.OVSDB_PORT;
255         assertEquals(new NodeId(nodeId), UnimgrUtils.createOvsdbNodeId(IP));
256     }
257
258     @Test
259     public void testCreateOvsdbTerminationPointAugmentation() {
260         Uni uni = new UniAugmentationBuilder().build();
261         VlanId vlanID = new VlanId(1);
262         OvsdbTerminationPointAugmentation terminationPoint = new OvsdbTerminationPointAugmentationBuilder()
263                                                                      .setName(UnimgrConstants.DEFAULT_INTERNAL_IFACE)
264                                                                      .setVlanTag(vlanID)
265                                                                      .setVlanMode(VlanMode.Access)
266                                                                      .build();
267         assertEquals(terminationPoint, UnimgrUtils.createOvsdbTerminationPointAugmentation(uni));
268     }
269
270     @Test
271     public void testCreateEvc() {
272         EvcAugmentation evc = mock(EvcAugmentation.class);
273         assertEquals(false, UnimgrUtils.createEvc(dataBroker, evc));
274     }
275
276     @SuppressWarnings("unchecked")
277     @Test
278     public void testCreateUniNode() {
279         UniAugmentation uniAug = new UniAugmentationBuilder()
280                                         .setIpAddress(new IpAddress(new Ipv4Address("192.168.1.2")))
281                                         .build();
282         // false case
283         assertEquals(false, UnimgrUtils.createUniNode(dataBroker, uniAug));
284         MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class, "getUniNodeIid", NodeId.class));
285         PowerMockito.when(UnimgrMapper.getUniNodeIid(any(NodeId.class))).thenReturn(MOCK_NODE_IID);
286
287         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
288         UnimgrUtils.createUniNode(dataBroker, uniAug);
289         verify(transaction).put(any(LogicalDatastoreType.class),
290                                 any(InstanceIdentifier.class),
291                                 any(Node.class));
292         verify(transaction).submit();
293     }
294
295     @Test
296     public void testCreateUniNodeId() {
297         NodeId nodeId = new NodeId(UnimgrConstants.UNI_PREFIX + IP.getIpv4Address().getValue().toString());
298         assertEquals(nodeId, UnimgrUtils.createUniNodeId(IP));
299     }
300
301     /*
302      *  This test for 2 functions with the
303      *  same name that take different parameters.
304      */
305     @SuppressWarnings("unchecked")
306     @Test
307     public void testCreateTerminationPointNode() {
308         Uni uni = new UniAugmentationBuilder().build();
309         Node bridgeNode = new NodeBuilder().build();
310
311         MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class,
312                                                      "getTerminationPointIid",
313                                                      Node.class,
314                                                      String.class));
315         PowerMockito.when(UnimgrMapper.getTerminationPointIid(any(Node.class),
316                                                               any(String.class))).thenReturn(tpIid);
317         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
318         // Function 1
319         UnimgrUtils.createTerminationPointNode(dataBroker, uni, bridgeNode, bridgeName, portName, type);
320
321         //Function 2
322         doNothing().when(transaction).put(any(LogicalDatastoreType.class),
323                                           any(InstanceIdentifier.class),
324                                           any(TerminationPoint.class));
325         when(transaction.submit()).thenReturn(checkedFuture);
326         UnimgrUtils.createTerminationPointNode(dataBroker, uni, bridgeNode, bridgeName, portName);
327         verify(transaction, times(2)).put(any(LogicalDatastoreType.class),
328                                           any(InstanceIdentifier.class),
329                                           any(TerminationPoint.class));
330         verify(transaction,times(2)).submit();
331     }
332
333     @Test
334     public void testDelete() {
335         // FIXME this function will be moved into an MdsalUtils class.
336         // see bug: https://bugs.opendaylight.org/show_bug.cgi?id=5035
337     }
338
339     @Test
340     public void testDeleteTerminationPoint() {
341       //TODO
342     }
343
344     @Test
345     public void testDeleteNode() {
346       //TODO
347     }
348
349     @Test
350     public void testExtract() {
351         // FIXME this function will be moved into an MdsalUtils class.
352         // see bug: https://bugs.opendaylight.org/show_bug.cgi?id=5035
353     }
354
355     @Test
356     public void testExtractOriginal() {
357       //TODO
358     }
359
360     @Test
361     public void testExtractRemoved() {
362       //TODO
363     }
364
365     @Test
366     public void testFindOvsdbNode() {
367       //TODO
368     }
369
370     @Test
371     public void testFindUniNode() {
372       //TODO
373     }
374
375     @Test
376     public void testGetConnectionInfo() {
377       //TODO
378     }
379
380     @Test
381     public void testGetEvcLinks() {
382       //TODO
383     }
384
385     @Test
386     public void testGetLocalIp() {
387       //TODO
388     }
389
390     @Test
391     public void testGetOvsdbNodes() {
392       //TODO
393     }
394
395     /*
396      *  This test for 2 functions with the
397      *  same name that take different parameters.
398      */
399     @Test
400     public void testGetUniNodes() {
401       //TODO
402     }
403
404     @Test
405     public void testGetUnis() {
406       //TODO
407     }
408
409     @Test
410     public void testGetUni() {
411       //TODO
412     }
413
414     @Test
415     public void testRead() {
416       //TODO
417     }
418
419     @Test
420     public void testReadLink() throws ReadFailedException {
421         DataBroker dataBroker = mock(DataBroker.class);
422         InstanceIdentifier<?> nodeIid = PowerMockito.mock(InstanceIdentifier.class);
423         ReadOnlyTransaction transaction = mock(ReadOnlyTransaction.class);
424         when(dataBroker.newReadOnlyTransaction()).thenReturn(transaction);
425         CheckedFuture<Optional<Link>, ReadFailedException> linkFuture = mock(CheckedFuture.class);
426         Optional<Link> optLink = mock(Optional.class);
427         when(transaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(linkFuture);
428         when(linkFuture.checkedGet()).thenReturn(optLink);
429         Optional<Link> expectedOpt = UnimgrUtils.readLink(dataBroker, LogicalDatastoreType.CONFIGURATION, nodeIid);
430         verify(transaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
431         assertNotNull(expectedOpt);
432         assertEquals(expectedOpt, optLink);
433     }
434
435     @Test
436     public void testReadNode() throws ReadFailedException {
437         DataBroker dataBroker = mock(DataBroker.class);
438         InstanceIdentifier<?> nodeIid = PowerMockito.mock(InstanceIdentifier.class);
439         ReadOnlyTransaction transaction = mock(ReadOnlyTransaction.class);
440         when(dataBroker.newReadOnlyTransaction()).thenReturn(transaction);
441         CheckedFuture<Optional<Node>, ReadFailedException> nodeFuture = mock(CheckedFuture.class);
442         Optional<Node> optNode = mock(Optional.class);
443         when(transaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodeFuture);
444         when(nodeFuture.checkedGet()).thenReturn(optNode);
445         Optional<Node> expectedOpt = UnimgrUtils.readNode(dataBroker, LogicalDatastoreType.CONFIGURATION, nodeIid);
446         verify(transaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
447         assertNotNull(expectedOpt);
448         assertEquals(expectedOpt, optNode);
449     }
450
451     @Test
452     public void testUpdateUniNode() {
453         DataBroker dataBroker = mock(DataBroker.class);
454         UniAugmentation uni = PowerMockito.mock(UniAugmentation.class);
455         InstanceIdentifier<?> uniKey = PowerMockito.mock(InstanceIdentifier.class);
456         InstanceIdentifier<Node> ovsdbNodeIid = mock(InstanceIdentifier.class);
457         Optional<Node> optionalNode = mock(Optional.class, Mockito.RETURNS_MOCKS);
458         Node nd = mock(Node.class, Mockito.RETURNS_MOCKS);
459         when(optionalNode.isPresent()).thenReturn(true);
460         when(optionalNode.get()).thenReturn(nd);
461         WriteTransaction transaction = mock(WriteTransaction.class);
462         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
463         PowerMockito.suppress(MemberMatcher.method(UnimgrUtils.class, "readNode", DataBroker.class, LogicalDatastoreType.class, InstanceIdentifier.class));
464         when(UnimgrUtils.readNode(any(DataBroker.class), any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(optionalNode);
465         UnimgrUtils.updateUniNode(LogicalDatastoreType.OPERATIONAL, uniKey, uni, ovsdbNodeIid, dataBroker);
466         verify(transaction).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class));
467         verify(transaction).submit();
468     }
469
470     @Test
471     public void testUpdateUniNode2() {
472         DataBroker dataBroker = mock(DataBroker.class);
473         UniAugmentation uni = PowerMockito.mock(UniAugmentation.class);
474         InstanceIdentifier<?> uniKey = PowerMockito.mock(InstanceIdentifier.class);
475         Node ovsdbNode = mock(Node.class);
476         InstanceIdentifier<Node> ovsdbNodeIid = mock(InstanceIdentifier.class);
477         Optional<Node> optionalNode = mock(Optional.class, Mockito.RETURNS_MOCKS);
478         Node nd = mock(Node.class, Mockito.RETURNS_MOCKS);
479         when(optionalNode.isPresent()).thenReturn(true);
480         when(optionalNode.get()).thenReturn(nd);
481         WriteTransaction transaction = mock(WriteTransaction.class);
482         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
483         PowerMockito.suppress(MemberMatcher.method(UnimgrMapper.class, "getOvsdbNodeIid", NodeId.class));
484         when(UnimgrMapper.getOvsdbNodeIid(any(NodeId.class))).thenReturn(ovsdbNodeIid);
485         PowerMockito.suppress(MemberMatcher.method(UnimgrUtils.class, "readNode", DataBroker.class, LogicalDatastoreType.class, InstanceIdentifier.class));
486         when(UnimgrUtils.readNode(any(DataBroker.class), any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(optionalNode);
487         UnimgrUtils.updateUniNode(LogicalDatastoreType.OPERATIONAL, uniKey, uni, ovsdbNode, dataBroker);
488         verify(transaction).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class));
489         verify(transaction).submit();
490     }
491
492     @Test
493     public void testUpdateEvcNode() {
494         DataBroker dataBroker = mock(DataBroker.class);
495         InstanceIdentifier<?> evcKey = PowerMockito.mock(InstanceIdentifier.class);
496         InstanceIdentifier<?> sourceUniIid = PowerMockito.mock(InstanceIdentifier.class);
497         InstanceIdentifier<?> destinationUniIid = PowerMockito.mock(InstanceIdentifier.class);
498         WriteTransaction transaction = mock(WriteTransaction.class);
499         when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
500         Short order = new Short("0");
501         IpAddress ipAddreSource = new IpAddress("10.10.1.1".toCharArray());
502         UniSource uniSource = new UniSourceBuilder()
503                                   .setIpAddress(ipAddreSource)
504                                   .setKey(new UniSourceKey(order))
505                                   .setOrder(order)
506                                   .build();
507         List<UniSource> uniSourceList = new ArrayList<UniSource>();
508         uniSourceList.add(uniSource);
509         IpAddress ipAddreDest = new IpAddress("10.10.0.2".toCharArray());
510         UniDest uniDest = new UniDestBuilder()
511                           .setOrder(order)
512                           .setKey(new UniDestKey(order))
513                           .setIpAddress(ipAddreDest)
514                           .build();
515         List<UniDest> uniDestList = new ArrayList<UniDest>();
516         uniDestList.add(uniDest);
517         EgressBw egressBw = mock(EgressBw.class);
518         IngressBw ingressBw = mock(IngressBw.class);
519         EvcAugmentation evcAug = new EvcAugmentationBuilder()
520                                      .setCosId(UnimgrConstants.EVC_PREFIX + 1)
521                                      .setEgressBw(egressBw)
522                                      .setIngressBw(ingressBw)
523                                      .setUniDest(uniDestList)
524                                      .setUniSource(uniSourceList)
525                                      .build();
526         Optional<Link> optionalEvcLink = mock(Optional.class, Mockito.RETURNS_MOCKS);
527         Link lnk = mock (Link.class, Mockito.RETURNS_MOCKS);
528         when(optionalEvcLink.isPresent()).thenReturn(true);
529         when(optionalEvcLink.get()).thenReturn(lnk);
530         PowerMockito.suppress(MemberMatcher.method(UnimgrUtils.class, "readLink", DataBroker.class, LogicalDatastoreType.class, InstanceIdentifier.class));
531         when(UnimgrUtils.readLink(any(DataBroker.class), any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(optionalEvcLink);
532         UnimgrUtils.updateEvcNode(LogicalDatastoreType.OPERATIONAL, evcKey, evcAug,
533                                         sourceUniIid, destinationUniIid, dataBroker);
534         verify(transaction).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class));
535         verify(transaction).submit();
536     }
537
538 }