import akka.actor.AddressFromURIString;
import akka.cluster.Cluster;
import akka.testkit.javadsl.TestKit;
-import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.Uninterruptibles;
import com.typesafe.config.ConfigFactory;
-import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import org.opendaylight.mdsal.common.api.ReadFailedException;
import org.opendaylight.mdsal.common.api.TransactionChainClosedException;
import org.opendaylight.mdsal.common.api.TransactionChainListener;
-import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
.shardHeartbeatIntervalInMillis(100);
@Before
- public void setUp() throws IOException {
+ public void setUp() {
InMemorySnapshotStore.clear();
InMemoryJournal.clear();
system = ActorSystem.create("cluster-test", ConfigFactory.load().getConfig("Member1"));
}
@After
- public void tearDown() throws IOException {
+ public void tearDown() {
TestKit.shutdownActorSystem(system, Boolean.TRUE);
system = null;
}
readWriteTx.write(nodePath, nodeToWrite);
// 3. Read the data from Tx
- final Boolean exists = readWriteTx.exists(nodePath).checkedGet(5, TimeUnit.SECONDS);
+ final Boolean exists = readWriteTx.exists(nodePath).get(5, TimeUnit.SECONDS);
assertEquals("exists", true, exists);
Optional<NormalizedNode<?, ?>> optional = readWriteTx.read(nodePath).get(5, TimeUnit.SECONDS);
final YangInstanceIdentifier personPath = PeopleModel.newPersonPath("jack");
readWriteTx.write(personPath, person);
- final Boolean exists = readWriteTx.exists(carPath).checkedGet(5, TimeUnit.SECONDS);
+ final Boolean exists = readWriteTx.exists(carPath).get(5, TimeUnit.SECONDS);
assertEquals("exists", true, exists);
Optional<NormalizedNode<?, ?>> optional = readWriteTx.read(carPath).get(5, TimeUnit.SECONDS);
assertNotNull("newReadWriteTransaction returned null", readWriteTx);
// Do some reads on the Tx on a separate thread.
- final AtomicReference<CheckedFuture<Boolean, ReadFailedException>> txExistsFuture =
- new AtomicReference<>();
- final AtomicReference<CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException>>
+ final AtomicReference<FluentFuture<Boolean>> txExistsFuture = new AtomicReference<>();
+ final AtomicReference<FluentFuture<Optional<NormalizedNode<?, ?>>>>
txReadFuture = new AtomicReference<>();
final AtomicReference<Exception> caughtEx = new AtomicReference<>();
final CountDownLatch txReadsDone = new CountDownLatch(1);
blockRecoveryLatch.countDown();
// Wait for the reads to complete and verify.
- assertEquals("exists", true, txExistsFuture.get().checkedGet(5, TimeUnit.SECONDS));
- assertEquals("read", true, txReadFuture.get().checkedGet(5, TimeUnit.SECONDS).isPresent());
+ assertEquals("exists", true, txExistsFuture.get().get(5, TimeUnit.SECONDS));
+ assertEquals("read", true, txReadFuture.get().get(5, TimeUnit.SECONDS).isPresent());
readWriteTx.close();
}
assertNotNull("newReadWriteTransaction returned null", readWriteTx);
// Do a read on the Tx on a separate thread.
- final AtomicReference<CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException>>
+ final AtomicReference<FluentFuture<Optional<NormalizedNode<?, ?>>>>
txReadFuture = new AtomicReference<>();
final AtomicReference<Exception> caughtEx = new AtomicReference<>();
final CountDownLatch txReadDone = new CountDownLatch(1);
// initialized, the Tx should
// have timed out and throw an appropriate exception cause.
try {
- txReadFuture.get().checkedGet(5, TimeUnit.SECONDS);
- fail("Expected NotInitializedException");
- } catch (final ReadFailedException e) {
+ txReadFuture.get().get(5, TimeUnit.SECONDS);
+ } catch (ExecutionException e) {
+ assertTrue("Expected ReadFailedException cause: " + e.getCause(),
+ e.getCause() instanceof ReadFailedException);
final Throwable root = Throwables.getRootCause(e);
Throwables.throwIfUnchecked(root);
throw new RuntimeException(root);
final TransactionChainListener listener = Mockito.mock(TransactionChainListener.class);
DOMTransactionChain txChain = broker.createTransactionChain(listener);
- final List<CheckedFuture<Void, TransactionCommitFailedException>> futures = new ArrayList<>();
+ final List<ListenableFuture<?>> futures = new ArrayList<>();
final DOMDataTreeWriteTransaction writeTx = txChain.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, CarsModel.BASE_PATH, CarsModel.emptyContainer());
writeTx.put(LogicalDatastoreType.CONFIGURATION, CarsModel.CAR_LIST_PATH, CarsModel.newCarMapNode());
- futures.add(writeTx.submit());
+ futures.add(writeTx.commit());
int numCars = 100;
for (int i = 0; i < numCars; i++) {
rwTx.merge(LogicalDatastoreType.CONFIGURATION, CarsModel.newCarPath("car" + i),
CarsModel.newCarEntry("car" + i, BigInteger.valueOf(20000)));
- futures.add(rwTx.submit());
+ futures.add(rwTx.commit());
}
- for (final CheckedFuture<Void, TransactionCommitFailedException> f : futures) {
- f.checkedGet();
+ for (final ListenableFuture<?> f : futures) {
+ f.get(5, TimeUnit.SECONDS);
}
final Optional<NormalizedNode<?, ?>> optional = txChain.newReadOnlyTransaction()
final DOMStoreThreePhaseCommitCohort cohort1 = writeTx.ready();
// Create read-only tx's and issue a read.
- CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readFuture1 = txChain
+ FluentFuture<Optional<NormalizedNode<?, ?>>> readFuture1 = txChain
.newReadOnlyTransaction().read(TestModel.TEST_PATH);
- CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readFuture2 = txChain
+ FluentFuture<Optional<NormalizedNode<?, ?>>> readFuture2 = txChain
.newReadOnlyTransaction().read(TestModel.TEST_PATH);
// Create another write tx and issue the write.
// Ensure the reads succeed.
- assertEquals("isPresent", true, readFuture1.checkedGet(5, TimeUnit.SECONDS).isPresent());
- assertEquals("isPresent", true, readFuture2.checkedGet(5, TimeUnit.SECONDS).isPresent());
+ assertEquals("isPresent", true, readFuture1.get(5, TimeUnit.SECONDS).isPresent());
+ assertEquals("isPresent", true, readFuture2.get(5, TimeUnit.SECONDS).isPresent());
// Ensure the writes succeed.
DOMStoreThreePhaseCommitCohort cohort2 = writeTx2.ready();
doCommit(cohort2);
assertEquals("isPresent", true, txChain.newReadOnlyTransaction().read(TestModel.OUTER_LIST_PATH)
- .checkedGet(5, TimeUnit.SECONDS).isPresent());
+ .get(5, TimeUnit.SECONDS).isPresent());
}
}
};
writeTx.merge(LogicalDatastoreType.CONFIGURATION, CarsModel.BASE_PATH, invalidData);
try {
- writeTx.submit().checkedGet(5, TimeUnit.SECONDS);
+ writeTx.commit().get(5, TimeUnit.SECONDS);
fail("Expected TransactionCommitFailedException");
- } catch (final TransactionCommitFailedException e) {
+ } catch (final ExecutionException e) {
// Expected
}
// succeeds b/c deep validation is not
// done for put for performance reasons.
try {
- writeTx.submit().checkedGet(5, TimeUnit.SECONDS);
+ writeTx.commit().get(5, TimeUnit.SECONDS);
fail("Expected TransactionCommitFailedException");
- } catch (final TransactionCommitFailedException e) {
+ } catch (final ExecutionException e) {
// Expected
}