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%2FTransactionRateLimitingCommitCallbackTest.java;h=69a023ad3158ebbbe0e1fd04c924d0358851a0d9;hp=f97e32547261727f842c087e1e53ef502d1d40ea;hb=08dd5c2c443ff53f56af88a0e8dc8f34e36d2245;hpb=5cd6ac6819a1dcbab05c6ffbc3ac427ea41c658d diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionRateLimitingCommitCallbackTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionRateLimitingCommitCallbackTest.java index f97e325472..69a023ad31 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionRateLimitingCommitCallbackTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionRateLimitingCommitCallbackTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Matchers; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; @@ -170,12 +171,48 @@ public class TransactionRateLimitingCommitCallbackTest { } + @Test + public void testAdjustRateLimitForUnusedTransaction() { + doReturn(commitTimer).when(actorContext).getOperationTimer("one", "commit"); + doReturn("one").when(actorContext).getDataStoreType(); + + Timer commitTimer2 = Mockito.mock(Timer.class); + Snapshot commitSnapshot2 = Mockito.mock(Snapshot.class); + + doReturn(commitSnapshot2).when(commitTimer2).getSnapshot(); + + doReturn(commitTimer2).when(actorContext).getOperationTimer("two", "commit"); + + DatastoreContext.newBuilder().dataStoreType("one").build(); + DatastoreContext.newBuilder().dataStoreType("two").build(); + + doReturn(TimeUnit.MICROSECONDS.toNanos(500) * 1D).when(commitSnapshot).getValue(1 * 0.1); + + TransactionRateLimitingCallback.adjustRateLimitForUnusedTransaction(actorContext); + + verify(actorContext, never()).setTxCreationLimit(anyDouble()); + + Mockito.reset(commitSnapshot); + + TransactionRateLimitingCallback.adjustRateLimitForUnusedTransaction(actorContext); + + verify(actorContext, never()).setTxCreationLimit(anyDouble()); + + System.out.println(""+TimeUnit.SECONDS.toNanos(30)/TimeUnit.MICROSECONDS.toNanos(100)); + + doReturn(TimeUnit.MICROSECONDS.toNanos(100) * 1D).when(commitSnapshot2).getValue(1 * 0.1); + + TransactionRateLimitingCallback.adjustRateLimitForUnusedTransaction(actorContext); + + verify(actorContext).setTxCreationLimit(Matchers.doubleThat(approximately(1000))); + } + public Matcher approximately(final double val){ return new BaseMatcher() { @Override public boolean matches(Object o) { Double aDouble = (Double) o; - return aDouble > val && aDouble < val+1; + return aDouble >= val && aDouble <= val+1; } @Override