X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FTransactionChainProxyTest.java;h=23c3a82a38255e9bfff2708583c4370ccb6ccf9a;hp=9b7039764f57ba56eb9469354446cad35a6b7537;hb=4b207b5356775c4b4d231ae979f9f2134f617dd1;hpb=54916d10764a5234881040e9a68ae35d63b3dac9 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java index 9b7039764f..23c3a82a38 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java @@ -10,43 +10,108 @@ package org.opendaylight.controller.cluster.datastore; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.cluster.datastore.utils.MockActorContext; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -public class TransactionChainProxyTest { - ActorContext actorContext = Mockito.mock(ActorContext.class); - SchemaContext schemaContext = Mockito.mock(SchemaContext.class); +public class TransactionChainProxyTest extends AbstractActorTest{ + ActorContext actorContext = null; + SchemaContext schemaContext = mock(SchemaContext.class); + + @Mock + ActorContext mockActorContext; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + actorContext = new MockActorContext(getSystem()); + actorContext.setSchemaContext(schemaContext); + + doReturn(schemaContext).when(mockActorContext).getSchemaContext(); + } + + @SuppressWarnings("resource") @Test public void testNewReadOnlyTransaction() throws Exception { - DOMStoreTransaction dst = new TransactionChainProxy(actorContext, schemaContext).newReadOnlyTransaction(); + DOMStoreTransaction dst = new TransactionChainProxy(actorContext).newReadOnlyTransaction(); Assert.assertTrue(dst instanceof DOMStoreReadTransaction); } + @SuppressWarnings("resource") @Test public void testNewReadWriteTransaction() throws Exception { - DOMStoreTransaction dst = new TransactionChainProxy(actorContext, schemaContext).newReadWriteTransaction(); + DOMStoreTransaction dst = new TransactionChainProxy(actorContext).newReadWriteTransaction(); Assert.assertTrue(dst instanceof DOMStoreReadWriteTransaction); } + @SuppressWarnings("resource") @Test public void testNewWriteOnlyTransaction() throws Exception { - DOMStoreTransaction dst = new TransactionChainProxy(actorContext, schemaContext).newWriteOnlyTransaction(); + DOMStoreTransaction dst = new TransactionChainProxy(actorContext).newWriteOnlyTransaction(); Assert.assertTrue(dst instanceof DOMStoreWriteTransaction); } - @Test(expected=UnsupportedOperationException.class) + @Test public void testClose() throws Exception { - new TransactionChainProxy(actorContext, schemaContext).close(); + ActorContext context = mock(ActorContext.class); + + new TransactionChainProxy(context).close(); + + verify(context, times(1)).broadcast(anyObject()); + } + + @Test + public void testTransactionChainsHaveUniqueId(){ + TransactionChainProxy one = new TransactionChainProxy(mock(ActorContext.class)); + TransactionChainProxy two = new TransactionChainProxy(mock(ActorContext.class)); + + Assert.assertNotEquals(one.getTransactionChainId(), two.getTransactionChainId()); + } + + @Test + public void testRateLimitingUsedInReadWriteTxCreation(){ + TransactionChainProxy txChainProxy = new TransactionChainProxy(mockActorContext); + + txChainProxy.newReadWriteTransaction(); + + verify(mockActorContext, times(1)).acquireTxCreationPermit(); + } + + @Test + public void testRateLimitingUsedInWriteOnlyTxCreation(){ + TransactionChainProxy txChainProxy = new TransactionChainProxy(mockActorContext); + + txChainProxy.newWriteOnlyTransaction(); + + verify(mockActorContext, times(1)).acquireTxCreationPermit(); + } + + + @Test + public void testRateLimitingNotUsedInReadOnlyTxCreation(){ + TransactionChainProxy txChainProxy = new TransactionChainProxy(mockActorContext); + + txChainProxy.newReadOnlyTransaction(); + + verify(mockActorContext, times(0)).acquireTxCreationPermit(); } }