package org.robotninjas.riemann.load;
import com.google.common.base.Supplier;
import com.google.common.util.concurrent.AbstractService;
import com.google.inject.Inject;
import org.robotninjas.riemann.load.annotations.WorkExecutor;
import org.robotninjas.riemann.load.annotations.WorkerCount;
import java.util.concurrent.Executor;
public class LoadTestService extends AbstractService {
private final Supplier<ClientWorker> workerFactory;
private final Executor executor;
private final int workers;
@Inject
public LoadTestService(Supplier<ClientWorker> workerFactory, @WorkExecutor Executor executor, @WorkerCount int workers) {
this.workerFactory = workerFactory;
this.executor = executor;
this.workers = workers;
}
@Override
protected void doStart() {
for (int i = 0; i < workers; i++) {
executor.execute(workerFactory.get());
}
notifyStarted();
}
@Override
protected void doStop() {
notifyStopped();
}
}