import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import static org.powermock.api.support.membermodification.MemberMatcher.field;
-import static org.powermock.api.support.membermodification.MemberModifier.suppress;
+import static org.powermock.reflect.Whitebox.getField;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.ArrayList;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.ovsdb.lib.EchoServiceCallbackFilters;
+import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.ovsdb.lib.LockAquisitionCallback;
import org.opendaylight.ovsdb.lib.LockStolenCallback;
import org.opendaylight.ovsdb.lib.MonitorCallBack;
import org.opendaylight.ovsdb.lib.MonitorHandle;
import org.opendaylight.ovsdb.lib.OvsdbClient;
import org.opendaylight.ovsdb.lib.OvsdbConnectionInfo;
-import org.opendaylight.ovsdb.lib.message.MonitorRequest;
-import org.opendaylight.ovsdb.lib.message.MonitorRequestBuilder;
-import org.opendaylight.ovsdb.lib.message.MonitorSelect;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.operations.OperationResult;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
import org.opendaylight.ovsdb.southbound.ovsdb.transact.BridgeOperationalState;
+import org.opendaylight.ovsdb.southbound.ovsdb.transact.DataChangeEvent;
import org.opendaylight.ovsdb.southbound.ovsdb.transact.TransactCommand;
import org.opendaylight.ovsdb.southbound.ovsdb.transact.TransactInvoker;
import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvoker;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.api.support.membermodification.MemberMatcher;
-import org.powermock.api.support.membermodification.MemberModifier;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({OvsdbConnectionInstance.class, MonitorRequestBuilder.class})
+@RunWith(MockitoJUnitRunner.class)
public class OvsdbConnectionInstanceTest {
@Mock private OvsdbConnectionInstance ovsdbConnectionInstance;
@Before
public void setUp() throws Exception {
- ovsdbConnectionInstance = PowerMockito.mock(OvsdbConnectionInstance.class, Mockito.CALLS_REAL_METHODS);
- field(OvsdbConnectionInstance.class, "txInvoker").set(ovsdbConnectionInstance, txInvoker);
- field(OvsdbConnectionInstance.class, "connectionInfo").set(ovsdbConnectionInstance, key);
- field(OvsdbConnectionInstance.class, "instanceIdentifier").set(ovsdbConnectionInstance, instanceIdentifier);
- field(OvsdbConnectionInstance.class, "hasDeviceOwnership").set(ovsdbConnectionInstance, false);
+ ovsdbConnectionInstance = mock(OvsdbConnectionInstance.class, Mockito.CALLS_REAL_METHODS);
+ getField(OvsdbConnectionInstance.class, "txInvoker").set(ovsdbConnectionInstance, txInvoker);
+ getField(OvsdbConnectionInstance.class, "connectionInfo").set(ovsdbConnectionInstance, key);
+ getField(OvsdbConnectionInstance.class, "instanceIdentifier").set(ovsdbConnectionInstance, instanceIdentifier);
+ getField(OvsdbConnectionInstance.class, "hasDeviceOwnership").set(ovsdbConnectionInstance, false);
}
@Test
TransactInvoker transactInvoker2 = mock(TransactInvoker.class);
transactInvokers.put(mock(DatabaseSchema.class), transactInvoker1);
transactInvokers.put(mock(DatabaseSchema.class), transactInvoker2);
- field(OvsdbConnectionInstance.class, "transactInvokers").set(ovsdbConnectionInstance , transactInvokers);
+ getField(OvsdbConnectionInstance.class, "transactInvokers").set(ovsdbConnectionInstance , transactInvokers);
TransactCommand command = mock(TransactCommand.class);
- ovsdbConnectionInstance.transact(command, mock(BridgeOperationalState.class), mock(AsyncDataChangeEvent.class));
+ ovsdbConnectionInstance.transact(command, mock(BridgeOperationalState.class), mock(DataChangeEvent.class),
+ mock(InstanceIdentifierCodec.class));
verify(transactInvoker1).invoke(any(TransactCommand.class), any(BridgeOperationalState.class),
- any(AsyncDataChangeEvent.class));
+ any(DataChangeEvent.class), any(InstanceIdentifierCodec.class));
verify(transactInvoker2).invoke(any(TransactCommand.class), any(BridgeOperationalState.class),
- any(AsyncDataChangeEvent.class));
+ any(DataChangeEvent.class), any(InstanceIdentifierCodec.class));
}
@Test
@SuppressWarnings("unchecked")
public void testRegisterCallbacks() throws Exception {
+ InstanceIdentifierCodec instanceIdentifierCodec = mock(InstanceIdentifierCodec.class);
+
// callback not null case
- MemberModifier.field(OvsdbConnectionInstance.class, "callback").set(ovsdbConnectionInstance , callback);
- ovsdbConnectionInstance.registerCallbacks();
+ getField(OvsdbConnectionInstance.class, "callback").set(ovsdbConnectionInstance , callback);
+ ovsdbConnectionInstance.registerCallbacks(instanceIdentifierCodec);
verify(ovsdbConnectionInstance, times(0)).getDatabases();
// callback null case
- MemberModifier.field(OvsdbConnectionInstance.class, "callback").set(ovsdbConnectionInstance , null);
+ getField(OvsdbConnectionInstance.class, "callback").set(ovsdbConnectionInstance , null);
ListenableFuture<List<String>> listenableFuture = mock(ListenableFuture.class);
List<String> databases = new ArrayList<>();
databases.add("Open_vSwitch");
doReturn(listenableDbSchema).when(ovsdbConnectionInstance).getSchema(anyString());
when(listenableDbSchema.get()).thenReturn(dbSchema);
- suppress(MemberMatcher.method(OvsdbConnectionInstance.class, "monitorAllTables", String.class,
- DatabaseSchema.class));
- ovsdbConnectionInstance.registerCallbacks();
- PowerMockito.verifyPrivate(ovsdbConnectionInstance, times(1)).invoke("monitorAllTables", anyString(),
- any(DatabaseSchema.class));
+ doNothing().when(ovsdbConnectionInstance).monitorTables(anyString(), any(DatabaseSchema.class));
+ ovsdbConnectionInstance.registerCallbacks(instanceIdentifierCodec);
+ verify(ovsdbConnectionInstance, times(1)).monitorTables(anyString(), any(DatabaseSchema.class));
}
@Test
public void testCreateTransactInvokers() throws Exception {
// transactInvokers not null case
transactInvokers = new HashMap();
- field(OvsdbConnectionInstance.class, "transactInvokers").set(ovsdbConnectionInstance , transactInvokers);
+ getField(OvsdbConnectionInstance.class, "transactInvokers").set(ovsdbConnectionInstance , transactInvokers);
ovsdbConnectionInstance.createTransactInvokers();
verify(ovsdbConnectionInstance, times(0)).getSchema(anyString());
// transactInvokers null case
- MemberModifier.field(OvsdbConnectionInstance.class, "transactInvokers").set(ovsdbConnectionInstance , null);
+ getField(OvsdbConnectionInstance.class, "transactInvokers").set(ovsdbConnectionInstance , null);
ListenableFuture<DatabaseSchema> listenableDbSchema = mock(ListenableFuture.class);
DatabaseSchema dbSchema = mock(DatabaseSchema.class);
@SuppressWarnings("unchecked")
public void testMonitorAllTables() throws Exception {
Set<String> tables = new HashSet<>();
- tables.add("tableName1");
- tables.add("tableName2");
+ tables.add("Open_vSwitch");
+ tables.add("Port");
DatabaseSchema dbSchema = mock(DatabaseSchema.class);
when(dbSchema.getName()).thenReturn(SouthboundConstants.OPEN_V_SWITCH);
when(dbSchema.getTables()).thenReturn(tables);
Set<String> columns = new HashSet<>();
columns.add("columnName1");
columns.add("columnName2");
+ columns.add("_version");
+ columns.add("statistics");
when(tableSchema.getColumns()).thenReturn(columns);
- MonitorRequestBuilder<GenericTableSchema> monitorBuilder = mock(MonitorRequestBuilder.class);
- PowerMockito.mockStatic(MonitorRequestBuilder.class);
- when(MonitorRequestBuilder.builder(any(GenericTableSchema.class))).thenReturn(monitorBuilder);
- when(monitorBuilder.addColumn(anyString())).thenReturn(monitorBuilder);
- MonitorRequest monitorReq = mock(MonitorRequest.class);
- when(monitorBuilder.with(any(MonitorSelect.class))).thenReturn(monitorBuilder);
- when(monitorBuilder.build()).thenReturn(monitorReq);
-
- suppress(MemberMatcher.method(OvsdbConnectionInstance.class, "monitor", DatabaseSchema.class, List.class,
- MonitorCallBack.class));
+
TableUpdates tableUpdates = mock(TableUpdates.class);
- when(ovsdbConnectionInstance.monitor(any(DatabaseSchema.class), any(List.class), any(MonitorCallBack.class)))
- .thenReturn(tableUpdates);
- MemberModifier.field(OvsdbConnectionInstance.class, "callback").set(ovsdbConnectionInstance, callback);
+ doReturn(tableUpdates).when(ovsdbConnectionInstance).monitor(any(DatabaseSchema.class), any(List.class),
+ any(MonitorCallBack.class));
+ getField(OvsdbConnectionInstance.class, "callback").set(ovsdbConnectionInstance, callback);
doNothing().when(callback).update(any(TableUpdates.class), any(DatabaseSchema.class));
- Whitebox.invokeMethod(ovsdbConnectionInstance, "monitorAllTables", "database", dbSchema);
- PowerMockito.verifyPrivate(ovsdbConnectionInstance, times(1)).invoke("monitorAllTables", anyString(),
- any(DatabaseSchema.class));
-
- verify(monitorBuilder, times(4)).addColumn(anyString());
+ Whitebox.invokeMethod(ovsdbConnectionInstance, "monitorTables", "database", dbSchema);
+ verify(ovsdbConnectionInstance, times(1)).monitorTables(anyString(), any(DatabaseSchema.class));
}
@SuppressWarnings({ "unchecked" })
@Test
public void testOvsdbConnectionInstance() throws Exception {
- MemberModifier.field(OvsdbConnectionInstance.class, "client").set(ovsdbConnectionInstance, client);
+ getField(OvsdbConnectionInstance.class, "client").set(ovsdbConnectionInstance, client);
// test getDatabases()
ListenableFuture<List<String>> listenableFuture = mock(ListenableFuture.class);
ovsdbConnectionInstance.unLock(anyString()));
verify(client).unLock(anyString());
- // test startEchoService()
- EchoServiceCallbackFilters echoServiceCallbackFilters = mock(EchoServiceCallbackFilters.class);
- doNothing().when(client).startEchoService(any(EchoServiceCallbackFilters.class));
- ovsdbConnectionInstance.startEchoService(echoServiceCallbackFilters);
- verify(client).startEchoService(any(EchoServiceCallbackFilters.class));
-
- // test stopEchoService()
- doNothing().when(client).stopEchoService();
- ovsdbConnectionInstance.stopEchoService();
- verify(client).stopEchoService();
-
// test isActive()
when(client.isActive()).thenReturn(true);
assertEquals("Error, does not match isActive()", true, ovsdbConnectionInstance.isActive());
ovsdbConnectionInstance.getInstanceIdentifier());
// test getNodeId()
- NodeKey nodeKey = mock(NodeKey.class);
NodeId nodeId = mock(NodeId.class);
- MemberModifier.suppress(MemberMatcher.method(OvsdbConnectionInstance.class, "getNodeKey"));
+ NodeKey nodeKey = new NodeKey(nodeId);
+ doReturn(nodeKey).when(ovsdbConnectionInstance).getNodeKey();
when(ovsdbConnectionInstance.getNodeKey()).thenReturn(nodeKey);
- when(nodeKey.getNodeId()).thenReturn(nodeId);
assertEquals("Error, incorrect NodeId object", nodeId, ovsdbConnectionInstance.getNodeId());
// test setInstanceIdentifier()
Whitebox.getInternalState(ovsdbConnectionInstance, "instanceIdentifier"));
// test monitor()
- suppress(MemberMatcher.method(OvsdbConnectionInstance.class, "monitor", DatabaseSchema.class, List.class,
- MonitorHandle.class, MonitorCallBack.class));
when(ovsdbConnectionInstance.monitor(any(DatabaseSchema.class), any(List.class), any(MonitorHandle.class),
any(MonitorCallBack.class))).thenReturn(null);
assertNull(ovsdbConnectionInstance.monitor(any(DatabaseSchema.class), any(List.class), any(MonitorHandle.class),