Reduce use of powermockito
[ovsdb.git] / southbound / southbound-impl / src / test / java / org / opendaylight / ovsdb / southbound / OvsdbConnectionInstanceTest.java
index 16d2abde0bc84f29a24a6462c6e92c31d2655fa5..a286234e8cb8e3ece9c4d4874b24e537c4298bd6 100644 (file)
@@ -19,8 +19,7 @@ import static org.mockito.Mockito.mock;
 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;
@@ -34,23 +33,20 @@ import org.junit.Test;
 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;
@@ -59,15 +55,9 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 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;
@@ -81,11 +71,11 @@ public class OvsdbConnectionInstanceTest {
 
     @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
@@ -98,26 +88,29 @@ public class OvsdbConnectionInstanceTest {
         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");
@@ -130,11 +123,9 @@ public class OvsdbConnectionInstanceTest {
         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
@@ -142,12 +133,12 @@ public class OvsdbConnectionInstanceTest {
     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);
@@ -166,8 +157,8 @@ public class OvsdbConnectionInstanceTest {
     @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);
@@ -177,34 +168,24 @@ public class OvsdbConnectionInstanceTest {
         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);
@@ -268,17 +249,6 @@ public class OvsdbConnectionInstanceTest {
                 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());
@@ -316,11 +286,10 @@ public class OvsdbConnectionInstanceTest {
                 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()
@@ -329,8 +298,6 @@ public class OvsdbConnectionInstanceTest {
                 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),