package org.ow2.choreos.ee.nodes.cloudprovider; import static org.junit.Assert.fail; import java.util.concurrent.atomic.AtomicInteger; import org.junit.Test; import org.ow2.choreos.ee.nodes.cloudprovider.DelayedRequestEnforcer; public class DelayedRequestsEnforcerTest { private static final int WAIT_TIME = 100; private DelayedRequestEnforcer enforcer = new DelayedRequestEnforcer(WAIT_TIME); private AtomicInteger counter = new AtomicInteger(); @Test public void shouldEnforceRule() { final int N = 30; for (int i = 0; i < N; i++) { Task task = new Task(); Thread trd = new Thread(task); trd.start(); } int previous = 0; int value = counter.get(); while (value < N - 1) { if (value > previous + 2) fail(); waitTimeBetweenRequests(); if (value > previous) previous = value; value = counter.get(); } } private void waitTimeBetweenRequests() { try { Thread.sleep(WAIT_TIME); } catch (InterruptedException e) { ; } } private class Task implements Runnable { @Override public void run() { enforcer.enforceRule(); counter.getAndIncrement(); } } }