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.transactions.md;
11 import static org.mockito.Matchers.any;
12 import static org.mockito.Matchers.anyString;
13 import static org.mockito.Matchers.eq;
14 import static org.mockito.Mockito.doNothing;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.times;
17 import static org.mockito.Mockito.verify;
18 import static org.mockito.Mockito.when;
20 import java.util.HashMap;
21 import java.util.HashSet;
22 import java.util.List;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.Mock;
29 import org.mockito.Mockito;
30 import org.mockito.invocation.InvocationOnMock;
31 import org.mockito.stubbing.Answer;
32 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
33 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
34 import org.opendaylight.ovsdb.lib.message.TableUpdates;
35 import org.opendaylight.ovsdb.lib.notation.Column;
36 import org.opendaylight.ovsdb.lib.notation.UUID;
37 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
38 import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
39 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
40 import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
41 import org.opendaylight.ovsdb.southbound.OvsdbConnectionInstance;
42 import org.opendaylight.ovsdb.southbound.SouthboundConstants;
43 import org.opendaylight.ovsdb.southbound.SouthboundMapper;
44 import org.opendaylight.ovsdb.southbound.SouthboundUtil;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeBase;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentationBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.DatapathTypeEntry;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.DatapathTypeEntryBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.InterfaceTypeEntry;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.InterfaceTypeEntryBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchExternalIds;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchExternalIdsBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchOtherConfigs;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchOtherConfigsBuilder;
60 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
61 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
62 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
63 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
64 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
65 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
66 import org.powermock.api.mockito.PowerMockito;
67 import org.powermock.api.support.membermodification.MemberMatcher;
68 import org.powermock.api.support.membermodification.MemberModifier;
69 import org.powermock.core.classloader.annotations.PrepareForTest;
70 import org.powermock.modules.junit4.PowerMockRunner;
71 import org.powermock.reflect.Whitebox;
73 @PrepareForTest({ TyperUtils.class, OpenVSwitchUpdateCommand.class, SouthboundUtil.class, SouthboundMapper.class,
74 InstanceIdentifier.class })
75 @RunWith(PowerMockRunner.class)
76 public class OpenVSwitchUpdateCommandTest {
78 @Mock private OpenVSwitchUpdateCommand openVSwitchUpdateCommand;
79 @Mock private TableUpdates updates;
80 @Mock private DatabaseSchema dbSchema;
84 openVSwitchUpdateCommand = mock(OpenVSwitchUpdateCommand.class, Mockito.CALLS_REAL_METHODS);
87 @SuppressWarnings("unchecked")
89 public void testExecute() throws Exception {
90 PowerMockito.mockStatic(TyperUtils.class);
91 Map<UUID, OpenVSwitch> updatedOpenVSwitchRows = new HashMap<>();
92 UUID uuid = mock(UUID.class);
93 OpenVSwitch ovs = mock(OpenVSwitch.class);
94 updatedOpenVSwitchRows.put(uuid, ovs);
95 when(TyperUtils.extractRowsUpdated(eq(OpenVSwitch.class), any(TableUpdates.class), any(DatabaseSchema.class)))
96 .thenReturn(updatedOpenVSwitchRows);
97 Map<UUID, OpenVSwitch> deletedOpenVSwitchRows = new HashMap<>();
98 OpenVSwitch ovs1 = mock(OpenVSwitch.class);
100 deletedOpenVSwitchRows.put(uuid, ovs1);
101 when(TyperUtils.extractRowsOld(eq(OpenVSwitch.class), any(TableUpdates.class), any(DatabaseSchema.class)))
102 .thenReturn(deletedOpenVSwitchRows);
104 //mock getUpdates() and getDbSchema()
105 when(openVSwitchUpdateCommand.getUpdates()).thenReturn(updates);
106 when(openVSwitchUpdateCommand.getDbSchema()).thenReturn(dbSchema);
108 //Test getInstanceIdentifier(): case 1:
109 // ovs.getExternalIdsColumn().getData().containsKey(SouthboundConstants.IID_EXTERNAL_ID_KEY)) == true
110 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
111 Map<String, String> map = new HashMap<>();
112 map.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, "iidString");
113 when(ovs.getExternalIdsColumn()).thenReturn(column);
114 when(column.getData()).thenReturn(map);
115 InstanceIdentifier<Node> iid = mock(InstanceIdentifier.class);
116 PowerMockito.mockStatic(SouthboundUtil.class);
117 when((InstanceIdentifier<Node>) SouthboundUtil.deserializeInstanceIdentifier(anyString())).thenReturn(iid);
118 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "getOvsdbConnectionInstance"));
119 OvsdbConnectionInstance ovsdbConnectionInstance = mock(OvsdbConnectionInstance.class);
120 when(openVSwitchUpdateCommand.getOvsdbConnectionInstance()).thenReturn(ovsdbConnectionInstance);
121 doNothing().when(ovsdbConnectionInstance).setInstanceIdentifier(any(InstanceIdentifier.class));
122 when(ovsdbConnectionInstance.getInstanceIdentifier()).thenReturn(iid);
124 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
125 PowerMockito.whenNew(OvsdbNodeAugmentationBuilder.class).withNoArguments().thenReturn(ovsdbNodeBuilder);
127 //suppress the setter methods of the class
128 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setVersion",
129 OvsdbNodeAugmentationBuilder.class, OpenVSwitch.class));
130 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setDataPathTypes",
131 OvsdbNodeAugmentationBuilder.class, OpenVSwitch.class));
132 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setInterfaceTypes",
133 OvsdbNodeAugmentationBuilder.class, OpenVSwitch.class));
134 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setExternalIds",
135 ReadWriteTransaction.class, OvsdbNodeAugmentationBuilder.class, OpenVSwitch.class, OpenVSwitch.class));
136 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setOtherConfig",
137 ReadWriteTransaction.class, OvsdbNodeAugmentationBuilder.class, OpenVSwitch.class, OpenVSwitch.class));
138 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "getConnectionInfo"));
139 when(openVSwitchUpdateCommand.getConnectionInfo()).thenReturn(mock(ConnectionInfo.class));
140 when(ovsdbNodeBuilder.setConnectionInfo(any(ConnectionInfo.class))).thenReturn(ovsdbNodeBuilder);
142 NodeBuilder nodeBuilder = mock(NodeBuilder.class);
143 PowerMockito.whenNew(NodeBuilder.class).withNoArguments().thenReturn(nodeBuilder);
145 //suppress getNodeId()
146 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "getNodeId", OpenVSwitch.class));
147 when(nodeBuilder.setNodeId(any(NodeId.class))).thenReturn(nodeBuilder);
148 when(ovsdbNodeBuilder.build()).thenReturn(mock(OvsdbNodeAugmentation.class));
149 when(nodeBuilder.addAugmentation(eq(OvsdbNodeAugmentation.class), any(OvsdbNodeAugmentation.class)))
150 .thenReturn(nodeBuilder);
151 when(nodeBuilder.build()).thenReturn(mock(Node.class));
152 ReadWriteTransaction transaction = mock(ReadWriteTransaction.class);
153 doNothing().when(transaction).merge(any(LogicalDatastoreType.class), any(InstanceIdentifier.class),
156 openVSwitchUpdateCommand.execute(transaction);
157 verify(openVSwitchUpdateCommand, times(2)).getUpdates();
158 verify(openVSwitchUpdateCommand, times(2)).getDbSchema();
160 //Test getInstanceIdentifier(): case 2: ovs.getExternalIdsColumn() is null
161 when(ovs.getExternalIdsColumn()).thenReturn(null);
162 when(ovs.getUuid()).thenReturn(uuid);
163 openVSwitchUpdateCommand.execute(transaction);
164 verify(openVSwitchUpdateCommand, times(4)).getUpdates();
165 verify(openVSwitchUpdateCommand, times(4)).getDbSchema();
169 @SuppressWarnings("unchecked")
170 public void testSetOtherConfig() throws Exception {
171 OpenVSwitch oldEntry = mock(OpenVSwitch.class);
172 OpenVSwitch openVSwitch = mock(OpenVSwitch.class);
174 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
175 when(openVSwitch.getOtherConfigColumn()).thenReturn(column);
176 Map<String, String> map = new HashMap<>();
177 when(column.getData()).thenReturn(map);
178 when(oldEntry.getOtherConfigColumn()).thenReturn(column);
179 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "removeOldConfigs",
180 ReadWriteTransaction.class, Map.class, OpenVSwitch.class));
181 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setNewOtherConfigs",
182 OvsdbNodeAugmentationBuilder.class, Map.class));
184 ReadWriteTransaction transaction = mock(ReadWriteTransaction.class);
185 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
186 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setOtherConfig", transaction, ovsdbNodeBuilder, oldEntry,
188 verify(openVSwitch, times(2)).getOtherConfigColumn();
189 verify(oldEntry, times(2)).getOtherConfigColumn();
190 PowerMockito.verifyPrivate(openVSwitchUpdateCommand).invoke("removeOldConfigs", any(ReadWriteTransaction.class),
191 any(Map.class), any(OpenVSwitch.class));
195 public void testRemoveOldConfigs() throws Exception {
196 ReadWriteTransaction transaction = mock(ReadWriteTransaction.class);
197 Map<String, String> oldOtherConfigs = new HashMap<>();
198 oldOtherConfigs.put("OpenvswitchOtherConfigsKey", "OpenvswitchOtherConfigsValue");
199 doNothing().when(transaction).delete(any(LogicalDatastoreType.class), any(KeyedInstanceIdentifier.class));
201 //suppress getNodeId()
202 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "getNodeId", OpenVSwitch.class));
203 PowerMockito.whenNew(NodeKey.class).withAnyArguments().thenReturn(mock(NodeKey.class));
204 OpenVSwitch ovs = mock(OpenVSwitch.class);
205 Whitebox.invokeMethod(openVSwitchUpdateCommand, "removeOldConfigs", transaction, oldOtherConfigs, ovs);
206 verify(transaction).delete(any(LogicalDatastoreType.class), any(KeyedInstanceIdentifier.class));
210 @SuppressWarnings("unchecked")
211 public void testSetNewOtherConfigs() throws Exception {
212 Map<String, String> otherConfigs = new HashMap<>();
213 otherConfigs.put("otherConfigKey", "otherConfigValue");
215 OpenvswitchOtherConfigsBuilder openvswitchOtherConfigsBuilder = mock(OpenvswitchOtherConfigsBuilder.class);
216 PowerMockito.whenNew(OpenvswitchOtherConfigsBuilder.class).withNoArguments()
217 .thenReturn(openvswitchOtherConfigsBuilder);
218 when(openvswitchOtherConfigsBuilder.setOtherConfigKey(anyString())).thenReturn(openvswitchOtherConfigsBuilder);
219 when(openvswitchOtherConfigsBuilder.setOtherConfigValue(anyString()))
220 .thenReturn(openvswitchOtherConfigsBuilder);
221 when(openvswitchOtherConfigsBuilder.build()).thenReturn(mock(OpenvswitchOtherConfigs.class));
222 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
223 when(ovsdbNodeBuilder.setOpenvswitchOtherConfigs(any(List.class))).thenReturn(ovsdbNodeBuilder);
225 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setNewOtherConfigs", ovsdbNodeBuilder, otherConfigs);
226 verify(openvswitchOtherConfigsBuilder).setOtherConfigKey(anyString());
227 verify(openvswitchOtherConfigsBuilder).setOtherConfigValue(anyString());
228 verify(ovsdbNodeBuilder).setOpenvswitchOtherConfigs(any(List.class));
232 @SuppressWarnings("unchecked")
233 public void testSetExternalIds() throws Exception {
234 OpenVSwitch oldEntry = mock(OpenVSwitch.class);
235 OpenVSwitch openVSwitch = mock(OpenVSwitch.class);
237 Column<GenericTableSchema, Map<String, String>> column = mock(Column.class);
238 when(openVSwitch.getExternalIdsColumn()).thenReturn(column);
239 Map<String, String> map = new HashMap<>();
240 when(column.getData()).thenReturn(map);
241 when(oldEntry.getExternalIdsColumn()).thenReturn(column);
242 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "removeExternalIds",
243 ReadWriteTransaction.class, Map.class, OpenVSwitch.class));
244 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "setNewExternalIds",
245 OvsdbNodeAugmentationBuilder.class, Map.class));
247 ReadWriteTransaction transaction = mock(ReadWriteTransaction.class);
248 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
249 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setExternalIds", transaction, ovsdbNodeBuilder, oldEntry,
251 verify(openVSwitch, times(2)).getExternalIdsColumn();
252 verify(oldEntry, times(2)).getExternalIdsColumn();
253 PowerMockito.verifyPrivate(openVSwitchUpdateCommand).invoke("removeExternalIds",
254 any(ReadWriteTransaction.class), any(Map.class), any(OpenVSwitch.class));
258 public void testRemoveExternalIds() throws Exception {
259 ReadWriteTransaction transaction = mock(ReadWriteTransaction.class);
260 Map<String, String> oldExternalIds = new HashMap<>();
261 oldExternalIds.put("OpenvswitchExternalIdKey", "OpenvswitchExternalIdValue");
262 doNothing().when(transaction).delete(any(LogicalDatastoreType.class), any(KeyedInstanceIdentifier.class));
264 //suppress getNodeId()
265 MemberModifier.suppress(MemberMatcher.method(OpenVSwitchUpdateCommand.class, "getNodeId", OpenVSwitch.class));
266 PowerMockito.whenNew(NodeKey.class).withAnyArguments().thenReturn(mock(NodeKey.class));
267 OpenVSwitch ovs = mock(OpenVSwitch.class);
268 Whitebox.invokeMethod(openVSwitchUpdateCommand, "removeExternalIds", transaction, oldExternalIds, ovs);
269 verify(transaction).delete(any(LogicalDatastoreType.class), any(KeyedInstanceIdentifier.class));
272 @SuppressWarnings("unchecked")
274 public void testSetNewExternalIds() throws Exception {
275 Map<String, String> externalIds = new HashMap<>();
276 externalIds.put("externalIdsKey", "externalIdsValue");
278 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
279 OpenvswitchExternalIdsBuilder ovsExternalIdsBuilder = mock(OpenvswitchExternalIdsBuilder.class);
280 PowerMockito.whenNew(OpenvswitchExternalIdsBuilder.class).withNoArguments().thenReturn(ovsExternalIdsBuilder);
281 when(ovsExternalIdsBuilder.setExternalIdKey(anyString())).thenReturn(ovsExternalIdsBuilder);
282 when(ovsExternalIdsBuilder.setExternalIdValue(anyString())).thenReturn(ovsExternalIdsBuilder);
283 when(ovsExternalIdsBuilder.build()).thenReturn(mock(OpenvswitchExternalIds.class));
284 when(ovsdbNodeBuilder.setOpenvswitchExternalIds(any(List.class))).thenReturn(ovsdbNodeBuilder);
286 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setNewExternalIds", ovsdbNodeBuilder, externalIds);
287 verify(ovsExternalIdsBuilder).setExternalIdKey(anyString());
288 verify(ovsExternalIdsBuilder).setExternalIdValue(anyString());
289 verify(ovsdbNodeBuilder).setOpenvswitchExternalIds(any(List.class));
293 @SuppressWarnings("unchecked")
294 public void testSetInterfaceTypes() throws Exception {
295 OpenVSwitch openVSwitch = mock(OpenVSwitch.class);
297 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
298 when(openVSwitch.getIfaceTypesColumn()).thenReturn(column );
299 Set<String> set = new HashSet<>();
302 set.add("dpdkvhostuser");
306 set.add("ipsec_gre");
313 when(column.getData()).thenReturn(set);
314 PowerMockito.mockStatic(SouthboundMapper.class);
315 when(SouthboundMapper.createInterfaceType(anyString()))
316 .thenAnswer(new Answer<Class<? extends InterfaceTypeBase>>() {
317 public Class<? extends InterfaceTypeBase> answer(InvocationOnMock invocation) throws Exception {
318 return InterfaceTypeInternal.class;
322 InterfaceTypeEntry ifEntry = mock(InterfaceTypeEntry.class);
323 InterfaceTypeEntryBuilder interfaceTypeEntryBldr = mock(InterfaceTypeEntryBuilder.class);
324 PowerMockito.whenNew(InterfaceTypeEntryBuilder.class).withNoArguments().thenReturn(interfaceTypeEntryBldr);
325 when(interfaceTypeEntryBldr.setInterfaceType(InterfaceTypeInternal.class)).thenReturn(interfaceTypeEntryBldr);
326 when(interfaceTypeEntryBldr.build()).thenReturn(ifEntry);
328 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
329 when(ovsdbNodeBuilder.setInterfaceTypeEntry(any(List.class))).thenReturn(ovsdbNodeBuilder);
330 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setInterfaceTypes", ovsdbNodeBuilder, openVSwitch);
331 verify(openVSwitch).getIfaceTypesColumn();
332 verify(interfaceTypeEntryBldr,times(13)).setInterfaceType(InterfaceTypeInternal.class);
336 @SuppressWarnings("unchecked")
337 public void testSetDataPathTypes() throws Exception {
338 OpenVSwitch openVSwitch = mock(OpenVSwitch.class);
339 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
340 when(openVSwitch.getDatapathTypesColumn()).thenReturn(column );
341 Set<String> set = new HashSet<>();
344 when(column.getData()).thenReturn(set);
345 PowerMockito.mockStatic(SouthboundMapper.class);
346 when(SouthboundMapper.createDatapathType(anyString()))
347 .thenAnswer(new Answer<Class<? extends DatapathTypeBase>>() {
348 public Class<? extends DatapathTypeBase> answer(InvocationOnMock invocation) throws Exception {
349 return DatapathTypeSystem.class;
352 DatapathTypeEntry dpEntry = mock(DatapathTypeEntry.class);
353 DatapathTypeEntryBuilder datapathTypeEntryBuilder = mock(DatapathTypeEntryBuilder.class);
354 PowerMockito.whenNew(DatapathTypeEntryBuilder.class).withNoArguments().thenReturn(datapathTypeEntryBuilder);
355 when(datapathTypeEntryBuilder.setDatapathType(DatapathTypeSystem.class)).thenReturn(datapathTypeEntryBuilder);
356 when(datapathTypeEntryBuilder.build()).thenReturn(dpEntry);
358 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
359 when(ovsdbNodeBuilder.setDatapathTypeEntry(any(List.class))).thenReturn(ovsdbNodeBuilder);
360 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setDataPathTypes", ovsdbNodeBuilder, openVSwitch);
361 verify(openVSwitch).getDatapathTypesColumn();
362 verify(datapathTypeEntryBuilder,times(2)).setDatapathType(DatapathTypeSystem.class);
366 @SuppressWarnings("unchecked")
367 public void testSetVersion() throws Exception {
368 OpenVSwitch openVSwitch = mock(OpenVSwitch.class);
369 Column<GenericTableSchema, Set<String>> column = mock(Column.class);
370 when(openVSwitch.getOvsVersionColumn()).thenReturn(column);
371 Set<String> set = new HashSet<>();
373 when(column.getData()).thenReturn(set);
374 OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = mock(OvsdbNodeAugmentationBuilder.class);
375 when(ovsdbNodeBuilder.setOvsVersion(anyString())).thenReturn(ovsdbNodeBuilder);
377 Whitebox.invokeMethod(openVSwitchUpdateCommand, "setVersion", ovsdbNodeBuilder, openVSwitch);
378 verify(ovsdbNodeBuilder).setOvsVersion(anyString());
379 verify(openVSwitch).getOvsVersionColumn();