package eu.choreos.vv.loadgenerator; import static org.junit.Assert.assertEquals; import java.io.BufferedReader; import java.io.Reader; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import org.junit.Test; import eu.choreos.vv.client.BaseClient; import eu.choreos.vv.data.ReportData; import eu.choreos.vv.loadgenerator.strategy.LoadGenerationStrategy; import eu.choreos.vv.loadgenerator.strategy.TraceDrivenLoad; public class TraceDrivenTest { @Test public void test() throws Exception { String trace = "100000000\n100000000\n20000000\n459300000\n3405000000\n394239823"; Reader reader = new StringReader(trace); BufferedReader in = new BufferedReader(reader); LoadGenerationStrategy strategy = new TraceDrivenLoad(in); LoadGeneratorFactory.getInstance().setStrategy(strategy); LoadGenerator<Object, Object> loadGen = LoadGeneratorFactory.getInstance().create(); final List<Long> times = new ArrayList<Long>(); ReportData report = loadGen.execute(6, new BaseClient<Object, Object>() { long ant, now = System.nanoTime(); @Override public Object request(Object param) { ant = now; now = System.nanoTime(); times.add(now - ant); System.out.format("request %d\n", (now - ant)/1000000); return times; } }); assertEquals(times.get(1)/10000000f, 10f, 0.2); assertEquals(times.get(2)/10000000f, 10f, 0.1); assertEquals(times.get(3)/10000000f, 2f, 0.1); assertEquals(times.get(4)/10000000f, 45.9f, 0.1); assertEquals(times.get(5)/10000000f, 340.5f, 0.1); } }