1 package org.opendaylight.unimgr.impl;
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;
12 import org.mockito.Mock;
13 import org.mockito.Mockito;
15 import org.powermock.core.classloader.annotations.PrepareForTest;
16 import org.powermock.modules.junit4.PowerMockRunner;
18 import com.google.common.base.Optional;
19 import com.google.common.collect.ImmutableBiMap;
20 import com.google.common.util.concurrent.CheckedFuture;
22 import org.powermock.api.mockito.PowerMockito;
23 import org.powermock.api.support.membermodification.MemberMatcher;
24 import org.powermock.api.support.membermodification.MemberModifier;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.UUID;
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;
84 @RunWith(PowerMockRunner.class)
85 @PrepareForTest({InstanceIdentifier.class, LogicalDatastoreType.class, UnimgrMapper.class, UnimgrUtils.class, UUID.class})
86 public class UnimgrUtilsTest {
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);
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);
116 * This test for 2 functions with the
117 * same name that take different parameters.
120 public void testCreateBridgeNode() throws Exception {
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));
134 @SuppressWarnings("unchecked")
136 public void testCreateGreTunnel() throws Exception {
138 UniAugmentation sourceUniAug = new UniAugmentationBuilder()
139 .setIpAddress(new IpAddress(new Ipv4Address("192.168.1.1")))
141 UniAugmentation destUniAug = new UniAugmentationBuilder()
142 .setIpAddress(new IpAddress(new Ipv4Address("192.168.1.2")))
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);
151 MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class, "getTerminationPointIid", Node.class, String.class));
152 MemberModifier.suppress(MemberMatcher.method(UnimgrUtils.class, "createMdsalProtocols"));
154 UnimgrUtils.createGreTunnel(dataBroker,
160 verify(transaction).put(any(LogicalDatastoreType.class),
161 any(InstanceIdentifier.class),
162 any(TerminationPoint.class));
163 verify(transaction).submit();
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());
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()))
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);
195 * This test for 2 functions with the
196 * same name that take different parameters.
198 @SuppressWarnings("unchecked")
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),
211 when(transaction.submit()).thenReturn(checkedFuture);
212 verify(transaction).put(any(LogicalDatastoreType.class),
213 any(InstanceIdentifier.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),
227 when(transaction.submit()).thenReturn(checkedFuture);
228 verify(transaction).put(any(LogicalDatastoreType.class),
229 any(InstanceIdentifier.class),
231 verify(transaction).submit();
232 // try with a null uni
233 exception.expect(Exception.class);
234 UnimgrUtils.createOvsdbNode(dataBroker, null);
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))
244 OvsdbNodeAugmentation ovsdbNode = new OvsdbNodeAugmentationBuilder()
245 .setConnectionInfo(connectionInfos).build();
246 assertEquals(ovsdbNode, UnimgrUtils.createOvsdbNodeAugmentation(uni));
250 public void testCreateOvsdbNodeId() {
251 String nodeId = UnimgrConstants.OVSDB_PREFIX
252 + IP.getIpv4Address().getValue().toString()
254 + UnimgrConstants.OVSDB_PORT;
255 assertEquals(new NodeId(nodeId), UnimgrUtils.createOvsdbNodeId(IP));
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)
265 .setVlanMode(VlanMode.Access)
267 assertEquals(terminationPoint, UnimgrUtils.createOvsdbTerminationPointAugmentation(uni));
271 public void testCreateEvc() {
272 EvcAugmentation evc = mock(EvcAugmentation.class);
273 assertEquals(false, UnimgrUtils.createEvc(dataBroker, evc));
276 @SuppressWarnings("unchecked")
278 public void testCreateUniNode() {
279 UniAugmentation uniAug = new UniAugmentationBuilder()
280 .setIpAddress(new IpAddress(new Ipv4Address("192.168.1.2")))
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);
287 when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
288 UnimgrUtils.createUniNode(dataBroker, uniAug);
289 verify(transaction).put(any(LogicalDatastoreType.class),
290 any(InstanceIdentifier.class),
292 verify(transaction).submit();
296 public void testCreateUniNodeId() {
297 NodeId nodeId = new NodeId(UnimgrConstants.UNI_PREFIX + IP.getIpv4Address().getValue().toString());
298 assertEquals(nodeId, UnimgrUtils.createUniNodeId(IP));
302 * This test for 2 functions with the
303 * same name that take different parameters.
305 @SuppressWarnings("unchecked")
307 public void testCreateTerminationPointNode() {
308 Uni uni = new UniAugmentationBuilder().build();
309 Node bridgeNode = new NodeBuilder().build();
311 MemberModifier.suppress(MemberMatcher.method(UnimgrMapper.class,
312 "getTerminationPointIid",
315 PowerMockito.when(UnimgrMapper.getTerminationPointIid(any(Node.class),
316 any(String.class))).thenReturn(tpIid);
317 when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
319 UnimgrUtils.createTerminationPointNode(dataBroker, uni, bridgeNode, bridgeName, portName, type);
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();
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
340 public void testDeleteTerminationPoint() {
345 public void testDeleteNode() {
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
356 public void testExtractOriginal() {
361 public void testExtractRemoved() {
366 public void testFindOvsdbNode() {
371 public void testFindUniNode() {
376 public void testGetConnectionInfo() {
381 public void testGetEvcLinks() {
386 public void testGetLocalIp() {
391 public void testGetOvsdbNodes() {
396 * This test for 2 functions with the
397 * same name that take different parameters.
400 public void testGetUniNodes() {
405 public void testGetUnis() {
410 public void testGetUni() {
415 public void testRead() {
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);
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);
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();
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();
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))
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()
512 .setKey(new UniDestKey(order))
513 .setIpAddress(ipAddreDest)
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)
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();