private static Comparable getThreshold(Condition condition, ValueType valueType) { String valString = condition.getErrorThreshold(); try { switch (valueType) { case INT: case RATING: return parseInteger(valString); case MILLISEC: case WORK_DUR: return Long.parseLong(valString); case FLOAT: case PERCENT: return Double.parseDouble(valString); case LEVEL: return valueType; default: throw new IllegalArgumentException(format("Unsupported value type %s. Cannot convert condition value", valueType)); } } catch (NumberFormatException badValueFormat) { throw new IllegalArgumentException(format( "Quality Gate: unable to parse threshold '%s' to compare against %s", valString, condition.getMetricKey())); } }
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; } }
@Test public void verify_getters() { assertThat(underTest.getMetricKey()).isEqualTo(METRIC_KEY); assertThat(underTest.getOperator()).isEqualTo(OPERATOR); assertThat(underTest.getErrorThreshold()).contains(ERROR_THRESHOLD); }
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("errorThreshold", condition.getErrorThreshold()) .endObject(); } writer .endArray() .endObject(); }
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 Optional<Comparable> getThreshold(Condition condition, ValueType valueType, boolean error) { Optional<String> valString = error ? condition.getErrorThreshold() : condition.getWarningThreshold(); return valString.map(s -> { try { switch (valueType) { case BOOL: return parseInteger(s) == 1; case INT: case RATING: return parseInteger(s); case MILLISEC: case WORK_DUR: return Long.parseLong(s); case FLOAT: case PERCENT: return Double.parseDouble(s); case STRING: case LEVEL: return s; default: throw new IllegalArgumentException(String.format("Unsupported value type %s. Cannot convert condition value", valueType)); } } catch (NumberFormatException badValueFormat) { throw new IllegalArgumentException(String.format( "Quality Gate: unable to parse threshold '%s' to compare against %s", s, condition.getMetricKey())); } }); }
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(); }