package com.griddynamics.jagger.engine.e1.collector;
import static com.griddynamics.jagger.util.StandardMetricsNamesUtil.SUCCESS_RATE_AGGREGATOR_OK_ID;
/** Calculates accumulative success rate from data collected by @ref SuccessRateCollector<Q,R,E>
* @author Dmitry Latnikov
* @n
* @par Details:
* @details Aggregator is calculating success rate in every point for full set of data from beginning of the test @n
* This means you are getting accumulative value and can see how particular fails are influencing total success rate. @n
* Results of calculation are presented in SuccessRateCollector<Q,R,E> docu @n
*
* @ingroup Main_Aggregators_group */
public class SuccessRateAggregatorProvider implements MetricAggregatorProvider {
/** Method is called to provide instance of private class: \b SuccessRateAggregator that implements @ref MetricAggregator<C extends Number> and provides necessary calculations */
@Override
public MetricAggregator provide()
{
return new SuccessRateAggregator();
}
private static class SuccessRateAggregator implements MetricAggregator<Number>
{
private long passNum = 0;
private long failNum = 0;
@Override
public void append(Number calculated)
{
if (calculated.intValue() != 0)
passNum++;
else
failNum++;
}
@Override
public Double getAggregated() {
if ((failNum + passNum) == 0)
return 0.0;
else
return (double) (passNum) / (double) (failNum + passNum);
}
@Override
public void reset() {
}
@Override
public String getName() {
return SUCCESS_RATE_AGGREGATOR_OK_ID;
}
}
}