package eu.choreos.vv.client; import java.util.Map; import eu.choreos.vv.data.ReportData; import eu.choreos.vv.experiments.Experiment; import eu.choreos.vv.loadgenerator.LoadGenerator; import eu.choreos.vv.loadgenerator.LoadGeneratorFactory; public abstract class BaseClient<K, T> implements Client<K, T> { protected LoadGenerator<K, T> loadGen; protected Map<String, Object> params; private Experiment experiment; public Experiment getExperiment() { return experiment; } public void setExperiment(Experiment experiment) { this.experiment = experiment; } @Override public String getLabel() { return loadGen.getLabel(); } /* * (non-Javadoc) * * @see eu.choreos.vv.client.Client#execute(int, long, java.util.Map) */ @Override public ReportData execute(int numberOfCalls, long delay, Map<String, Object> params) throws Exception { ReportData report; this.params = params; this.setUp(); this.newLoadGenerator(); loadGen.setDelay(delay); report = loadGen.execute(numberOfCalls, this); this.tearDown(); return report; } /* * (non-Javadoc) * * @see eu.choreos.vv.client.Client#setUp() */ @Override public void setUp() throws Exception { } /* * (non-Javadoc) * * @see eu.choreos.vv.client.Client#tearDown() */ @Override public void tearDown() throws Exception { } /* * (non-Javadoc) * * @see eu.choreos.vv.client.Client#beforeRequest() */ @Override public K beforeRequest() throws Exception { return null; } /* * (non-Javadoc) * * @see eu.choreos.vv.client.Client#request(K) */ @Override public T request(K param) throws Exception { return null; } /* * (non-Javadoc) * * @see eu.choreos.vv.client.Client#afterRequest(T) */ @Override public void afterRequest(T param) throws Exception { } private void newLoadGenerator() { loadGen = LoadGeneratorFactory.getInstance().<K, T>create(); } }