summaryrefslogtreecommitdiffstats
path: root/simple/simple-common/src/test/java/org/simpleframework/common/lease/ContractQueueTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'simple/simple-common/src/test/java/org/simpleframework/common/lease/ContractQueueTest.java')
-rw-r--r--simple/simple-common/src/test/java/org/simpleframework/common/lease/ContractQueueTest.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/simple/simple-common/src/test/java/org/simpleframework/common/lease/ContractQueueTest.java b/simple/simple-common/src/test/java/org/simpleframework/common/lease/ContractQueueTest.java
new file mode 100644
index 0000000..6fa55c1
--- /dev/null
+++ b/simple/simple-common/src/test/java/org/simpleframework/common/lease/ContractQueueTest.java
@@ -0,0 +1,57 @@
+package org.simpleframework.common.lease;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import org.simpleframework.common.lease.Contract;
+import org.simpleframework.common.lease.ContractQueue;
+import org.simpleframework.common.lease.Expiration;
+
+public class ContractQueueTest extends TimeTestCase {
+
+ public void testTimeUnits() throws Exception {
+ ContractQueue<Long> queue = new ContractQueue<Long>();
+ List<String> complete = new ArrayList<String>();
+
+ for(long i = 0; i < 10000; i++) {
+ long random = (long)(Math.random() * 1000);
+ Contract<Long> contract = new Expiration(random, random, TimeUnit.NANOSECONDS);
+
+ queue.offer(contract);
+ }
+ for(int i = 0; i < 10000; i++) {
+ Contract<Long> contract = queue.take();
+
+ assertGreaterThanOrEqual(contract.getDelay(TimeUnit.NANOSECONDS), contract.getDelay(TimeUnit.NANOSECONDS));
+ assertGreaterThanOrEqual(contract.getDelay(TimeUnit.MILLISECONDS), contract.getDelay(TimeUnit.MILLISECONDS));
+ assertGreaterThanOrEqual(contract.getDelay(TimeUnit.SECONDS), contract.getDelay(TimeUnit.SECONDS));
+
+ long nanoseconds = contract.getDelay(TimeUnit.NANOSECONDS);
+ long milliseconds = contract.getDelay(TimeUnit.MILLISECONDS);
+
+ complete.add(String.format("index=[%s] nano=[%s] milli=[%s]", i, nanoseconds, milliseconds));
+ }
+ for(int i = 0; i < 10000; i++) {
+ System.err.println("expiry=[" + complete.get(i)+ "]");
+ }
+ }
+
+ public void testAccuracy() throws Exception {
+ ContractQueue<Long> queue = new ContractQueue<Long>();
+
+ for(long i = 0; i < 10000; i++) {
+ long random = (long)(Math.random() * 1000);
+ Contract<Long> contract = new Expiration(random, random, TimeUnit.NANOSECONDS);
+
+ queue.offer(contract);
+ }
+ for(int i = 0; i < 10000; i++) {
+ Contract<Long> contract = queue.take();
+
+ assertLessThanOrEqual(-2000, contract.getDelay(TimeUnit.MILLISECONDS));
+ }
+ }
+
+}
+