package com.griddynamics.jagger.engine.e1.collector; import com.griddynamics.jagger.engine.e1.Provider; import com.griddynamics.jagger.engine.e1.collector.test.TestInfo; import com.griddynamics.jagger.engine.e1.collector.test.TestListener; import com.griddynamics.jagger.engine.e1.services.ServicesAware; import static com.griddynamics.jagger.util.StandardMetricsNamesUtil.VIRTUAL_USERS; import static com.griddynamics.jagger.util.StandardMetricsNamesUtil.VIRTUAL_USERS_ID; /** * Listener, executed periodically during test to collect number of workload threads * * @author Gribov Kirill * @n * @par Details: * @details This listener allows to collect and store information about workload produced by Jagger @n * When listener is used it saves number of Jagger threads that produce workload for SUT. Later this data @n * is available in report and WebUI. * */ public class CollectThreadsTestListener extends ServicesAware implements Provider<TestListener> { /** * Method is executed single time when listener is created */ @Override protected void init() { MetricDescription metricDescription = new MetricDescription(VIRTUAL_USERS_ID) .displayName(VIRTUAL_USERS) .plotData(true) .showSummary(true) .addAggregator(new AvgMetricAggregatorProvider()); getMetricService().createMetric(metricDescription); } /** * Method is providing listener to Jagger that will trigger listener methods during test run */ @Override public TestListener provide() { return new TestListener() { @Override public void onStart(TestInfo testInfo) { } @Override public void onStop(TestInfo testInfo) { } @Override public void onRun(TestInfo status) { getMetricService().saveValue(VIRTUAL_USERS_ID, status.getThreads()); } }; } }