package com.griddynamics.jagger.user.test.configurations.limits;
import com.griddynamics.jagger.user.test.configurations.limits.auxiliary.JMetricName;
import com.griddynamics.jagger.user.test.configurations.limits.auxiliary.RefValue;
import com.griddynamics.jagger.util.StandardMetricsNamesUtil;
import java.util.Objects;
/**
* Allow to compare a performance test with some reference value.
*/
public class JLimitVsRefValue extends JLimit {
private Double refValue;
private JLimitVsRefValue(Builder builder) {
super(builder);
this.refValue = builder.refValue.value();
}
/**
* Builder for {@link JLimit} to compare with the reference value.
*
* @param metricId unique id of a metric
* @param refValue the for comparison.
* @return builder for {@link JLimit}.
*/
public static Builder builder(String metricId, RefValue refValue) {
return new Builder(metricId, refValue);
}
/**
* Builder for {@link JLimit} o compare metrics,
* collected during {@link com.griddynamics.jagger.invoker.scenario.JHttpUserScenario} execution, with the reference value.
*
* @param scenarioId unique id of a user scenario
* @param stepId unique id of a user step
* @param metricId unique id of a metric
* @param refValue for comparison
* @return a builder for {@link JLimit}
*/
public static JLimitVsRefValue.Builder builder(String scenarioId, String stepId, String metricId, RefValue refValue) {
return new Builder(StandardMetricsNamesUtil.generateScenarioStepMetricRegexp(scenarioId, stepId, metricId), refValue);
}
/**
* Builder for {@link JLimit} to compare with the reference value.
*
* @param metricId unique id of a metric
* @param refValue the for comparison.
* @return builder for {@link JLimit}.
*/
public static Builder builder(JMetricName metricId, RefValue refValue) {
return new Builder(metricId.transformToString(), refValue);
}
/**
* Builder for {@link JLimit} o compare metrics,
* collected during {@link com.griddynamics.jagger.invoker.scenario.JHttpUserScenario} execution, with the reference value.
*
* @param scenarioId is a unique id of a user scenario
* @param stepId is a unique id of a user step
* @param metricId is a unique id of a metric
* @param refValue for comparison
* @return a builder for {@link JLimit}
*/
public static JLimitVsRefValue.Builder builder(String scenarioId, String stepId, JMetricName metricId, RefValue refValue) {
return new Builder(StandardMetricsNamesUtil.generateScenarioStepMetricRegexp(scenarioId, stepId, metricId.transformToString()), refValue);
}
public static class Builder extends JLimit.Builder {
private RefValue refValue;
private Builder(String metricId, RefValue refValue) {
Objects.requireNonNull(metricId);
Objects.requireNonNull(refValue);
this.metricId = metricId;
this.refValue = refValue;
}
@Override
public JLimit build() {
return new JLimitVsRefValue(this);
}
}
public Double getRefValue() {
return refValue;
}
}