2 * Copyright (c) 2015 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 java.io.InputStream;
18 import java.net.InetAddress;
19 import java.util.ArrayList;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.HashSet;
23 import java.util.List;
27 import com.fasterxml.jackson.databind.JsonNode;
28 import com.fasterxml.jackson.databind.ObjectMapper;
29 import org.junit.Test;
30 import org.mockito.Mockito;
31 import org.mockito.invocation.InvocationOnMock;
32 import org.mockito.stubbing.Answer;
33 import org.opendaylight.ovsdb.lib.OvsdbClient;
34 import org.opendaylight.ovsdb.lib.notation.Column;
35 import org.opendaylight.ovsdb.lib.notation.UUID;
36 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
37 import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
38 import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
39 import org.opendaylight.ovsdb.schema.openvswitch.Controller;
40 import org.opendaylight.ovsdb.schema.openvswitch.Manager;
41 import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeNetdev;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeVxlan;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolBase;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolOpenflow10;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
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.ManagerEntry;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagerEntryBuilder;
64 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
65 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
66 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
68 public class SouthboundMapperTest {
71 public void testCreateIpAddress() throws Exception {
72 IpAddress ipAddress = IpAddressBuilder.getDefaultInstance("127.0.0.1");
73 InetAddress inetAddress = InetAddress.getByAddress(new byte[] {127, 0, 0, 1});
74 assertEquals("Incorrect IP address created", ipAddress, SouthboundMapper.createIpAddress(inetAddress));
78 public void testCreateInstanceIdentifier() throws Exception {
79 NodeId nodeId = NodeId.getDefaultInstance("test");
80 InstanceIdentifier<Node> iid = SouthboundMapper.createInstanceIdentifier(nodeId);
81 assertEquals(nodeId, iid.firstKeyOf(Node.class).getNodeId());
84 @SuppressWarnings("unchecked")
86 public void testCreateInstanceIdentifier1() throws Exception {
87 OvsdbConnectionInstance client = mock(OvsdbConnectionInstance.class, Mockito.RETURNS_DEEP_STUBS);
88 Bridge bridge = mock(Bridge.class);
90 // When bridge is not empty, we expect a deserialized identifier
91 InstanceIdentifier deserializedIid = InstanceIdentifier.create(Node.class);
92 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
93 when(bridge.getExternalIdsColumn()).thenReturn(column);
94 Map<String, String> map = new HashMap<>();
95 map.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "IID_EXTERNAL_ID_KEY");
96 when(column.getData()).thenReturn(map);
97 InstanceIdentifierCodec iidc = mock(InstanceIdentifierCodec.class);
98 when(iidc.bindingDeserializer("IID_EXTERNAL_ID_KEY")).thenReturn(deserializedIid);
99 SouthboundUtil.setInstanceIdentifierCodec(iidc);
100 assertEquals("Incorrect Instance Identifier received", deserializedIid,
101 SouthboundMapper.createInstanceIdentifier(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(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 OvsdbConnectionInstance client = mock(OvsdbConnectionInstance.class, Mockito.RETURNS_DEEP_STUBS);
117 Controller controller = mock(Controller.class);
119 // When controller is not empty, we expect a deserialized identifier
120 InstanceIdentifier deserializedIid = InstanceIdentifier.create(Node.class);
121 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
122 when(controller.getExternalIdsColumn()).thenReturn(column);
123 Map<String, String> map = new HashMap<>();
124 map.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "IID_EXTERNAL_ID_KEY");
125 when(column.getData()).thenReturn(map);
126 InstanceIdentifierCodec iidc = mock(InstanceIdentifierCodec.class);
127 when(iidc.bindingDeserializer("IID_EXTERNAL_ID_KEY")).thenReturn(deserializedIid);
128 SouthboundUtil.setInstanceIdentifierCodec(iidc);
129 assertEquals("Incorrect Instance Identifier received", deserializedIid,
130 SouthboundMapper.createInstanceIdentifier(client, controller, "bridgeName"));
132 // When controller is empty, we expect a new identifier pointing to the bridge
133 when(controller.getExternalIdsColumn()).thenReturn(null);
134 when(client.getNodeKey().getNodeId().getValue()).thenReturn("uri");
135 InstanceIdentifier<Node> returnedIid =
136 SouthboundMapper.createInstanceIdentifier(client, controller, "bridgeName");
137 assertEquals("Incorrect identifier type", Node.class, returnedIid.getTargetType());
138 assertEquals("Incorrect node key", new NodeId(new Uri("uri/bridge/bridgeName")),
139 returnedIid.firstKeyOf(Node.class).getNodeId());
143 public void testCreateInetAddress() throws Exception {
145 IpAddress ipV4Address = IpAddressBuilder.getDefaultInstance("99.99.99.99");
146 assertEquals("Incorrect InetAddress received", InetAddress.getByAddress(new byte[] {99, 99, 99, 99}),
147 SouthboundMapper.createInetAddress(ipV4Address));
150 IpAddress ipV6Address = IpAddressBuilder.getDefaultInstance("0000:0000:0000:0000:0000:9999:FE1E:8329");
151 assertEquals("Incorrect InetAddress received", InetAddress.getByAddress(
152 new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (byte) 0x99, (byte) 0x99, (byte) 0xFE, 0x1E, (byte) 0x83,
154 SouthboundMapper.createInetAddress(ipV6Address));
157 @SuppressWarnings("unchecked")
159 public void testCreateDatapathId() throws Exception {
160 Bridge bridge = mock(Bridge.class);
161 when(bridge.getDatapathIdColumn()).thenReturn(null);
162 assertNull(SouthboundMapper.createDatapathId(bridge));
164 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
165 when(bridge.getDatapathIdColumn()).thenReturn(column);
166 Set<String> set = new HashSet<>();
167 set.add("00:11:22:33:44:55:66:77");
168 when(column.getData()).thenReturn(set);
169 assertNotNull(column.getData());
171 DatapathId dataPathId = new DatapathId("00:11:22:33:44:55:66:77");
173 assertEquals(dataPathId, SouthboundMapper.createDatapathId(bridge));
177 public void testCreateDatapathType() throws Exception {
178 OvsdbBridgeAugmentation mdsalbridge = mock(OvsdbBridgeAugmentation.class);
179 when(mdsalbridge.getDatapathType()).thenAnswer(new Answer<Class<? extends DatapathTypeBase>>() {
180 public Class<? extends DatapathTypeBase> answer(
181 InvocationOnMock invocation) throws Throwable {
182 return DatapathTypeNetdev.class;
185 assertEquals("netdev", SouthboundMapper.createDatapathType(mdsalbridge));
187 when(mdsalbridge.getDatapathType()).thenAnswer(new Answer<Class<? extends DatapathTypeBase>>() {
188 public Class<? extends DatapathTypeBase> answer(
189 InvocationOnMock invocation) throws Throwable {
190 return DatapathTypeSystem.class;
193 assertEquals("system", SouthboundMapper.createDatapathType(mdsalbridge));
197 public void testCreateDatapathType1() {
198 assertEquals(DatapathTypeSystem.class, SouthboundMapper.createDatapathType(""));
199 assertEquals(DatapathTypeSystem.class, SouthboundMapper.createDatapathType("system"));
200 assertEquals(DatapathTypeNetdev.class, SouthboundMapper.createDatapathType("netdev"));
204 public void testCreateOvsdbBridgeProtocols() {
205 OvsdbBridgeAugmentation ovsdbBridgeNode = mock(OvsdbBridgeAugmentation.class);
206 List<ProtocolEntry> protocolList = new ArrayList<>();
207 ProtocolEntry protocolEntry = mock(ProtocolEntry.class);
208 protocolList.add(protocolEntry);
209 when(ovsdbBridgeNode.getProtocolEntry()).thenReturn(protocolList);
210 when(protocolEntry.getProtocol()).thenAnswer(new Answer<Class<? extends OvsdbBridgeProtocolBase>>() {
211 public Class<? extends OvsdbBridgeProtocolBase> answer(
212 InvocationOnMock invocation) throws Throwable {
213 return OvsdbBridgeProtocolOpenflow10.class;
216 Set<String> protocols = new HashSet<>();
217 protocols.add("OpenFlow10");
218 assertEquals(protocols, SouthboundMapper.createOvsdbBridgeProtocols(ovsdbBridgeNode));
222 public void testCreateInterfaceType() {
223 assertEquals(InterfaceTypeInternal.class, SouthboundMapper.createInterfaceType("internal"));
224 assertEquals(InterfaceTypeVxlan.class, SouthboundMapper.createInterfaceType("vxlan"));
228 public void testCreateOvsdbInterfaceType() {
229 assertEquals("internal", SouthboundMapper.createOvsdbInterfaceType(InterfaceTypeInternal.class));
230 assertEquals("vxlan", SouthboundMapper.createOvsdbInterfaceType(InterfaceTypeVxlan.class));
233 @SuppressWarnings("unchecked")
235 public void testCreateMdsalProtocols() throws Exception {
236 Bridge bridge = mock(Bridge.class);
237 Set<String> value = new HashSet<>();
238 value.add("OpenFlow10");
239 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
240 when(bridge.getProtocolsColumn()).thenReturn(column);
241 when(column.getData()).thenReturn(value);
243 List<ProtocolEntry> returnedProtocols = SouthboundMapper.createMdsalProtocols(bridge);
244 assertEquals(value.size(), returnedProtocols.size());
245 assertEquals(OvsdbBridgeProtocolOpenflow10.class, returnedProtocols.get(0).getProtocol());
248 @SuppressWarnings("unchecked")
250 public void testCreateControllerEntries() throws Exception {
251 Bridge bridge = mock(Bridge.class);
252 Map<UUID, Controller> updatedControllerRows = new HashMap<>();
253 Column<GenericTableSchema, Set<UUID>> controllerColumn = mock(Column.class);
254 when(bridge.getControllerColumn()).thenReturn(controllerColumn);
255 Set<UUID> controllerUUIDs = new HashSet<>();
256 String uuidString = "7da709ff-397f-4778-a0e8-994811272fdb";
257 UUID uuid = new UUID(uuidString);
258 controllerUUIDs.add(uuid);
259 Controller controller = mock(Controller.class);
260 Column<GenericTableSchema, String> targetColumn = mock(Column.class);
261 when(targetColumn.getData()).thenReturn("targetData");
262 when(controller.getTargetColumn()).thenReturn(targetColumn);
263 when(controller.getUuid()).thenReturn(uuid);
264 Column<GenericTableSchema, Boolean> isConnectedColumn = mock(Column.class);
265 when(isConnectedColumn.getData()).thenReturn(true);
266 when(controller.getIsConnectedColumn()).thenReturn(isConnectedColumn);
267 updatedControllerRows.put(uuid, controller);
268 when(controllerColumn.getData()).thenReturn(controllerUUIDs);
270 List<ControllerEntry> controllerEntries = new ArrayList<>();
271 ControllerEntry controllerEntry = new ControllerEntryBuilder()
272 .setControllerUuid(Uuid.getDefaultInstance(uuidString))
273 .setIsConnected(true)
274 .setTarget(Uri.getDefaultInstance("targetData"))
276 controllerEntries.add(controllerEntry);
278 assertEquals(controllerEntries, SouthboundMapper.createControllerEntries(bridge, updatedControllerRows));
282 public void testCreateControllerEntries1() throws Exception {
287 public void testCreateOvsdbController() throws Exception {
288 try (InputStream resourceAsStream = SouthboundMapperTest.class.getResourceAsStream("openvswitch_schema.json")) {
289 ObjectMapper mapper = new ObjectMapper();
290 JsonNode jsonNode = mapper.readTree(resourceAsStream);
291 System.out.println("jsonNode = " + jsonNode.get("id"));
293 DatabaseSchema dbSchema = DatabaseSchema.fromJson(OvsdbSchemaContants.DATABASE_NAME, jsonNode.get("result"));
295 String uuidString = "7da709ff-397f-4778-a0e8-994811272fdb";
296 OvsdbBridgeAugmentation omn = new OvsdbBridgeAugmentationBuilder()
297 .setControllerEntry(Collections.singletonList(new ControllerEntryBuilder()
298 .setControllerUuid(Uuid.getDefaultInstance(uuidString))
299 .setTarget(Uri.getDefaultInstance("uri"))
303 Map<UUID, Controller> returnedControllers = SouthboundMapper.createOvsdbController(omn, dbSchema);
304 assertEquals(1, returnedControllers.size());
305 Controller returnedController = returnedControllers.values().iterator().next();
306 assertEquals("uri", returnedController.getTargetColumn().getData());
311 public void testCreateConnectionInfo() throws Exception {
312 OvsdbClient client = mock(OvsdbClient.class, Mockito.RETURNS_DEEP_STUBS);
314 InetAddress remoteAddress = InetAddress.getByAddress(new byte[] {1, 2, 3, 4});
315 when(client.getConnectionInfo().getRemoteAddress()).thenReturn(remoteAddress);
316 when(client.getConnectionInfo().getRemotePort()).thenReturn(8080);
317 InetAddress localAddress = InetAddress.getByAddress(new byte[] {1, 2, 3, 5});
318 when(client.getConnectionInfo().getLocalAddress()).thenReturn(localAddress);
319 when(client.getConnectionInfo().getLocalPort()).thenReturn(8081);
321 ConnectionInfo returnedConnectionInfo = SouthboundMapper.createConnectionInfo(client);
322 assertEquals(IpAddressBuilder.getDefaultInstance("1.2.3.4"), returnedConnectionInfo.getRemoteIp());
323 assertEquals(8080, (int) returnedConnectionInfo.getRemotePort().getValue());
324 assertEquals(IpAddressBuilder.getDefaultInstance("1.2.3.5"), returnedConnectionInfo.getLocalIp());
325 assertEquals(8081, (int) returnedConnectionInfo.getLocalPort().getValue());
329 public void testSuppressLocalIpPort() throws Exception {
330 ConnectionInfo connectionInfo = mock(ConnectionInfo.class);
331 IpAddress ipAddress = IpAddressBuilder.getDefaultInstance("1.2.3.4");
332 when(connectionInfo.getRemoteIp()).thenReturn(ipAddress);
333 PortNumber portNumber = PortNumber.getDefaultInstance("8080");
334 when(connectionInfo.getRemotePort()).thenReturn(portNumber);
335 ConnectionInfo returnedConnectionInfo = SouthboundMapper.suppressLocalIpPort(connectionInfo);
336 assertEquals(ipAddress, returnedConnectionInfo.getRemoteIp());
337 assertEquals(portNumber, returnedConnectionInfo.getRemotePort());
338 assertNull(returnedConnectionInfo.getLocalIp());
339 assertNull(returnedConnectionInfo.getLocalPort());
342 @SuppressWarnings("unchecked")
344 public void testCreateManagerEntries() throws Exception {
345 OpenVSwitch ovsdbNode = mock(OpenVSwitch.class);
346 Map<UUID, Manager> updatedManagerRows = new HashMap<>();
347 Set<UUID> managerUUIDs = new HashSet<>();
348 UUID managerUUID = new UUID("7da709ff-397f-4778-a0e8-994811272fdb");
349 Manager manager = mock(Manager.class);
350 managerUUIDs.add(managerUUID);
351 updatedManagerRows.put(managerUUID, manager);
352 Column<GenericTableSchema, Set<UUID>> column = mock(Column.class);
353 when(ovsdbNode.getManagerOptionsColumn()).thenReturn(column);
354 when(column.getData()).thenReturn(managerUUIDs);
356 //Test addManagerEntries(managerEntriesCreated, manager)
357 Column<GenericTableSchema, String> value = mock(Column.class);
358 when(manager.getTargetColumn()).thenReturn(value);
359 when(value.getData()).thenReturn("dummy");
361 Column<GenericTableSchema, Map<String, String>> statusColumn = mock(Column.class);
362 when(manager.getStatusColumn()).thenReturn(statusColumn);
363 Map<String, String> statusAttributeMap = new HashMap<>();
364 when(statusColumn.getData()).thenReturn(statusAttributeMap);
365 String numberOfConnectionValueStr = "999";
367 //statusAttributeMap contains N_CONNECTIONS_STR key
368 statusAttributeMap.put("n_connections", numberOfConnectionValueStr);
370 Column<GenericTableSchema, Boolean> isConnectedColumn = mock(Column.class);
371 when(manager.getIsConnectedColumn()).thenReturn(isConnectedColumn);
372 when(isConnectedColumn.getData()).thenReturn(true);
374 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
376 .setNumberOfConnections(999L)
377 .setTarget(Uri.getDefaultInstance("dummy"))
378 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
380 //statusAttributeMap contains N_CONNECTIONS_STR key
381 statusAttributeMap.remove("n_connections");
382 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
384 .setNumberOfConnections(1L)
385 .setTarget(Uri.getDefaultInstance("dummy"))
386 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
389 @SuppressWarnings("unchecked")
391 public void testCreateManagerEntries1() throws Exception {
392 Node ovsdbNode = mock(Node.class);
393 Map<Uri, Manager> updatedManagerRows = new HashMap<>();
394 Uri uri = mock(Uri.class);
395 Manager manager = mock(Manager.class);
396 updatedManagerRows.put(uri, manager);
398 List<ManagerEntry> managerEntriesCreated = new ArrayList<>();
400 //ovsdbNodeAugmentation is null
401 when(ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class)).thenReturn(null);
402 assertEquals(managerEntriesCreated, SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
404 //ovsdbNodeAugmentation not null
405 OvsdbNodeAugmentation ovsdbNodeAugmentation = mock(OvsdbNodeAugmentation.class);
406 when(ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class)).thenReturn(ovsdbNodeAugmentation);
408 List<ManagerEntry> managerEntries = new ArrayList<>();
409 ManagerEntry managerEntry = mock(ManagerEntry.class);
410 managerEntries.add(managerEntry);
411 when(ovsdbNodeAugmentation.getManagerEntry()).thenReturn(managerEntries);
412 when(managerEntry.getTarget()).thenReturn(uri);
414 //Test addManagerEntries(managerEntriesCreated, manager)
415 Column<GenericTableSchema, String> value = mock(Column.class);
416 when(manager.getTargetColumn()).thenReturn(value);
417 when(value.getData()).thenReturn("dummy");
419 Column<GenericTableSchema, Map<String, String>> statusColumn = mock(Column.class);
420 when(manager.getStatusColumn()).thenReturn(statusColumn);
421 Map<String, String> statusAttributeMap = new HashMap<>();
422 when(statusColumn.getData()).thenReturn(statusAttributeMap);
423 String numberOfConnectionValueStr = "999";
425 //statusAttributeMap contains N_CONNECTIONS_STR key
426 statusAttributeMap.put("n_connections", numberOfConnectionValueStr);
428 Column<GenericTableSchema, Boolean> isConnectedColumn = mock(Column.class);
429 when(manager.getIsConnectedColumn()).thenReturn(isConnectedColumn);
430 when(isConnectedColumn.getData()).thenReturn(true);
432 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
434 .setNumberOfConnections(999L)
435 .setTarget(Uri.getDefaultInstance("dummy"))
436 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
438 //statusAttributeMap contains N_CONNECTIONS_STR key
439 statusAttributeMap.remove("n_connections");
440 assertEquals(Collections.singletonList(new ManagerEntryBuilder()
442 .setNumberOfConnections(1L)
443 .setTarget(Uri.getDefaultInstance("dummy"))
444 .build()), SouthboundMapper.createManagerEntries(ovsdbNode, updatedManagerRows));
447 @SuppressWarnings("unchecked")
449 public void testGetInstanceIdentifier() throws Exception {
450 OpenVSwitch ovs = mock(OpenVSwitch.class);
451 InstanceIdentifier iid = InstanceIdentifier.create(Node.class);
452 Column<GenericTableSchema, Map<String, String>> externalIdColumn = mock(Column.class);
453 when(ovs.getExternalIdsColumn()).thenReturn(externalIdColumn);
454 Map<String, String> externalIdMap = new HashMap<>();
455 when(externalIdColumn.getData()).thenReturn(externalIdMap);
457 externalIdMap.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "test");
458 InstanceIdentifierCodec iidc = mock(InstanceIdentifierCodec.class);
459 when(iidc.bindingDeserializer("test")).thenReturn(iid);
460 SouthboundUtil.setInstanceIdentifierCodec(iidc);
461 assertEquals("Incorrect Instance Identifier received", iid, SouthboundMapper.getInstanceIdentifier(ovs));
463 externalIdMap.clear();
464 UUID uuID = new UUID("test");
465 when(ovs.getUuid()).thenReturn(uuID);
466 assertNotNull(SouthboundMapper.getInstanceIdentifier(ovs));