X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2FAbstractDOMBrokerWriteTransactionTest.java;h=d8b1c3bf3996df5ddce35bd0e4c67f0be387492a;hb=18991f44b807ab6f06fcec76216b7f70b900b0f4;hp=e77f6456dedc24a4a46ffb7353b7dc6e2d358b1a;hpb=62468daa9029368b321b6e1e18fa9cfa0ae994b4;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransactionTest.java index e77f6456de..d8b1c3bf39 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransactionTest.java @@ -6,15 +6,18 @@ */ package org.opendaylight.controller.cluster.databroker; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doThrow; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; import com.google.common.util.concurrent.FluentFuture; -import java.util.Collection; -import java.util.Collections; +import java.util.Map; import java.util.concurrent.ExecutionException; -import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -22,10 +25,15 @@ import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; +import org.opendaylight.mdsal.common.api.TransactionDatastoreMismatchException; +import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionFactory; import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction; @RunWith(MockitoJUnitRunner.StrictStubs.class) public class AbstractDOMBrokerWriteTransactionTest { + + @Mock + private DOMStoreTransactionFactory txFactory; @Mock private AbstractDOMTransactionFactory abstractDOMTransactionFactory; @Mock @@ -35,36 +43,36 @@ public class AbstractDOMBrokerWriteTransactionTest { extends AbstractDOMBrokerWriteTransaction { AbstractDOMBrokerWriteTransactionTestImpl() { - super(new Object(), Collections.emptyMap(), abstractDOMTransactionFactory); + this(Map.of(CONFIGURATION, txFactory)); + } + + AbstractDOMBrokerWriteTransactionTestImpl(Map txFactoryMap) { + super(new Object(), txFactoryMap, abstractDOMTransactionFactory); } @Override protected DOMStoreWriteTransaction createTransaction(final LogicalDatastoreType key) { - return null; + return domStoreWriteTransaction; } @Override - protected Collection getSubtransactions() { - return Collections.singletonList(domStoreWriteTransaction); + protected DOMStoreWriteTransaction getSubtransaction() { + return domStoreWriteTransaction; } } @Test - public void readyRuntimeExceptionAndCancel() throws InterruptedException { + public void readyRuntimeExceptionAndCancel() { RuntimeException thrown = new RuntimeException(); doThrow(thrown).when(domStoreWriteTransaction).ready(); AbstractDOMBrokerWriteTransactionTestImpl abstractDOMBrokerWriteTransactionTestImpl = new AbstractDOMBrokerWriteTransactionTestImpl(); FluentFuture submitFuture = abstractDOMBrokerWriteTransactionTestImpl.commit(); - try { - submitFuture.get(); - Assert.fail("TransactionCommitFailedException expected"); - } catch (ExecutionException e) { - assertTrue(e.getCause() instanceof TransactionCommitFailedException); - assertTrue(e.getCause().getCause() == thrown); - abstractDOMBrokerWriteTransactionTestImpl.cancel(); - } + final var cause = assertThrows(ExecutionException.class, submitFuture::get).getCause(); + assertTrue(cause instanceof TransactionCommitFailedException); + assertSame(thrown, cause.getCause()); + abstractDOMBrokerWriteTransactionTestImpl.cancel(); } @Test @@ -75,13 +83,31 @@ public class AbstractDOMBrokerWriteTransactionTest { = new AbstractDOMBrokerWriteTransactionTestImpl(); FluentFuture submitFuture = abstractDOMBrokerWriteTransactionTestImpl.commit(); - try { - submitFuture.get(); - Assert.fail("TransactionCommitFailedException expected"); - } catch (ExecutionException e) { - assertTrue(e.getCause() instanceof TransactionCommitFailedException); - assertTrue(e.getCause().getCause() == thrown); - abstractDOMBrokerWriteTransactionTestImpl.cancel(); - } + final var cause = assertThrows(ExecutionException.class, submitFuture::get).getCause(); + assertTrue(cause instanceof TransactionCommitFailedException); + assertSame(thrown, cause.getCause()); + abstractDOMBrokerWriteTransactionTestImpl.cancel(); + } + + @Test + public void getSubtransactionStoreMismatch() { + final var testTx = new AbstractDOMBrokerWriteTransactionTestImpl( + Map.of(CONFIGURATION, txFactory, OPERATIONAL, txFactory)); + + assertEquals(domStoreWriteTransaction, testTx.getSubtransaction(CONFIGURATION)); + + final var exception = assertThrows(TransactionDatastoreMismatchException.class, + () -> testTx.getSubtransaction(OPERATIONAL)); + assertEquals(CONFIGURATION, exception.expected()); + assertEquals(OPERATIONAL, exception.encountered()); + } + + @Test + public void getSubtransactionStoreUndefined() { + final var testTx = new AbstractDOMBrokerWriteTransactionTestImpl(Map.of(OPERATIONAL, txFactory)); + + final var exception = assertThrows(IllegalArgumentException.class, + () -> testTx.getSubtransaction(CONFIGURATION)); + assertEquals("CONFIGURATION is not supported", exception.getMessage()); } }