<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-api-mockito</artifactId>
- <version>1.6.4</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>3.21.0-GA</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-module-junit4</artifactId>
- <version>1.6.4</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-api-support</artifactId>
- <version>1.6.4</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-reflect</artifactId>
- <version>1.6.4</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-core</artifactId>
- <version>1.6.4</version>
<scope>test</scope>
</dependency>
</dependencies>
package org.opendaylight.ovsdb.hwvtepsouthbound;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
private final DataBroker dataBroker;
private final HwvtepConnectionManager hwvtepConnectionManager;
private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
- private final SettableFuture<Boolean> reconciliationFt = SettableFuture.create();
- private final AtomicBoolean firstUpdateTriggered = new AtomicBoolean(false);
+ @VisibleForTesting
+ final SettableFuture<Boolean> reconciliationFt = SettableFuture.create();
+ @VisibleForTesting
+ final AtomicBoolean firstUpdateTriggered = new AtomicBoolean(false);
private TransactionHistory controllerTxHistory;
private TransactionHistory deviceUpdateHistory;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL;
-import static org.powermock.api.support.membermodification.MemberMatcher.field;
-import static org.powermock.api.support.membermodification.MemberModifier.suppress;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.net.InetAddress;
import java.util.List;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.junit.After;
import org.junit.Before;
import org.mockito.ArgumentCaptor;
-import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.TransactionInvoker;
import org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.TransactionInvokerImpl;
import org.opendaylight.ovsdb.lib.OvsdbClient;
+import org.opendaylight.ovsdb.lib.OvsdbConnection;
import org.opendaylight.ovsdb.lib.OvsdbConnectionInfo;
import org.opendaylight.ovsdb.lib.operations.Delete;
import org.opendaylight.ovsdb.lib.operations.Insert;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.api.mockito.PowerMockito;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
deleteNode(CONFIGURATION);
}
- void setFinalStatic(Class cls, String fieldName, Object newValue) throws Exception {
+ static final void setFinalStatic(Class<?> cls, String fieldName, Object newValue) throws SecurityException,
+ ReflectiveOperationException {
Field[] fields = FieldUtils.getAllFields(cls);
for (Field field : fields) {
if (fieldName.equals(field.getName())) {
}
private void mockConnectionManager() throws IllegalAccessException {
- hwvtepConnectionManager = PowerMockito.mock(HwvtepConnectionManager.class, Mockito.CALLS_REAL_METHODS);
- field(HwvtepConnectionManager.class, "db").set(hwvtepConnectionManager, dataBroker);
- field(HwvtepConnectionManager.class, "txInvoker").set(hwvtepConnectionManager, transactionInvoker);
- field(HwvtepConnectionManager.class, "entityOwnershipService").set(hwvtepConnectionManager,
- entityOwnershipService);
- suppress(PowerMockito.method(HwvtepConnectionManager.class, "getConnectionInstance",
- HwvtepPhysicalSwitchAttributes.class));
- suppress(PowerMockito.method(HwvtepConnectionManager.class, "getConnectionInstanceFromNodeIid",
- InstanceIdentifier.class));
- doReturn(connectionInstance).when(
- hwvtepConnectionManager).getConnectionInstance(Mockito.any(HwvtepPhysicalSwitchAttributes.class));
- doReturn(connectionInstance).when(
- hwvtepConnectionManager).getConnectionInstance(Mockito.any(Node.class));
- doReturn(connectionInstance).when(
- hwvtepConnectionManager).getConnectionInstanceFromNodeIid(Mockito.any(InstanceIdentifier.class));
+ hwvtepConnectionManager = spy(new HwvtepConnectionManager(dataBroker, transactionInvoker,
+ entityOwnershipService, mock(OvsdbConnection.class)));
+ doReturn(connectionInstance).when(hwvtepConnectionManager).getConnectionInstance(
+ any(HwvtepPhysicalSwitchAttributes.class));
+ doReturn(connectionInstance).when(hwvtepConnectionManager).getConnectionInstance(any(Node.class));
+ doReturn(connectionInstance).when(hwvtepConnectionManager).getConnectionInstanceFromNodeIid(
+ any(InstanceIdentifier.class));
}
void mockConnectionInstance() throws IllegalAccessException {
ovsdbClient = mock(OvsdbClient.class);
doReturn(true).when(ovsdbClient).isActive();
doReturn(connectionInfo).when(ovsdbClient).getConnectionInfo();
+ doReturn(listenableDbSchema).when(ovsdbClient).getSchema(anyString());
transactionInvoker = new TransactionInvokerImpl(dataBroker);
- connectionInstance = PowerMockito.mock(HwvtepConnectionInstance.class, Mockito.CALLS_REAL_METHODS);
- field(HwvtepConnectionInstance.class, "instanceIdentifier").set(connectionInstance, nodeIid);
- field(HwvtepConnectionInstance.class, "txInvoker").set(connectionInstance, transactionInvoker);
- field(HwvtepConnectionInstance.class, "client").set(connectionInstance, ovsdbClient);
- SettableFuture<Boolean> reconciliationFt = SettableFuture.create();
- reconciliationFt.set(Boolean.TRUE);
- field(HwvtepConnectionInstance.class, "reconciliationFt").set(connectionInstance, reconciliationFt);
- field(HwvtepConnectionInstance.class, "firstUpdateTriggered").set(connectionInstance,
- new AtomicBoolean(Boolean.TRUE));
- doReturn(nodeIid).when(connectionInstance).getInstanceIdentifier();
- doReturn(listenableDbSchema).when(connectionInstance).getSchema(anyString());
- doReturn(dataBroker).when(connectionInstance).getDataBroker();
- doReturn(nodeIid).when(connectionInstance).getInstanceIdentifier();
- field(HwvtepConnectionInstance.class, "deviceInfo").set(connectionInstance,
- new HwvtepDeviceInfo(connectionInstance));
+ connectionInstance = new HwvtepConnectionInstance(null, null, ovsdbClient, nodeIid, transactionInvoker,
+ dataBroker);
+ connectionInstance.reconciliationFt.set(Boolean.TRUE);
+ connectionInstance.firstUpdateTriggered.set(true);
connectionInstance.setControllerTxHistory(new TransactionHistory(10000, 7500));
connectionInstance.setDeviceUpdateHistory(new TransactionHistory(10000, 7500));
connectionInstance.createTransactInvokers();
doReturn(where).when(delete).where(any());
Insert insert = mock(Insert.class);
doReturn(insert).when(insert).withId(any(String.class));
- Operations mockOp = PowerMockito.mock(Operations.class);
+ Operations mockOp = mock(Operations.class);
doReturn(insert).when(mockOp).insert(insertOpCapture.capture());
Update update = mock(Update.class);
doReturn(update).when(mockOp).update(insertOpCapture.capture());
doReturn(where).when(update).where(any());
doReturn(delete).when(mockOp).delete(any());
- Field opField = PowerMockito.field(Operations.class, "op");
try {
- opField.set(Operations.class, mockOp);
- } catch (IllegalAccessException e) {
+ setFinalStatic(Operations.class, "op", mockOp);
+ } catch (SecurityException | ReflectiveOperationException e) {
throw new AssertionError("Set of Operations.op field failed", e);
}
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependencyQueue;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependentJob;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.HwvtepOperationalState;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsRemoteUpdateCommand;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.UnMetDependencyGetter;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.operations.Operations;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
import org.opendaylight.yangtools.yang.binding.Identifiable;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HwvtepConnectionInstance.class, HwvtepConnectionManager.class, Operations.class,
- DependencyQueue.class})
+@RunWith(MockitoJUnitRunner.class)
public class DependencyQueueTest extends DataChangeListenerTestBase {
String[][] terminationPoints = new String[][]{
.child(LogicalSwitches.class, new LogicalSwitchesKey(new HwvtepNodeName("ls0")));
macIid = nodeIid.augmentation(HwvtepGlobalAugmentation.class)
.child(RemoteMcastMacs.class, new RemoteMcastMacsKey(mac.key()));
- setFinalStatic(DependencyQueue.class, "EXECUTOR_SERVICE", PowerMockito.mock(SameThreadScheduledExecutor.class,
+ setFinalStatic(DependencyQueue.class, "EXECUTOR_SERVICE", Mockito.mock(SameThreadScheduledExecutor.class,
Mockito.CALLS_REAL_METHODS));
}
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL;
import com.google.common.collect.Lists;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
import java.util.Iterator;
import java.util.List;
-import org.apache.commons.lang3.reflect.FieldUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependencyQueue;
import org.opendaylight.ovsdb.lib.operations.Operations;
import org.opendaylight.ovsdb.lib.schema.typed.TypedBaseTable;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Unit tests for the data-tree change listener.
*/
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HwvtepConnectionInstance.class, HwvtepConnectionManager.class, Operations.class})
+@RunWith(MockitoJUnitRunner.class)
public class HwvtepDataChangeListenerTest extends DataChangeListenerTestBase {
static Logger LOG = LoggerFactory.getLogger(HwvtepDataChangeListenerTest.class);
@Before
public void setupListener() throws Exception {
- setFinalStatic(DependencyQueue.class, "EXECUTOR_SERVICE", PowerMockito.mock(SameThreadScheduledExecutor.class,
+ setFinalStatic(DependencyQueue.class, "EXECUTOR_SERVICE", mock(SameThreadScheduledExecutor.class,
Mockito.CALLS_REAL_METHODS));
opDataChangeListener = new HwvtepOperationalDataChangeListener(dataBroker, hwvtepConnectionManager,
connectionInstance);
opDataChangeListener.close();
}
- @Override
- void setFinalStatic(Class cls, String fieldName, Object newValue) throws Exception {
- Field[] fields = FieldUtils.getAllFields(cls);
- for (Field field : fields) {
- if (fieldName.equals(field.getName())) {
- field.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- field.set(null, newValue);
- break;
- }
- }
- }
-
@Test
public <T extends DataObject> void testLogicalSwitchAdd() throws Exception {
addData(CONFIGURATION, LogicalSwitches.class, logicalSwitches);
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.HwvtepOperationalState;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.operations.Operations;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitchesKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HwvtepConnectionInstance.class, HwvtepConnectionManager.class, Operations.class})
+@RunWith(MockitoJUnitRunner.class)
public class HwvtepOperationalStateTest extends DataChangeListenerTestBase {
UUID uuid = new UUID("ls0");
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
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.modules.junit4.PowerMockRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@RunWith(PowerMockRunner.class)
+@RunWith(MockitoJUnitRunner.class)
public class TransactionInvokerImplTest extends AbstractConcurrentDataBrokerTest {
private static final Logger LOG = LoggerFactory.getLogger(DataChangeListenerTestBase.class);
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.HwvtepOperationalState;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsRemoteUpdateCommand;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.UnMetDependencyGetter;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.operations.Operations;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
import org.opendaylight.yangtools.yang.binding.Identifiable;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HwvtepConnectionInstance.class, HwvtepConnectionManager.class, Operations.class})
+@RunWith(MockitoJUnitRunner.class)
public class UnMetDependencyGetterTest extends DataChangeListenerTestBase {
UnMetDependencyGetter<RemoteMcastMacs> mcastMacDataValidator;