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=de3a56d0782dafb6ee377a5284b4e35ecbb77811;hp=f97e32547261727f842c087e1e53ef502d1d40ea;hb=277612ebea9b441977cdb8460b2e76090df6f9e8;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..de3a56d078 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 @@ -9,25 +9,18 @@ package org.opendaylight.controller.cluster.datastore; import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyDouble; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import com.codahale.metrics.Snapshot; import com.codahale.metrics.Timer; -import java.util.concurrent.TimeUnit; -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Test; -import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; public class TransactionRateLimitingCommitCallbackTest { - @Mock public ActorContext actorContext; @@ -55,95 +48,13 @@ public class TransactionRateLimitingCommitCallbackTest { @Test public void testSuccess(){ - - for(int i=1;i<11;i++){ - // Keep on increasing the amount of time it takes to complete transaction for each tenth of a - // percentile. Essentially this would be 1ms for the 10th percentile, 2ms for 20th percentile and so on. - doReturn(TimeUnit.MILLISECONDS.toNanos(i) * 1D).when(commitSnapshot).getValue(i * 0.1); - } - - - TransactionRateLimitingCallback commitCallback = new TransactionRateLimitingCallback(actorContext); - commitCallback.run(); - commitCallback.success(); - - verify(actorContext).setTxCreationLimit(Matchers.doubleThat(approximately(292))); - } - - @Test - public void testSuccessPercentileValueZero(){ - - for(int i=1;i<11;i++){ - // Keep on increasing the amount of time it takes to complete transaction for each tenth of a - // percentile. Essentially this would be 1ms for the 10th percentile, 2ms for 20th percentile and so on. - doReturn(TimeUnit.MILLISECONDS.toNanos(i) * 1D).when(commitSnapshot).getValue(i * 0.1); - } - - doReturn(TimeUnit.MILLISECONDS.toNanos(0) * 1D).when(commitSnapshot).getValue(0.1); - - TransactionRateLimitingCallback commitCallback = new TransactionRateLimitingCallback(actorContext); - commitCallback.run(); - commitCallback.success(); - - verify(actorContext).setTxCreationLimit(Matchers.doubleThat(approximately(192))); - } - - @Test - public void testSuccessOnePercentileValueVeryHigh(){ - - for(int i=1;i<11;i++){ - // Keep on increasing the amount of time it takes to complete transaction for each tenth of a - // percentile. Essentially this would be 1ms for the 10th percentile, 2ms for 20th percentile and so on. - doReturn(TimeUnit.MILLISECONDS.toNanos(i) * 1D).when(commitSnapshot).getValue(i * 0.1); - } - - // ten seconds - doReturn(TimeUnit.MILLISECONDS.toNanos(10000) * 1D).when(commitSnapshot).getValue(1.0); - TransactionRateLimitingCallback commitCallback = new TransactionRateLimitingCallback(actorContext); commitCallback.run(); commitCallback.success(); - verify(actorContext).setTxCreationLimit(Matchers.doubleThat(approximately(282))); + verify(commitTimerContext).stop(); } - @Test - public void testSuccessWithAllPercentileValueVeryHigh(){ - - for(int i=1;i<11;i++){ - // Keep on increasing the amount of time it takes to complete transaction for each tenth of a - // percentile. Essentially this would be 1ms for the 10th percentile, 2ms for 20th percentile and so on. - doReturn(TimeUnit.MILLISECONDS.toNanos(10000) * 1D).when(commitSnapshot).getValue(i * 0.1); - } - - TransactionRateLimitingCallback commitCallback = new TransactionRateLimitingCallback(actorContext); - commitCallback.run(); - commitCallback.success(); - - verify(actorContext).setTxCreationLimit(Matchers.doubleThat(approximately(0))); - } - - @Test - public void testSuccessWithRealPercentileValues(){ - - for(int i=1;i<11;i++){ - // Keep on increasing the amount of time it takes to complete transaction for each tenth of a - // percentile. Essentially this would be 1ms for the 10th percentile, 2ms for 20th percentile and so on. - doReturn(TimeUnit.MILLISECONDS.toNanos(8) * 1D).when(commitSnapshot).getValue(i * 0.1); - } - - doReturn(TimeUnit.MILLISECONDS.toNanos(20) * 1D).when(commitSnapshot).getValue( 0.7); - doReturn(TimeUnit.MILLISECONDS.toNanos(100) * 1D).when(commitSnapshot).getValue( 0.9); - doReturn(TimeUnit.MILLISECONDS.toNanos(200) * 1D).when(commitSnapshot).getValue( 1.0); - - TransactionRateLimitingCallback commitCallback = new TransactionRateLimitingCallback(actorContext); - commitCallback.run(); - commitCallback.success(); - - verify(actorContext).setTxCreationLimit(Matchers.doubleThat(approximately(101))); - } - - @Test public void testSuccessWithoutRun(){ TransactionRateLimitingCallback commitCallback = new TransactionRateLimitingCallback(actorContext); @@ -154,9 +65,7 @@ public class TransactionRateLimitingCommitCallbackTest { } catch(IllegalStateException e){ } - - verify(actorContext, never()).setTxCreationLimit(anyDouble()); - + verify(commitTimerContext, never()).stop(); } @@ -166,24 +75,7 @@ public class TransactionRateLimitingCommitCallbackTest { commitCallback.run(); commitCallback.failure(); - verify(actorContext, never()).setTxCreationLimit(anyDouble()); - + verify(commitTimerContext, never()).stop(); } - 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; - } - - @Override - public void describeTo(Description description) { - description.appendText("> " + val +" < " + (val+1)); - } - }; - } - - } \ No newline at end of file