package com.griddynamics.jagger.test.javabuilders.utils;
import com.griddynamics.jagger.engine.e1.Provider;
import com.griddynamics.jagger.engine.e1.collector.MetricDescription;
import com.griddynamics.jagger.engine.e1.collector.invocation.InvocationInfo;
import com.griddynamics.jagger.engine.e1.collector.invocation.InvocationListener;
import com.griddynamics.jagger.engine.e1.services.ServicesAware;
import com.griddynamics.jagger.invoker.InvocationException;
/**
* Calculate load duration instead of test duration in JMetricName.PERF_DURATION
*/
public class LoadDurationMetric extends ServicesAware implements Provider<InvocationListener> {
public static String NAME = "loadDuration";
@Override
protected void init() {
MetricDescription metricDescription = new MetricDescription(NAME)
.displayName(NAME)
.plotData(false)
.showSummary(true)
.addAggregator(new FirstLastDifferenceAggregatorProvider());
getMetricService().createMetric(metricDescription);
}
@Override
public InvocationListener provide() {
return new InvocationListener() {
private void append(){
getMetricService().saveValue(NAME, System.currentTimeMillis()/1000.0);
}
@Override
public void onStart(InvocationInfo invocationInfo) {
append();
}
@Override
public void onSuccess(InvocationInfo invocationInfo) {
append();
}
@Override
public void onFail(InvocationInfo invocationInfo, InvocationException e) {
append();
}
@Override
public void onError(InvocationInfo invocationInfo, Throwable error) {
append();
}
};
}
}