package eu.choreos.vv.loadgenerator; import java.util.ArrayList; import java.util.Date; import java.util.List; import eu.choreos.vv.client.Client; import eu.choreos.vv.data.ReportData; import eu.choreos.vv.loadgenerator.strategy.LoadGenerationStrategy; /** * Load generator that trigger the requests as fast as possible * */ public class SequentialLoadGenerator <K, T> implements LoadGenerator<K, T> { static final String LABEL = "response time (msec)"; private Client<K, T> client; private LoadGenerationStrategy strategy; protected long delay; @Override public String getLabel() { return LABEL; } @Override public ReportData execute(int numberOfCalls, Client<K, T> client) throws Exception { final List<Number> measurements = new ArrayList<Number>(); Date start, end; this.client = client; strategy.setMeanDelay(delay); strategy.setup(); start = new Date(); for (int i = 0; i < numberOfCalls; i++) { strategy.beforeRequest(); measurements.add(call()); strategy.afterRequest(); } end = new Date(); ReportData report = new ReportData(); report.setMeasurements("responseTime", measurements); report.setStartTime(start); report.setEndTime(end); return report; } public LoadGenerationStrategy getStrategy() { return strategy; } public void setStrategy(LoadGenerationStrategy strategy) { this.strategy = strategy; } @Override public void setDelay(long delay) { this.delay = delay; } public long getDelay() { return delay; } public Double call() throws Exception { K valueBefore = client.beforeRequest(); double start = System.currentTimeMillis(); T valueRequest = client.request(valueBefore); double end = System.currentTimeMillis(); client.afterRequest(valueRequest); return (end - start); } @Override public void setTimeout(int timeout) { // TODO Auto-generated method stub } @Override public void setPoolSize(int poolsize) { // TODO Auto-generated method stub } }