import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPoint;
import org.opendaylight.mdsal.binding.api.MountPointService;
import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPoint;
import org.opendaylight.mdsal.binding.api.MountPointService;
import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
private DeviceTransactionManagerImpl transactionManager;
private String defaultDeviceId = "device-id";
private LogicalDatastoreType defaultDatastore = LogicalDatastoreType.OPERATIONAL;
private DeviceTransactionManagerImpl transactionManager;
private String defaultDeviceId = "device-id";
private LogicalDatastoreType defaultDatastore = LogicalDatastoreType.OPERATIONAL;
private Network defaultData;
private long defaultTimeout = 1000;
private TimeUnit defaultTimeUnit = TimeUnit.MILLISECONDS;
private Network defaultData;
private long defaultTimeout = 1000;
private TimeUnit defaultTimeUnit = TimeUnit.MILLISECONDS;
- @Before
- public void before() {
- Mockito.when(mountPointServiceMock.getMountPoint(any())).thenReturn(Optional.of(mountPointMock));
- Mockito.when(mountPointMock.getService(any())).thenReturn(Optional.of(dataBrokerMock));
- Mockito.when(dataBrokerMock.newReadWriteTransaction()).thenReturn(rwTransactionMock);
- Mockito.when(rwTransactionMock.commit()).thenReturn(FluentFutures.immediateNullFluentFuture());
+ @BeforeEach
+ void before() {
+ when(mountPointServiceMock.getMountPoint(any())).thenReturn(Optional.of(mountPointMock));
+ when(mountPointMock.getService(any())).thenReturn(Optional.of(dataBrokerMock));
+ when(dataBrokerMock.newReadWriteTransaction()).thenReturn(rwTransactionMock);
+ lenient().when(rwTransactionMock.commit()).thenReturn(FluentFutures.immediateNullFluentFuture());
NetworkId networkId = new NetworkId("NETWORK1");
defaultData = new NetworkBuilder().setNetworkId(networkId).build();
this.transactionManager = new DeviceTransactionManagerImpl(mountPointServiceMock, 3000);
}
NetworkId networkId = new NetworkId("NETWORK1");
defaultData = new NetworkBuilder().setNetworkId(networkId).build();
this.transactionManager = new DeviceTransactionManagerImpl(mountPointServiceMock, 3000);
}
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
try {
Future<java.util.Optional<DeviceTransaction>> firstDeviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
try {
Future<java.util.Optional<DeviceTransaction>> firstDeviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
Future<java.util.Optional<DeviceTransaction>> secondDeviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
Future<java.util.Optional<DeviceTransaction>> secondDeviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
Future<java.util.Optional<DeviceTransaction>> thirdDeviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
Future<java.util.Optional<DeviceTransaction>> thirdDeviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
Future<java.util.Optional<DeviceTransaction>> anotherDeviceTxFuture =
transactionManager.getDeviceTransaction("another-id");
Future<java.util.Optional<DeviceTransaction>> anotherDeviceTxFuture =
transactionManager.getDeviceTransaction("another-id");
anotherDeviceTxFuture.get().get().commit(defaultTimeout, defaultTimeUnit);
firstDeviceTx.commit(defaultTimeout, defaultTimeUnit);
Thread.sleep(200);
anotherDeviceTxFuture.get().get().commit(defaultTimeout, defaultTimeUnit);
firstDeviceTx.commit(defaultTimeout, defaultTimeUnit);
Thread.sleep(200);
DeviceTransaction secondDeviceTx = secondDeviceTxFuture.get().get();
secondDeviceTx.put(defaultDatastore, defaultIid, defaultData);
DeviceTransaction secondDeviceTx = secondDeviceTxFuture.get().get();
secondDeviceTx.put(defaultDatastore, defaultIid, defaultData);
DeviceTransaction thirdDeviceTx = thirdDeviceTxFuture.get().get();
thirdDeviceTx.put(defaultDatastore, defaultIid, defaultData);
DeviceTransaction thirdDeviceTx = thirdDeviceTxFuture.get().get();
thirdDeviceTx.put(defaultDatastore, defaultIid, defaultData);
Mockito.verify(rwTransactionMock, Mockito.times(3)).put(defaultDatastore, defaultIid, defaultData);
Mockito.verify(rwTransactionMock, Mockito.times(4)).commit();
} catch (InterruptedException | ExecutionException e) {
Mockito.verify(rwTransactionMock, Mockito.times(3)).put(defaultDatastore, defaultIid, defaultData);
Mockito.verify(rwTransactionMock, Mockito.times(4)).commit();
} catch (InterruptedException | ExecutionException e) {
int numberOfTxs = 100;
List<Future<java.util.Optional<DeviceTransaction>>> deviceTransactionFutures = new LinkedList<>();
List<DeviceTransaction> deviceTransactions = new LinkedList<>();
int numberOfTxs = 100;
List<Future<java.util.Optional<DeviceTransaction>>> deviceTransactionFutures = new LinkedList<>();
List<DeviceTransaction> deviceTransactions = new LinkedList<>();
deviceTransactions.add(transactionManager.getDeviceTransaction(defaultDeviceId + " " + i).get().get());
}
} catch (InterruptedException | ExecutionException e) {
deviceTransactions.add(transactionManager.getDeviceTransaction(defaultDeviceId + " " + i).get().get());
}
} catch (InterruptedException | ExecutionException e) {
}
deviceTransactions.parallelStream()
.forEach(deviceTransaction -> deviceTransaction.commit(defaultTimeout, defaultTimeUnit));
deviceTransactions.parallelStream()
}
deviceTransactions.parallelStream()
.forEach(deviceTransaction -> deviceTransaction.commit(defaultTimeout, defaultTimeUnit));
deviceTransactions.parallelStream()
deviceTransactions.add(transactionManager.getDeviceTransaction(defaultDeviceId + " " + i).get().get());
}
} catch (InterruptedException | ExecutionException e) {
deviceTransactions.add(transactionManager.getDeviceTransaction(defaultDeviceId + " " + i).get().get());
}
} catch (InterruptedException | ExecutionException e) {
}
try {
Thread.sleep(transactionManager.getMaxDurationToSubmitTransaction() + 1000);
} catch (InterruptedException e) {
}
try {
Thread.sleep(transactionManager.getMaxDurationToSubmitTransaction() + 1000);
} catch (InterruptedException e) {
Future<java.util.Optional<DeviceTransaction>> deviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
try {
deviceTxFuture.get();
Thread.sleep(transactionManager.getMaxDurationToSubmitTransaction() + 1000);
} catch (InterruptedException | ExecutionException e) {
Future<java.util.Optional<DeviceTransaction>> deviceTxFuture =
transactionManager.getDeviceTransaction(defaultDeviceId);
try {
deviceTxFuture.get();
Thread.sleep(transactionManager.getMaxDurationToSubmitTransaction() + 1000);
} catch (InterruptedException | ExecutionException e) {
}
Mockito.verify(rwTransactionMock, Mockito.times(1)).cancel();
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
}
Mockito.verify(rwTransactionMock, Mockito.times(1)).cancel();
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
Mockito.when(dataBrokerMock.newReadWriteTransaction()).then(invocation -> {
Thread.sleep(transactionManager.getMaxDurationToSubmitTransaction() + 1000);
return rwTransactionMock;
Mockito.when(dataBrokerMock.newReadWriteTransaction()).then(invocation -> {
Thread.sleep(transactionManager.getMaxDurationToSubmitTransaction() + 1000);
return rwTransactionMock;
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
Mockito.when(dataBrokerMock.newReadWriteTransaction()).then(invocation -> {
Thread.sleep(3000);
return rwTransactionMock;
Mockito.when(dataBrokerMock.newReadWriteTransaction()).then(invocation -> {
Thread.sleep(3000);
return rwTransactionMock;
try {
deviceTxFuture.get(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException e) {
try {
deviceTxFuture.get(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException e) {
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {
try {
putAndSubmit(transactionManager, defaultDeviceId, defaultDatastore, defaultIid, defaultData);
} catch (InterruptedException | ExecutionException e) {