private static Optional<Comparable> getMeasureValue(Condition condition, QualityGateEvaluator.Measure measure) { if (condition.isOnLeakPeriod()) { return Optional.ofNullable(getLeakValue(measure)); } return Optional.ofNullable(getValue(measure)); }
private static JsonObject toJson(EvaluatedCondition evaluatedCondition) { Condition condition = evaluatedCondition.getCondition(); JsonObject result = new JsonObject(); result.addProperty("metric", condition.getMetricKey()); result.addProperty("op", condition.getOperator().getDbValue()); if (condition.isOnLeakPeriod()) { result.addProperty("period", 1); } result.addProperty("error", condition.getErrorThreshold()); evaluatedCondition.getValue().ifPresent(v -> result.addProperty("actual", v)); result.addProperty(FIELD_LEVEL, evaluatedCondition.getStatus().name()); return result; } }
private static Optional<Comparable> getMeasureValue(Condition condition, QualityGateEvaluator.Measure measure) { if (condition.isOnLeakPeriod()) { return Optional.ofNullable(getLeakValue(measure)); } return Optional.ofNullable(getValue(measure)); }
private static JsonObject toJson(EvaluatedCondition evaluatedCondition) { Condition condition = evaluatedCondition.getCondition(); JsonObject result = new JsonObject(); result.addProperty("metric", condition.getMetricKey()); result.addProperty("op", condition.getOperator().getDbValue()); if (condition.isOnLeakPeriod()) { result.addProperty("period", 1); } condition.getWarningThreshold().ifPresent(t -> result.addProperty("warning", t)); condition.getErrorThreshold().ifPresent(t -> result.addProperty("error", t)); evaluatedCondition.getValue().ifPresent(v -> result.addProperty("actual", v)); result.addProperty(FIELD_LEVEL, evaluatedCondition.getStatus().name()); return result; } }
private static EvaluatedCondition evaluateConditionsOnMetric(Collection<Condition> conditionsOnSameMetric, Measures measures) { EvaluatedCondition leakEvaluation = null; EvaluatedCondition absoluteEvaluation = null; for (Condition condition : conditionsOnSameMetric) { if (condition.isOnLeakPeriod()) { leakEvaluation = ConditionEvaluator.evaluate(condition, measures); } else { absoluteEvaluation = ConditionEvaluator.evaluate(condition, measures); } } if (leakEvaluation == null) { return requireNonNull(absoluteEvaluation, "Evaluation of absolute value can't be null on conditions " + conditionsOnSameMetric); } if (absoluteEvaluation == null) { return requireNonNull(leakEvaluation, "Evaluation of leak value can't be null on conditions " + conditionsOnSameMetric); } // both conditions are present. Take the worse one. In case of equality, take // the one on the leak period if (absoluteEvaluation.getStatus().compareTo(leakEvaluation.getStatus()) > 0) { return absoluteEvaluation; } return leakEvaluation; }
private static void writeQualityGate(JsonWriter writer, EvaluatedQualityGate gate) { writer .name("qualityGate") .beginObject() .prop("name", gate.getQualityGate().getName()) .prop(PROPERTY_STATUS, gate.getStatus().toString()) .name("conditions") .beginArray(); for (EvaluatedCondition evaluatedCondition : gate.getEvaluatedConditions()) { Condition condition = evaluatedCondition.getCondition(); writer .beginObject() .prop("metric", condition.getMetricKey()) .prop("operator", condition.getOperator().name()); evaluatedCondition.getValue().ifPresent(t -> writer.prop("value", t)); writer .prop(PROPERTY_STATUS, evaluatedCondition.getStatus().name()) .prop("onLeakPeriod", condition.isOnLeakPeriod()) .prop("errorThreshold", condition.getErrorThreshold().orElse(null)) .prop("warningThreshold", condition.getWarningThreshold().orElse(null)) .endObject(); } writer .endArray() .endObject(); }