package com.griddynamics.jagger.engine.e1.collector.loadscenario;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Listener, executed before and after test suite
* @author Gribov Kirill
* @n
* @par Details:
* @details Possible applications for test suite listener: @n
* @li Check some setup before executing of test suite (f.e. via properties)
* @li Provide smoke tests before test suite
* @li Add some resume to session comment after test suite is over
*
* @n
* @ingroup Main_Listeners_group
*/
public abstract class LoadScenarioListener {
/** Method is executed before test suite starts
* @param loadScenarioInfo - describes start test suite information*/
public void onStart(LoadScenarioInfo loadScenarioInfo){
}
/** Method is executed after test suite stops
* @param loadScenarioInfo - describes stop test suite information*/
public void onStop(LoadScenarioInfo loadScenarioInfo){
}
/** Class is used by Jagger for sequential execution of several listeners @n
* Not required for custom test listeners */
public static class Composer extends LoadScenarioListener {
private static Logger log = LoggerFactory.getLogger(Composer.class);
private Iterable<LoadScenarioListener> listeners;
public Composer(Iterable<LoadScenarioListener> listeners) {
this.listeners = listeners;
}
public static LoadScenarioListener compose(Iterable<LoadScenarioListener> collectors){
return new Composer(collectors);
}
@Override
public void onStart(LoadScenarioInfo loadScenarioInfo) {
for (LoadScenarioListener listener : listeners){
try{
listener.onStart(loadScenarioInfo);
}catch (RuntimeException ex){
log.error("Failed to call on start in {} test-suite-listener", listener.toString(), ex);
}
}
}
@Override
public void onStop(LoadScenarioInfo loadScenarioInfo) {
for (LoadScenarioListener listener : listeners){
try{
listener.onStop(loadScenarioInfo);
}catch (RuntimeException ex){
log.error("Failed to call on stop in {} test-suite-listener", listener.toString(), ex);
}
}
}
}
}