2 * Copyright © 2015, 2017 Inocybe Technologies 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
9 package org.opendaylight.ovsdb.southbound;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertNull;
14 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.when;
17 import com.fasterxml.jackson.databind.JsonNode;
18 import com.fasterxml.jackson.databind.ObjectMapper;
19 import java.io.InputStream;
20 import java.net.InetAddress;
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.HashSet;
25 import java.util.List;
28 import org.junit.Test;
29 import org.mockito.Mockito;
30 import org.mockito.stubbing.Answer;
31 import org.opendaylight.ovsdb.lib.OvsdbClient;
32 import org.opendaylight.ovsdb.lib.notation.Column;
33 import org.opendaylight.ovsdb.lib.notation.UUID;
34 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
35 import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
36 import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
37 import org.opendaylight.ovsdb.schema.openvswitch.Controller;
38 import org.opendaylight.ovsdb.schema.openvswitch.Manager;
39 import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeNetdev;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeVxlan;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolOpenflow10;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntryBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagerEntry;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagerEntryBuilder;
62 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
63 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
64 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
65 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
66 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
67 import org.opendaylight.yangtools.yang.common.Uint32;
69 public class SouthboundMapperTest {
72 public void testCreateIpAddress() throws Exception {
73 IpAddress ipAddress = IpAddressBuilder.getDefaultInstance("127.0.0.1");
74 InetAddress inetAddress = InetAddress.getByAddress(new byte[] {127, 0, 0, 1});
75 assertEquals("Incorrect IP address created", ipAddress, SouthboundMapper.createIpAddress(inetAddress));
79 public void testCreateInstanceIdentifier() throws Exception {
80 NodeId nodeId = NodeId.getDefaultInstance("test");
81 InstanceIdentifier<Node> iid = SouthboundMapper.createInstanceIdentifier(nodeId);
82 assertEquals(nodeId, iid.firstKeyOf(Node.class).getNodeId());
85 @SuppressWarnings("unchecked")
87 public void testCreateInstanceIdentifier1() throws Exception {
88 Bridge bridge = mock(Bridge.class);
90 // When bridge is not empty, we expect a deserialized identifier
91 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
92 when(bridge.getExternalIdsColumn()).thenReturn(column);
93 Map<String, String> map = new HashMap<>();
94 map.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "IID_EXTERNAL_ID_KEY");
95 when(column.getData()).thenReturn(map);
96 InstanceIdentifierCodec iidc = mock(InstanceIdentifierCodec.class);
97 InstanceIdentifier deserializedIid = InstanceIdentifier.create(NetworkTopology.class);
98 when(iidc.bindingDeserializerOrNull("IID_EXTERNAL_ID_KEY")).thenReturn(deserializedIid);
99 OvsdbConnectionInstance client = mock(OvsdbConnectionInstance.class, Mockito.RETURNS_DEEP_STUBS);
100 assertEquals("Incorrect Instance Identifier received", deserializedIid,
101 SouthboundMapper.createInstanceIdentifier(iidc, client, bridge));
103 // When bridge is empty, we expect a new identifier pointing to the bridge
104 when(bridge.getExternalIdsColumn()).thenReturn(null);
105 when(client.getNodeKey().getNodeId().getValue()).thenReturn("uri");
106 when(bridge.getName()).thenReturn("bridgeName");
107 InstanceIdentifier<Node> returnedIid = SouthboundMapper.createInstanceIdentifier(iidc, client, bridge);
108 assertEquals("Incorrect identifier type", Node.class, returnedIid.getTargetType());
109 assertEquals("Incorrect node key", new NodeId(new Uri("uri/bridge/bridgeName")),
110 returnedIid.firstKeyOf(Node.class).getNodeId());
113 @SuppressWarnings("unchecked")
115 public void testCreateInstanceIdentifier2() throws Exception {
116 Controller controller = mock(Controller.class);
118 // When controller is not empty, we expect a deserialized identifier
119 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
120 when(controller.getExternalIdsColumn()).thenReturn(column);
121 Map<String, String> map = new HashMap<>();
122 map.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "IID_EXTERNAL_ID_KEY");
123 when(column.getData()).thenReturn(map);
124 InstanceIdentifierCodec iidc = mock(InstanceIdentifierCodec.class);
125 InstanceIdentifier deserializedIid = InstanceIdentifier.create(NetworkTopology.class);
126 when(iidc.bindingDeserializerOrNull("IID_EXTERNAL_ID_KEY")).thenReturn(deserializedIid);
127 OvsdbConnectionInstance client = mock(OvsdbConnectionInstance.class, Mockito.RETURNS_DEEP_STUBS);
128 assertEquals("Incorrect Instance Identifier received", deserializedIid,
129 SouthboundMapper.createInstanceIdentifier(iidc, client, controller, "bridgeName"));
131 // When controller is empty, we expect a new identifier pointing to the bridge
132 when(controller.getExternalIdsColumn()).thenReturn(null);
133 when(client.getNodeKey().getNodeId().getValue()).thenReturn("uri");
134 InstanceIdentifier<Node> returnedIid =
135 SouthboundMapper.createInstanceIdentifier(iidc, client, controller, "bridgeName");
136 assertEquals("Incorrect identifier type", Node.class, returnedIid.getTargetType());
137 assertEquals("Incorrect node key", new NodeId(new Uri("uri/bridge/bridgeName")),
138 returnedIid.firstKeyOf(Node.class).getNodeId());
142 public void testCreateInetAddress() throws Exception {
144 IpAddress ipV4Address = IpAddressBuilder.getDefaultInstance("99.99.99.99");
145 assertEquals("Incorrect InetAddress received", InetAddress.getByAddress(new byte[] {99, 99, 99, 99}),
146 SouthboundMapper.createInetAddress(ipV4Address));
149 IpAddress ipV6Address = IpAddressBuilder.getDefaultInstance("0000:0000:0000:0000:0000:9999:FE1E:8329");
150 assertEquals("Incorrect InetAddress received", InetAddress.getByAddress(
151 new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (byte) 0x99, (byte) 0x99, (byte) 0xFE, 0x1E, (byte) 0x83,
153 SouthboundMapper.createInetAddress(ipV6Address));
156 @SuppressWarnings("unchecked")
158 public void testCreateDatapathId() throws Exception {
159 Bridge bridge = mock(Bridge.class);
160 when(bridge.getDatapathIdColumn()).thenReturn(null);
161 assertNull(SouthboundMapper.createDatapathId(bridge));
163 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
164 when(bridge.getDatapathIdColumn()).thenReturn(column);
165 Set<String> set = new HashSet<>();
166 set.add("00:11:22:33:44:55:66:77");
167 when(column.getData()).thenReturn(set);
168 assertNotNull(column.getData());
170 DatapathId dataPathId = new DatapathId("00:11:22:33:44:55:66:77");
172 assertEquals(dataPathId, SouthboundMapper.createDatapathId(bridge));
176 public void testCreateDatapathType() throws Exception {
177 OvsdbBridgeAugmentation mdsalbridge = mock(OvsdbBridgeAugmentation.class);
178 when(mdsalbridge.getDatapathType()).thenAnswer(
179 (Answer<Class<? extends DatapathTypeBase>>) invocation -> DatapathTypeNetdev.class);
180 assertEquals("netdev", SouthboundMapper.createDatapathType(mdsalbridge));
182 when(mdsalbridge.getDatapathType()).thenAnswer(
183 (Answer<Class<? extends DatapathTypeBase>>) invocation -> DatapathTypeSystem.class);
184 assertEquals("system", SouthboundMapper.createDatapathType(mdsalbridge));
188 public void testCreateDatapathType1() {
189 assertEquals(DatapathTypeSystem.class, SouthboundMapper.createDatapathType(""));
190 assertEquals(DatapathTypeSystem.class, SouthboundMapper.createDatapathType("system"));
191 assertEquals(DatapathTypeNetdev.class, SouthboundMapper.createDatapathType("netdev"));
195 public void testCreateOvsdbBridgeProtocols() {
196 OvsdbBridgeAugmentation ovsdbBridgeNode = mock(OvsdbBridgeAugmentation.class);
197 List<ProtocolEntry> protocolList = new ArrayList<>();
198 ProtocolEntry protocolEntry = new ProtocolEntryBuilder()
199 .setProtocol(OvsdbBridgeProtocolOpenflow10.class)
202 when(ovsdbBridgeNode.getProtocolEntry()).thenReturn(Map.of(protocolEntry.key(), protocolEntry));
203 Set<String> protocols = new HashSet<>();
204 protocols.add("OpenFlow10");
205 assertEquals(protocols, SouthboundMapper.createOvsdbBridgeProtocols(ovsdbBridgeNode));
209 public void testCreateInterfaceType() {
210 assertEquals(InterfaceTypeInternal.class, SouthboundMapper.createInterfaceType("internal"));
211 assertEquals(InterfaceTypeVxlan.class, SouthboundMapper.createInterfaceType("vxlan"));
215 public void testCreateOvsdbInterfaceType() {
216 assertEquals("internal", SouthboundMapper.createOvsdbInterfaceType(InterfaceTypeInternal.class));
217 assertEquals("vxlan", SouthboundMapper.createOvsdbInterfaceType(InterfaceTypeVxlan.class));
220 @SuppressWarnings("unchecked")
222 public void testCreateMdsalProtocols() throws Exception {
223 Bridge bridge = mock(Bridge.class);
224 Set<String> value = new HashSet<>();
225 value.add("OpenFlow10");
226 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
227 when(bridge.getProtocolsColumn()).thenReturn(column);
228 when(column.getData()).thenReturn(value);
230 List<ProtocolEntry> returnedProtocols = SouthboundMapper.createMdsalProtocols(bridge);
231 assertEquals(value.size(), returnedProtocols.size());
232 assertEquals(OvsdbBridgeProtocolOpenflow10.class, returnedProtocols.get(0).getProtocol());
235 @SuppressWarnings("unchecked")
237 public void testCreateControllerEntries() throws Exception {
238 Bridge bridge = mock(Bridge.class);
239 Column<GenericTableSchema, Set<UUID>> controllerColumn = mock(Column.class);
240 when(bridge.getControllerColumn()).thenReturn(controllerColumn);
241 Set<UUID> controllerUUIDs = new HashSet<>();
242 String uuidString = "7da709ff-397f-4778-a0e8-994811272fdb";
243 UUID uuid = new UUID(uuidString);
244 controllerUUIDs.add(uuid);
245 Controller controller = mock(Controller.class);
246 Column<GenericTableSchema, String> targetColumn = mock(Column.class);
247 when(targetColumn.getData()).thenReturn("targetData");
248 when(controller.getTargetColumn()).thenReturn(targetColumn);
249 when(controller.getUuid()).thenReturn(uuid);
250 Column<GenericTableSchema, Boolean> isConnectedColumn = mock(Column.class);
251 when(isConnectedColumn.getData()).thenReturn(true);
252 when(controller.getIsConnectedColumn()).thenReturn(isConnectedColumn);
253 Map<UUID, Controller> updatedControllerRows = new HashMap<>();
254 updatedControllerRows.put(uuid, controller);
255 when(controllerColumn.getData()).thenReturn(controllerUUIDs);
257 List<ControllerEntry> controllerEntries = new ArrayList<>();
258 ControllerEntry controllerEntry = new ControllerEntryBuilder()
259 .setControllerUuid(Uuid.getDefaultInstance(uuidString))
260 .setIsConnected(true)
261 .setTarget(Uri.getDefaultInstance("targetData"))
263 controllerEntries.add(controllerEntry);
265 assertEquals(controllerEntries, SouthboundMapper.createControllerEntries(bridge, updatedControllerRows));
269 public void testCreateControllerEntries1() throws Exception {
274 public void testCreateOvsdbController() throws Exception {
275 try (InputStream resourceAsStream = SouthboundMapperTest.class.getResourceAsStream("openvswitch_schema.json")) {
276 ObjectMapper mapper = new ObjectMapper();
277 JsonNode jsonNode = mapper.readTree(resourceAsStream);
279 DatabaseSchema dbSchema = DatabaseSchema.fromJson(OvsdbSchemaContants.DATABASE_NAME,
280 jsonNode.get("result"));
282 String uuidString = "7da709ff-397f-4778-a0e8-994811272fdb";
283 OvsdbBridgeAugmentation omn = new OvsdbBridgeAugmentationBuilder()
284 .setControllerEntry(BindingMap.of(new ControllerEntryBuilder()
285 .setControllerUuid(Uuid.getDefaultInstance(uuidString))
286 .setTarget(Uri.getDefaultInstance("uri"))
290 Map<UUID, Controller> returnedControllers = SouthboundMapper.createOvsdbController(omn, dbSchema);
291 assertEquals(1, returnedControllers.size());
292 Controller returnedController = returnedControllers.values().iterator().next();
293 assertEquals("uri", returnedController.getTargetColumn().getData());
298 public void testCreateConnectionInfo() throws Exception {
299 OvsdbClient client = mock(OvsdbClient.class, Mockito.RETURNS_DEEP_STUBS);
301 InetAddress remoteAddress = InetAddress.getByAddress(new byte[] {1, 2, 3, 4});
302 when(client.getConnectionInfo().getRemoteAddress()).thenReturn(remoteAddress);
303 when(client.getConnectionInfo().getRemotePort()).thenReturn(8080);
304 InetAddress localAddress = InetAddress.getByAddress(new byte[] {1, 2, 3, 5});
305 when(client.getConnectionInfo().getLocalAddress()).thenReturn(localAddress);
306 when(client.getConnectionInfo().getLocalPort()).thenReturn(8081);
308 ConnectionInfo returnedConnectionInfo = SouthboundMapper.createConnectionInfo(client);
309 assertEquals(IpAddressBuilder.getDefaultInstance("1.2.3.4"), returnedConnectionInfo.getRemoteIp());
310 assertEquals(8080, returnedConnectionInfo.getRemotePort().getValue().toJava());
311 assertEquals(IpAddressBuilder.getDefaultInstance("1.2.3.5"), returnedConnectionInfo.getLocalIp());
312 assertEquals(8081, returnedConnectionInfo.getLocalPort().getValue().toJava());
316 public void testSuppressLocalIpPort() throws Exception {
317 ConnectionInfo connectionInfo = mock(ConnectionInfo.class);
318 IpAddress ipAddress = IpAddressBuilder.getDefaultInstance("1.2.3.4");
319 when(connectionInfo.getRemoteIp()).thenReturn(ipAddress);
320 PortNumber portNumber = PortNumber.getDefaultInstance("8080");
321 when(connectionInfo.getRemotePort()).thenReturn(portNumber);
322 ConnectionInfo returnedConnectionInfo = SouthboundMapper.suppressLocalIpPort(connectionInfo);
323 assertEquals(ipAddress, returnedConnectionInfo.getRemoteIp());
324 assertEquals(portNumber, returnedConnectionInfo.getRemotePort());
325 assertNull(returnedConnectionInfo.getLocalIp());
326 assertNull(returnedConnectionInfo.getLocalPort());
329 @SuppressWarnings("unchecked")
331 public void testCreateManagerEntries() throws Exception {
332 OpenVSwitch ovsdbNode = mock(OpenVSwitch.class);
333 Map<UUID, Manager> updatedManagerRows = new HashMap<>();
334 Set<UUID> managerUUIDs = new HashSet<>();
335 UUID uuid = new UUID("7da709ff-397f-4778-a0e8-994811272fdb");
336 Manager manager = mock(Manager.class);
337 managerUUIDs.add(uuid);
338 updatedManagerRows.put(uuid, manager);
339 Column<GenericTableSchema, Set<UUID>> column = mock(Column.class);
340 when(ovsdbNode.getManagerOptionsColumn()).thenReturn(column);
341 when(column.getData()).thenReturn(managerUUIDs);
343 //Test addManagerEntries(managerEntriesCreated, manager)
344 Column<GenericTableSchema, String> value = mock(Column.class);
345 when(manager.getTargetColumn()).thenReturn(value);
346 when(value.getData()).thenReturn("dummy");
348 Column<GenericTableSchema, Map<String, String>> statusColumn = mock(Column.class);
349 when(manager.getStatusColumn()).thenReturn(statusColumn);
350 Map<String, String> statusAttributeMap = new HashMap<>();
351 when(statusColumn.getData()).thenReturn(statusAttributeMap);
352 String numberOfConnectionValueStr = "999";
354 //statusAttributeMap contains N_CONNECTIONS_STR key
355 statusAttributeMap.put("n_connections", numberOfConnectionValueStr);
357 Column<GenericTableSchema, Boolean> isConnectedColumn = mock(Column.class);
358 when(manager.getIsConnectedColumn()).thenReturn(isConnectedColumn);
359 when(isConnectedColumn.getData()).thenReturn(true);
361 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
363 .setNumberOfConnections(Uint32.valueOf(999))
364 .setTarget(Uri.getDefaultInstance("dummy"))
365 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
367 //statusAttributeMap contains N_CONNECTIONS_STR key
368 statusAttributeMap.remove("n_connections");
369 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
371 .setNumberOfConnections(Uint32.ONE)
372 .setTarget(Uri.getDefaultInstance("dummy"))
373 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
376 @SuppressWarnings("unchecked")
378 public void testCreateManagerEntries1() throws Exception {
379 Node ovsdbNode = mock(Node.class);
380 Map<Uri, Manager> updatedManagerRows = new HashMap<>();
381 Uri uri = mock(Uri.class);
382 Manager manager = mock(Manager.class);
383 updatedManagerRows.put(uri, manager);
385 List<ManagerEntry> managerEntriesCreated = new ArrayList<>();
387 //ovsdbNodeAugmentation is null
388 when(ovsdbNode.augmentation(OvsdbNodeAugmentation.class)).thenReturn(null);
389 assertEquals(managerEntriesCreated, SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
391 //ovsdbNodeAugmentation not null
392 OvsdbNodeAugmentation ovsdbNodeAugmentation = mock(OvsdbNodeAugmentation.class);
393 when(ovsdbNode.augmentation(OvsdbNodeAugmentation.class)).thenReturn(ovsdbNodeAugmentation);
395 ManagerEntry managerEntry = new ManagerEntryBuilder().setTarget(uri).build();
396 when(ovsdbNodeAugmentation.getManagerEntry()).thenReturn(Map.of(managerEntry.key(), managerEntry));
398 //Test addManagerEntries(managerEntriesCreated, manager)
399 Column<GenericTableSchema, String> value = mock(Column.class);
400 when(manager.getTargetColumn()).thenReturn(value);
401 when(value.getData()).thenReturn("dummy");
403 Column<GenericTableSchema, Map<String, String>> statusColumn = mock(Column.class);
404 when(manager.getStatusColumn()).thenReturn(statusColumn);
405 Map<String, String> statusAttributeMap = new HashMap<>();
406 when(statusColumn.getData()).thenReturn(statusAttributeMap);
407 String numberOfConnectionValueStr = "999";
409 //statusAttributeMap contains N_CONNECTIONS_STR key
410 statusAttributeMap.put("n_connections", numberOfConnectionValueStr);
412 Column<GenericTableSchema, Boolean> isConnectedColumn = mock(Column.class);
413 when(manager.getIsConnectedColumn()).thenReturn(isConnectedColumn);
414 when(isConnectedColumn.getData()).thenReturn(true);
416 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
418 .setNumberOfConnections(Uint32.valueOf(999))
419 .setTarget(Uri.getDefaultInstance("dummy"))
420 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
422 //statusAttributeMap contains N_CONNECTIONS_STR key
423 statusAttributeMap.remove("n_connections");
424 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
426 .setNumberOfConnections(Uint32.ONE)
427 .setTarget(Uri.getDefaultInstance("dummy"))
428 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
431 @SuppressWarnings("unchecked")
433 public void testGetInstanceIdentifier() throws Exception {
434 OpenVSwitch ovs = mock(OpenVSwitch.class);
435 Column<GenericTableSchema, Map<String, String>> externalIdColumn = mock(Column.class);
436 when(ovs.getExternalIdsColumn()).thenReturn(externalIdColumn);
437 Map<String, String> externalIdMap = new HashMap<>();
438 when(externalIdColumn.getData()).thenReturn(externalIdMap);
440 externalIdMap.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "test");
441 InstanceIdentifierCodec iidc = mock(InstanceIdentifierCodec.class);
442 InstanceIdentifier iid = InstanceIdentifier.create(NetworkTopology.class);
443 when(iidc.bindingDeserializerOrNull("test")).thenReturn(iid);
444 assertEquals("Incorrect Instance Identifier received", iid, SouthboundMapper.getInstanceIdentifier(iidc, ovs));
446 externalIdMap.clear();
447 UUID uuID = new UUID("test");
448 when(ovs.getUuid()).thenReturn(uuID);
449 assertNotNull(SouthboundMapper.getInstanceIdentifier(iidc, ovs));