X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2FAbstractDOMBrokerWriteTransactionTest.java;h=d8b1c3bf3996df5ddce35bd0e4c67f0be387492a;hb=9917911b1a492b5f9fbeef1591569f7fc4a80f68;hp=1680a79444df2c13a8fae2174fccef11ef3134a8;hpb=2fd1fa721510a30f58b3bc277deb05fce58badd6;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 1680a79444..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,29 +6,36 @@ */ 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.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +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 AbstractDOMTransactionFactory abstractDOMTransactionFactory; - + private DOMStoreTransactionFactory txFactory; + @Mock + private AbstractDOMTransactionFactory abstractDOMTransactionFactory; @Mock private DOMStoreWriteTransaction domStoreWriteTransaction; @@ -36,41 +43,36 @@ public class AbstractDOMBrokerWriteTransactionTest { extends AbstractDOMBrokerWriteTransaction { AbstractDOMBrokerWriteTransactionTestImpl() { - super(new Object(), Collections.emptyMap(), abstractDOMTransactionFactory); + this(Map.of(CONFIGURATION, txFactory)); } - @Override - protected DOMStoreWriteTransaction createTransaction(LogicalDatastoreType key) { - return null; + AbstractDOMBrokerWriteTransactionTestImpl(Map txFactoryMap) { + super(new Object(), txFactoryMap, abstractDOMTransactionFactory); } @Override - protected Collection getSubtransactions() { - return Collections.singletonList(domStoreWriteTransaction); + protected DOMStoreWriteTransaction createTransaction(final LogicalDatastoreType key) { + return domStoreWriteTransaction; } - } - @Before - public void setup() { - MockitoAnnotations.initMocks(this); + @Override + 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 @@ -81,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()); } }