public static String toJson(EvaluatedQualityGate gate) { JsonObject details = new JsonObject(); details.addProperty(FIELD_LEVEL, gate.getStatus().name()); JsonArray conditionResults = new JsonArray(); for (EvaluatedCondition condition : gate.getEvaluatedConditions()) { conditionResults.add(toJson(condition)); } details.add("conditions", conditionResults); details.addProperty(FIELD_IGNORED_CONDITIONS, gate.hasIgnoredConditionsOnSmallChangeset()); return details.toString(); }
@Test public void verify_getters_when_no_condition() { EvaluatedQualityGate underTest = builder .setQualityGate(NO_CONDITION_QUALITY_GATE) .setStatus(randomStatus) .build(); assertThat(underTest.getQualityGate()).isEqualTo(NO_CONDITION_QUALITY_GATE); assertThat(underTest.getStatus()).isEqualTo(randomStatus); assertThat(underTest.getEvaluatedConditions()).isEmpty(); }
@Test public void verify_getters() { EvaluatedQualityGate underTest = builder .setQualityGate(ONE_CONDITION_QUALITY_GATE) .setStatus(randomStatus) .addCondition(CONDITION_1, randomEvaluationStatus, randomValue) .build(); assertThat(underTest.getQualityGate()).isEqualTo(ONE_CONDITION_QUALITY_GATE); assertThat(underTest.getStatus()).isEqualTo(randomStatus); assertThat(underTest.getEvaluatedConditions()) .containsOnly(new EvaluatedCondition(CONDITION_1, randomEvaluationStatus, randomValue)); }
@Test public void verify_getters_when_multiple_conditions() { QualityGate qualityGate = new QualityGate(QUALITY_GATE_ID, QUALITY_GATE_NAME, ImmutableSet.of(CONDITION_1, CONDITION_2)); EvaluatedQualityGate underTest = builder .setQualityGate(qualityGate) .setStatus(randomStatus) .addCondition(CONDITION_1, randomEvaluationStatus, randomValue) .addCondition(CONDITION_2, EvaluatedCondition.EvaluationStatus.ERROR, "bad") .build(); assertThat(underTest.getQualityGate()).isEqualTo(qualityGate); assertThat(underTest.getStatus()).isEqualTo(randomStatus); assertThat(underTest.getEvaluatedConditions()).containsOnly( new EvaluatedCondition(CONDITION_1, randomEvaluationStatus, randomValue), new EvaluatedCondition(CONDITION_2, EvaluatedCondition.EvaluationStatus.ERROR, "bad")); }
@Test public void refreshGateStatus_generates_gate_related_measures() { ComponentDto project = ComponentTesting.newPublicProjectDto(newOrganizationDto()); MetricDto conditionMetric = newMetricDto(); MetricDto statusMetric = newMetricDto().setKey(CoreMetrics.ALERT_STATUS_KEY); MetricDto detailsMetric = newMetricDto().setKey(CoreMetrics.QUALITY_GATE_DETAILS_KEY); Condition condition = new Condition(conditionMetric.getKey(), Condition.Operator.GREATER_THAN, "10"); QualityGate gate = new QualityGate("1", "foo", ImmutableSet.of(condition)); MeasureMatrix matrix = new MeasureMatrix(singleton(project), asList(conditionMetric, statusMetric, detailsMetric), emptyList()); EvaluatedQualityGate result = underTest.refreshGateStatus(project, gate, matrix); QualityGateEvaluator.Measures measures = qualityGateEvaluator.getCalledMeasures(); assertThat(measures.get(conditionMetric.getKey())).isEmpty(); assertThat(result.getStatus()).isEqualTo(Metric.Level.OK); assertThat(result.getEvaluatedConditions()) .extracting(EvaluatedCondition::getStatus) .containsExactly(EvaluatedCondition.EvaluationStatus.OK); assertThat(matrix.getMeasure(project, CoreMetrics.ALERT_STATUS_KEY).get().getDataAsString()).isEqualTo(Metric.Level.OK.name()); assertThat(matrix.getMeasure(project, CoreMetrics.QUALITY_GATE_DETAILS_KEY).get().getDataAsString()) .isNotEmpty() // json format .startsWith("{").endsWith("}"); }
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(); }
public static String toJson(EvaluatedQualityGate gate) { JsonObject details = new JsonObject(); details.addProperty(FIELD_LEVEL, gate.getStatus().name()); JsonArray conditionResults = new JsonArray(); for (EvaluatedCondition condition : gate.getEvaluatedConditions()) { conditionResults.add(toJson(condition)); } details.add("conditions", conditionResults); details.addProperty(FIELD_IGNORED_CONDITIONS, gate.hasIgnoredConditionsOnSmallChangeset()); return details.toString(); }
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(); }