aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server
diff options
context:
space:
mode:
authorBenoƮt Gianinetti <benoit.gianinetti@sonarsource.com>2018-12-11 15:57:05 +0100
committerSonarTech <sonartech@sonarsource.com>2019-01-08 20:21:07 +0100
commitb87a76fa468a726a61c1c635b4334387398aaa06 (patch)
tree2f6893b7d7c43525a72aedb0ea7807b2e133d778 /server/sonar-server
parent1547d5cc2b446b6d0816bb5607500db9332bd746 (diff)
downloadsonarqube-b87a76fa468a726a61c1c635b4334387398aaa06.tar.gz
sonarqube-b87a76fa468a726a61c1c635b4334387398aaa06.zip
SONAR-11571 Drop warning treshold from QG web services
Diffstat (limited to 'server/sonar-server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java3
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgGenerator.java3
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveQualityGateComputerImpl.java2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java45
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConverter.java3
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateUpdater.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java24
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java14
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ProjectStatusAction.java1
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWs.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java1
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java15
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/util/MetricLevelTypeValidation.java2
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/project_status-example.json5
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/show-example.json4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/badge/ws/QualityGateActionTest.java38
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/badge/ws/SvgGeneratorTest.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java32
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveQualityGateComputerImplTest.java8
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeSortTest.java7
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/notification/email/AlertsEmailTemplateTest.java24
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java137
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/RegisterQualityGatesTest.java27
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java77
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java17
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/UpdateConditionActionTest.java97
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/ProjectStatusActionTest/measure_data.json12
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/QualityGateDetailsFormatterTest/non_leak_period.json2
36 files changed, 191 insertions, 462 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java b/server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java
index 50e0637aef9..e02d9276242 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java
@@ -60,7 +60,6 @@ import static org.sonar.api.measures.CoreMetrics.VULNERABILITIES_KEY;
import static org.sonar.api.measures.Metric.Level;
import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.api.measures.Metric.Level.OK;
-import static org.sonar.api.measures.Metric.Level.WARN;
import static org.sonar.api.measures.Metric.ValueType;
import static org.sonar.server.badge.ws.ETagUtils.RFC1123_DATE;
import static org.sonar.server.badge.ws.ETagUtils.getETag;
@@ -95,12 +94,10 @@ public class MeasureAction implements ProjectBadgesWsAction {
private static final Map<Level, String> QUALITY_GATE_MESSAGE_BY_STATUS = new EnumMap<>(ImmutableMap.of(
OK, "passed",
- WARN, "warning",
ERROR, "failed"));
private static final Map<Level, Color> COLOR_BY_QUALITY_GATE_STATUS = new EnumMap<>(ImmutableMap.of(
OK, Color.QUALITY_GATE_OK,
- WARN, Color.QUALITY_GATE_WARN,
ERROR, Color.QUALITY_GATE_ERROR));
private static final Map<Rating, Color> COLOR_BY_RATING = new EnumMap<>(ImmutableMap.of(
diff --git a/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgGenerator.java b/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgGenerator.java
index b9d86844a0b..e21bb66c8b4 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgGenerator.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgGenerator.java
@@ -33,7 +33,6 @@ import static java.lang.String.valueOf;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.api.measures.Metric.Level.OK;
-import static org.sonar.api.measures.Metric.Level.WARN;
import static org.sonar.process.ProcessProperties.Property.SONARCLOUD_ENABLED;
@ServerSide
@@ -137,7 +136,6 @@ public class SvgGenerator {
this.badgeTemplate = readTemplate(templatePath + "/badge.svg");
this.qualityGateTemplates = ImmutableMap.of(
OK, readTemplate(templatePath + "/quality_gate_passed.svg"),
- WARN, readTemplate(templatePath + "/quality_gate_warn.svg"),
ERROR, readTemplate(templatePath + "/quality_gate_failed.svg"));
}
@@ -195,7 +193,6 @@ public class SvgGenerator {
static class Color {
static final Color DEFAULT = new Color("#999");
static final Color QUALITY_GATE_OK = new Color("#4c1");
- static final Color QUALITY_GATE_WARN = new Color("#ed7d20");
static final Color QUALITY_GATE_ERROR = new Color("#d4333f");
static final Color RATING_A = new Color("#00aa00");
static final Color RATING_B = new Color("#b0d513");
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveQualityGateComputerImpl.java b/server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveQualityGateComputerImpl.java
index 1675f7a6f39..2f6740305a2 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveQualityGateComputerImpl.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveQualityGateComputerImpl.java
@@ -80,7 +80,7 @@ public class LiveQualityGateComputerImpl implements LiveQualityGateComputer {
Set<Condition> conditions = conditionDtos.stream().map(conditionDto -> {
String metricKey = metricsById.get((int) conditionDto.getMetricId()).getKey();
Condition.Operator operator = Condition.Operator.fromDbValue(conditionDto.getOperator());
- return new Condition(metricKey, operator, conditionDto.getErrorThreshold(), conditionDto.getWarningThreshold());
+ return new Condition(metricKey, operator, conditionDto.getErrorThreshold());
}).collect(toHashSet(conditionDtos.size()));
return new QualityGate(String.valueOf(gateDto.getId()), gateDto.getName(), conditions);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
index 831df17ec6d..42126a88fbd 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
@@ -42,6 +42,7 @@ import static java.lang.Integer.parseInt;
import static java.lang.Long.parseLong;
import static java.lang.String.format;
import static java.util.Arrays.stream;
+import static java.util.Objects.requireNonNull;
import static org.sonar.api.measures.Metric.ValueType.RATING;
import static org.sonar.api.measures.Metric.ValueType.valueOf;
import static org.sonar.db.qualitygate.QualityGateConditionDto.isOperatorAllowed;
@@ -60,30 +61,28 @@ public class QualityGateConditionsUpdater {
}
public QualityGateConditionDto createCondition(DbSession dbSession, QualityGateDto qualityGate, String metricKey, String operator,
- @Nullable String warningThreshold, @Nullable String errorThreshold) {
+ String errorThreshold) {
MetricDto metric = getNonNullMetric(dbSession, metricKey);
- validateCondition(metric, operator, warningThreshold, errorThreshold);
+ validateCondition(metric, operator, errorThreshold);
checkConditionDoesNotExistOnSameMetric(getConditions(dbSession, qualityGate.getId()), metric);
QualityGateConditionDto newCondition = new QualityGateConditionDto().setQualityGateId(qualityGate.getId())
.setMetricId(metric.getId()).setMetricKey(metric.getKey())
.setOperator(operator)
- .setWarningThreshold(warningThreshold)
.setErrorThreshold(errorThreshold);
dbClient.gateConditionDao().insert(newCondition, dbSession);
return newCondition;
}
public QualityGateConditionDto updateCondition(DbSession dbSession, QualityGateConditionDto condition, String metricKey, String operator,
- @Nullable String warningThreshold, @Nullable String errorThreshold) {
+ String errorThreshold) {
MetricDto metric = getNonNullMetric(dbSession, metricKey);
- validateCondition(metric, operator, warningThreshold, errorThreshold);
+ validateCondition(metric, operator, errorThreshold);
condition
.setMetricId(metric.getId())
.setMetricKey(metric.getKey())
.setOperator(operator)
- .setWarningThreshold(warningThreshold)
.setErrorThreshold(errorThreshold);
dbClient.gateConditionDao().update(condition, dbSession);
return condition;
@@ -101,15 +100,12 @@ public class QualityGateConditionsUpdater {
return dbClient.gateConditionDao().selectForQualityGate(dbSession, qGateId);
}
- private static void validateCondition(MetricDto metric, String operator, @Nullable String warningThreshold, @Nullable String errorThreshold) {
+ private static void validateCondition(MetricDto metric, String operator, String errorThreshold) {
List<String> errors = new ArrayList<>();
validateMetric(metric, errors);
checkOperator(metric, operator, errors);
- checkThresholds(warningThreshold, errorThreshold, errors);
-
- validateThresholdValues(metric, warningThreshold, errors);
- validateThresholdValues(metric, errorThreshold, errors);
- checkRatingMetric(metric, warningThreshold, errorThreshold, errors);
+ checkErrorThreshold(metric, errorThreshold, errors);
+ checkRatingMetric(metric, errorThreshold, errors);
checkRequest(errors.isEmpty(), errors);
}
@@ -130,8 +126,9 @@ public class QualityGateConditionsUpdater {
check(isOperatorAllowed(operator, valueType), errors, "Operator %s is not allowed for metric type %s.", operator, metric.getValueType());
}
- private static void checkThresholds(@Nullable String warningThreshold, @Nullable String errorThreshold, List<String> errors) {
- check(warningThreshold != null || errorThreshold != null, errors, "At least one threshold (warning, error) must be set.");
+ private static void checkErrorThreshold(MetricDto metric, String errorThreshold, List<String> errors) {
+ requireNonNull(errorThreshold, "errorThreshold can not be null");
+ validateErrorThresholdValue(metric, errorThreshold, errors);
}
private static void checkConditionDoesNotExistOnSameMetric(Collection<QualityGateConditionDto> conditions, MetricDto metric) {
@@ -143,25 +140,22 @@ public class QualityGateConditionsUpdater {
checkRequest(!conditionExists, format("Condition on metric '%s' already exists.", metric.getShortName()));
}
- private static void validateThresholdValues(MetricDto metric, @Nullable String value, List<String> errors) {
- if (value == null) {
- return;
- }
+ private static void validateErrorThresholdValue(MetricDto metric, String errorThreshold, List<String> errors) {
try {
ValueType valueType = ValueType.valueOf(metric.getValueType());
switch (valueType) {
case BOOL:
case INT:
case RATING:
- parseInt(value);
+ parseInt(errorThreshold);
return;
case MILLISEC:
case WORK_DUR:
- parseLong(value);
+ parseLong(errorThreshold);
return;
case FLOAT:
case PERCENT:
- parseDouble(value);
+ parseDouble(errorThreshold);
return;
case STRING:
case LEVEL:
@@ -170,26 +164,21 @@ public class QualityGateConditionsUpdater {
throw new IllegalArgumentException(format("Unsupported value type %s. Cannot convert condition value", valueType));
}
} catch (Exception e) {
- errors.add(format("Invalid value '%s' for metric '%s'", value, metric.getShortName()));
+ errors.add(format("Invalid value '%s' for metric '%s'", errorThreshold, metric.getShortName()));
}
}
- private static void checkRatingMetric(MetricDto metric, @Nullable String warningThreshold, @Nullable String errorThreshold, List<String> errors) {
+ private static void checkRatingMetric(MetricDto metric, String errorThreshold, List<String> errors) {
if (!metric.getValueType().equals(RATING.name())) {
return;
}
if (!isCoreRatingMetric(metric.getKey())) {
errors.add(format("The metric '%s' cannot be used", metric.getShortName()));
}
- if (!isValidRating(warningThreshold)) {
- addInvalidRatingError(warningThreshold, errors);
- return;
- }
if (!isValidRating(errorThreshold)) {
addInvalidRatingError(errorThreshold, errors);
return;
}
- checkRatingGreaterThanOperator(warningThreshold, errors);
checkRatingGreaterThanOperator(errorThreshold, errors);
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConverter.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConverter.java
index 32dd6f61918..402c9bfed54 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConverter.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConverter.java
@@ -49,8 +49,7 @@ public class QualityGateConverter {
JsonObject result = new JsonObject();
result.addProperty("metric", condition.getMetricKey());
result.addProperty("op", condition.getOperator().getDbValue());
- condition.getWarningThreshold().ifPresent(t -> result.addProperty("warning", t));
- condition.getErrorThreshold().ifPresent(t -> result.addProperty("error", t));
+ result.addProperty("error", condition.getErrorThreshold());
evaluatedCondition.getValue().ifPresent(v -> result.addProperty("actual", v));
result.addProperty(FIELD_LEVEL, evaluatedCondition.getStatus().name());
return result;
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateUpdater.java
index d139e06eae8..8fa1bc68464 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateUpdater.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateUpdater.java
@@ -58,9 +58,11 @@ public class QualityGateUpdater {
QualityGateDto destinationGate = create(dbSession, organizationDto, destinationName);
for (QualityGateConditionDto sourceCondition : dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGateDto.getId())) {
- dbClient.gateConditionDao().insert(new QualityGateConditionDto().setQualityGateId(destinationGate.getId())
- .setMetricId(sourceCondition.getMetricId()).setOperator(sourceCondition.getOperator())
- .setWarningThreshold(sourceCondition.getWarningThreshold()).setErrorThreshold(sourceCondition.getErrorThreshold()),
+ dbClient.gateConditionDao().insert(new QualityGateConditionDto()
+ .setQualityGateId(destinationGate.getId())
+ .setMetricId(sourceCondition.getMetricId())
+ .setOperator(sourceCondition.getOperator())
+ .setErrorThreshold(sourceCondition.getErrorThreshold()),
dbSession);
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
index 618972c7301..35e0af5fff2 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
import org.picocontainer.Startable;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.log.Logger;
@@ -129,7 +128,7 @@ public class RegisterQualityGates implements Startable {
List<QualityGateCondition> qgConditionsToBeCreated = new ArrayList<>(QUALITY_GATE_CONDITIONS);
qgConditionsToBeCreated.removeAll(qualityGateConditions);
qgConditionsToBeCreated
- .forEach(qgc -> qualityGateConditionsUpdater.createCondition(dbSession, builtin, qgc.getMetricKey(), qgc.getOperator(), qgc.getWarningThreshold(),
+ .forEach(qgc -> qualityGateConditionsUpdater.createCondition(dbSession, builtin, qgc.getMetricKey(), qgc.getOperator(),
qgc.getErrorThreshold()));
if (!qgConditionsToBeCreated.isEmpty() || !qgConditionsToBeDeleted.isEmpty()) {
@@ -155,7 +154,6 @@ public class RegisterQualityGates implements Startable {
private Long id;
private String metricKey;
private String operator;
- private String warningThreshold;
private String errorThreshold;
public static QualityGateCondition from(QualityGateConditionDto qualityGateConditionDto, Map<Long, String> mapping) {
@@ -163,8 +161,7 @@ public class RegisterQualityGates implements Startable {
.setId(qualityGateConditionDto.getId())
.setMetricKey(mapping.get(qualityGateConditionDto.getMetricId()))
.setOperator(qualityGateConditionDto.getOperator())
- .setErrorThreshold(qualityGateConditionDto.getErrorThreshold())
- .setWarningThreshold(qualityGateConditionDto.getWarningThreshold());
+ .setErrorThreshold(qualityGateConditionDto.getErrorThreshold());
}
@CheckForNull
@@ -195,22 +192,11 @@ public class RegisterQualityGates implements Startable {
return this;
}
- @CheckForNull
- public String getWarningThreshold() {
- return warningThreshold;
- }
-
- public QualityGateCondition setWarningThreshold(@Nullable String warningThreshold) {
- this.warningThreshold = warningThreshold;
- return this;
- }
-
- @CheckForNull
public String getErrorThreshold() {
return errorThreshold;
}
- public QualityGateCondition setErrorThreshold(@Nullable String errorThreshold) {
+ public QualityGateCondition setErrorThreshold(String errorThreshold) {
this.errorThreshold = errorThreshold;
return this;
}
@@ -221,7 +207,6 @@ public class RegisterQualityGates implements Startable {
.setMetricKey(metricKey)
.setOperator(operator)
.setErrorThreshold(errorThreshold)
- .setWarningThreshold(warningThreshold)
.setQualityGateId(qualityGateId);
}
@@ -237,14 +222,13 @@ public class RegisterQualityGates implements Startable {
QualityGateCondition that = (QualityGateCondition) o;
return Objects.equals(metricKey, that.metricKey) &&
Objects.equals(operator, that.operator) &&
- Objects.equals(warningThreshold, that.warningThreshold) &&
Objects.equals(errorThreshold, that.errorThreshold);
}
// id does not belongs to hashcode to be able to be compared with builtin
@Override
public int hashCode() {
- return Objects.hash(metricKey, operator, warningThreshold, errorThreshold);
+ return Objects.hash(metricKey, operator, errorThreshold);
}
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
index e7b33e65029..39e8cb5c902 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
@@ -19,6 +19,7 @@
*/
package org.sonar.server.qualitygate.ws;
+import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
@@ -38,7 +39,6 @@ import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERR
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_WARNING;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
public class CreateConditionAction implements QualityGatesWsAction {
@@ -61,6 +61,10 @@ public class CreateConditionAction implements QualityGatesWsAction {
"Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setResponseExample(getClass().getResource("create-condition-example.json"))
+ .setChangelog(
+ new Change("7.6", "Removed optional 'warning' and 'period' parameters"),
+ new Change("7.6", "Made 'error' parameter mandatory"),
+ new Change("7.6", "Reduced the possible values of 'op' parameter to LT and GT"))
.setHandler(this);
createCondition
@@ -78,20 +82,18 @@ public class CreateConditionAction implements QualityGatesWsAction {
int gateId = request.mandatoryParamAsInt(PARAM_GATE_ID);
String metric = request.mandatoryParam(PARAM_METRIC);
String operator = request.mandatoryParam(PARAM_OPERATOR);
- String warning = request.param(PARAM_WARNING);
- String error = request.param(PARAM_ERROR);
+ String error = request.mandatoryParam(PARAM_ERROR);
try (DbSession dbSession = dbClient.openSession(false)) {
OrganizationDto organization = wsSupport.getOrganization(dbSession, request);
QGateWithOrgDto qualityGate = wsSupport.getByOrganizationAndId(dbSession, organization, gateId);
wsSupport.checkCanEdit(qualityGate);
- QualityGateConditionDto condition = qualityGateConditionsUpdater.createCondition(dbSession, qualityGate, metric, operator, emptyToNull(warning), emptyToNull(error));
+ QualityGateConditionDto condition = qualityGateConditionsUpdater.createCondition(dbSession, qualityGate, metric, operator, error);
CreateConditionResponse.Builder createConditionResponse = CreateConditionResponse.newBuilder()
.setId(condition.getId())
.setMetric(condition.getMetricKey())
+ .setError(condition.getErrorThreshold())
.setOp(condition.getOperator());
- setNullable(condition.getWarningThreshold(), createConditionResponse::setWarning);
- setNullable(condition.getErrorThreshold(), createConditionResponse::setError);
writeProtobuf(createConditionResponse.build(), request, response);
dbSession.commit();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ProjectStatusAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ProjectStatusAction.java
index ebb87894ae3..0284864ba8a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ProjectStatusAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ProjectStatusAction.java
@@ -87,6 +87,7 @@ public class ProjectStatusAction implements QualityGatesWsAction {
.setSince("5.3")
.setHandler(this)
.setChangelog(
+ new Change("7.6", "The field 'warning' is deprecated from the response"),
new Change("6.4", "The field 'ignoredConditions' is added to the response"));
action.createParam(PARAM_ANALYSIS_ID)
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWs.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWs.java
index db59f7e7bb3..456c5c4b8cf 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWs.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWs.java
@@ -30,7 +30,7 @@ import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.CONTROLLE
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_WARNING;
+
public class QualityGatesWs implements WebService {
@@ -84,14 +84,10 @@ public class QualityGatesWs implements WebService {
.setExampleValue(QualityGateConditionDto.OPERATOR_EQUALS)
.setPossibleValues(QualityGateConditionDto.ALL_OPERATORS);
- action.createParam(PARAM_WARNING)
- .setMaximumLength(CONDITION_MAX_LENGTH)
- .setDescription("Condition warning threshold")
- .setExampleValue("5");
-
action.createParam(PARAM_ERROR)
.setMaximumLength(CONDITION_MAX_LENGTH)
.setDescription("Condition error threshold")
+ .setRequired(true)
.setExampleValue("10");
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java
index fd903ae8921..f5d763635fb 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java
@@ -39,7 +39,6 @@ public class QualityGatesWsParameters {
public static final String PARAM_QUERY = "query";
public static final String PARAM_NAME = "name";
public static final String PARAM_ERROR = "error";
- public static final String PARAM_WARNING = "warning";
public static final String PARAM_OPERATOR = "op";
public static final String PARAM_METRIC = "metric";
public static final String PARAM_GATE_ID = "gateId";
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
index 67971cf1259..ac20ac8c1d4 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
@@ -68,6 +68,7 @@ public class ShowAction implements QualityGatesWsAction {
.setSince("4.3")
.setResponseExample(Resources.getResource(this.getClass(), "show-example.json"))
.setChangelog(
+ new Change("7.6", "'period' and 'warning' fields of conditions are removed from the response"),
new Change("7.0", "'isBuiltIn' field is added to the response"),
new Change("7.0", "'actions' field is added in the response"))
.setHandler(this);
@@ -143,7 +144,6 @@ public class ShowAction implements QualityGatesWsAction {
.setMetric(metric.getKey())
.setOp(condition.getOperator());
setNullable(condition.getErrorThreshold(), builder::setError);
- setNullable(condition.getWarningThreshold(), builder::setWarning);
return builder.build();
};
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
index fea9a68f475..0c51ba99428 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
@@ -19,6 +19,7 @@
*/
package org.sonar.server.qualitygate.ws;
+import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
@@ -39,7 +40,6 @@ import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERR
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_WARNING;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
public class UpdateConditionAction implements QualityGatesWsAction {
@@ -61,6 +61,10 @@ public class UpdateConditionAction implements QualityGatesWsAction {
"Requires the 'Administer Quality Gates' permission.")
.setPost(true)
.setSince("4.3")
+ .setChangelog(
+ new Change("7.6", "Removed optional 'warning' and 'period' parameters"),
+ new Change("7.6", "Made 'error' parameter mandatory"),
+ new Change("7.6", "Reduced the possible values of 'op' parameter to LT and GT"))
.setHandler(this);
createCondition
@@ -78,8 +82,7 @@ public class UpdateConditionAction implements QualityGatesWsAction {
int id = request.mandatoryParamAsInt(PARAM_ID);
String metric = request.mandatoryParam(PARAM_METRIC);
String operator = request.mandatoryParam(PARAM_OPERATOR);
- String warning = request.param(PARAM_WARNING);
- String error = request.param(PARAM_ERROR);
+ String error = request.mandatoryParam(PARAM_ERROR);
try (DbSession dbSession = dbClient.openSession(false)) {
OrganizationDto organization = wsSupport.getOrganization(dbSession, request);
@@ -87,14 +90,12 @@ public class UpdateConditionAction implements QualityGatesWsAction {
QGateWithOrgDto qualityGateDto = dbClient.qualityGateDao().selectByOrganizationAndId(dbSession, organization, condition.getQualityGateId());
checkState(qualityGateDto != null, "Condition '%s' is linked to an unknown quality gate '%s'", id, condition.getQualityGateId());
wsSupport.checkCanEdit(qualityGateDto);
- QualityGateConditionDto updatedCondition = qualityGateConditionsUpdater.updateCondition(dbSession, condition, metric, operator,
- emptyToNull(warning), emptyToNull(error));
+ QualityGateConditionDto updatedCondition = qualityGateConditionsUpdater.updateCondition(dbSession, condition, metric, operator, error);
UpdateConditionResponse.Builder updateConditionResponse = UpdateConditionResponse.newBuilder()
.setId(updatedCondition.getId())
.setMetric(updatedCondition.getMetricKey())
+ .setError(updatedCondition.getErrorThreshold())
.setOp(updatedCondition.getOperator());
- setNullable(updatedCondition.getWarningThreshold(), updateConditionResponse::setWarning);
- setNullable(updatedCondition.getErrorThreshold(), updateConditionResponse::setError);
writeProtobuf(updateConditionResponse.build(), request, response);
dbSession.commit();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/util/MetricLevelTypeValidation.java b/server/sonar-server/src/main/java/org/sonar/server/util/MetricLevelTypeValidation.java
index 28879a2a687..ba8598a7786 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/util/MetricLevelTypeValidation.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/util/MetricLevelTypeValidation.java
@@ -38,7 +38,7 @@ public class MetricLevelTypeValidation implements TypeValidation {
try {
Metric.Level.valueOf(value);
} catch (IllegalArgumentException e) {
- throw BadRequestException.create(format("Value '%s' must be one of \"OK\", \"WARN\", \"ERROR\".", value));
+ throw BadRequestException.create(format("Value '%s' must be one of \"OK\", \"ERROR\".", value));
}
}
}
diff --git a/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/project_status-example.json b/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/project_status-example.json
index 946f9c4fdb3..e5c5610b29d 100644
--- a/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/project_status-example.json
+++ b/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/project_status-example.json
@@ -40,15 +40,13 @@
"metricKey": "reopened_issues",
"comparator": "GT",
"periodIndex": 1,
- "warningThreshold": "0",
"actualValue": "0"
},
{
- "status": "WARN",
+ "status": "ERROR",
"metricKey": "open_issues",
"comparator": "GT",
"periodIndex": 1,
- "warningThreshold": "0",
"actualValue": "17"
},
{
@@ -56,7 +54,6 @@
"metricKey": "skipped_tests",
"comparator": "GT",
"periodIndex": 1,
- "warningThreshold": "0",
"actualValue": "0"
}
],
diff --git a/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/show-example.json b/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/show-example.json
index 6b9d436343e..0e2b63cc310 100644
--- a/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/show-example.json
+++ b/server/sonar-server/src/main/resources/org/sonar/server/qualitygate/ws/show-example.json
@@ -10,9 +10,9 @@
},
{
"id": 3,
- "metric": "critical_violations",
+ "metric": "tests",
"op": "LT",
- "warning": "0"
+ "error": "10"
}
],
"isBuiltIn": false,
diff --git a/server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java
index a4b62766680..b730b064e48 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java
@@ -57,7 +57,6 @@ import static org.sonar.api.measures.CoreMetrics.SQALE_RATING_KEY;
import static org.sonar.api.measures.CoreMetrics.TECHNICAL_DEBT_KEY;
import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.api.measures.Metric.Level.OK;
-import static org.sonar.api.measures.Metric.Level.WARN;
import static org.sonar.api.measures.Metric.ValueType.INT;
import static org.sonar.api.measures.Metric.ValueType.LEVEL;
import static org.sonar.api.measures.Metric.ValueType.PERCENT;
@@ -69,7 +68,6 @@ import static org.sonar.db.component.BranchType.SHORT;
import static org.sonar.server.badge.ws.SvgGenerator.Color.DEFAULT;
import static org.sonar.server.badge.ws.SvgGenerator.Color.QUALITY_GATE_ERROR;
import static org.sonar.server.badge.ws.SvgGenerator.Color.QUALITY_GATE_OK;
-import static org.sonar.server.badge.ws.SvgGenerator.Color.QUALITY_GATE_WARN;
@RunWith(DataProviderRunner.class)
public class MeasureActionTest {
@@ -177,7 +175,6 @@ public class MeasureActionTest {
public static Object[][] qualityGates() {
return new Object[][] {
{OK, "passed", QUALITY_GATE_OK},
- {WARN, "warning", QUALITY_GATE_WARN},
{ERROR, "failed", QUALITY_GATE_ERROR}
};
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/badge/ws/QualityGateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/badge/ws/QualityGateActionTest.java
index 2e76b636267..d1897463493 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/badge/ws/QualityGateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/badge/ws/QualityGateActionTest.java
@@ -48,7 +48,6 @@ import static org.assertj.core.api.Assertions.tuple;
import static org.sonar.api.measures.CoreMetrics.ALERT_STATUS_KEY;
import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.api.measures.Metric.Level.OK;
-import static org.sonar.api.measures.Metric.Level.WARN;
import static org.sonar.api.measures.Metric.ValueType.LEVEL;
import static org.sonar.api.web.UserRole.USER;
import static org.sonar.db.component.BranchType.LONG;
@@ -85,20 +84,6 @@ public class QualityGateActionTest {
}
@Test
- public void quality_gate_warn() {
- ComponentDto project = db.components().insertPublicProject();
- userSession.registerComponents(project);
- MetricDto metric = createQualityGateMetric();
- db.measures().insertLiveMeasure(project, metric, m -> m.setData(WARN.name()));
-
- TestResponse response = ws.newRequest()
- .setParam("project", project.getKey())
- .execute();
-
- checkResponse(response, WARN);
- }
-
- @Test
public void quality_gate_failed() {
ComponentDto project = db.components().insertPublicProject();
userSession.registerComponents(project);
@@ -124,16 +109,6 @@ public class QualityGateActionTest {
.execute();
String eTagOK = response.getHeader("ETag");
- liveMeasure.setData(WARN.name());
- db.getDbClient().liveMeasureDao().insertOrUpdate(db.getSession(), liveMeasure);
- db.commit();
-
- response = ws.newRequest()
- .setParam("project", project.getKey())
- .execute();
-
- String eTagWARN = response.getHeader("ETag");
-
liveMeasure.setData(ERROR.name());
db.getDbClient().liveMeasureDao().insertOrUpdate(db.getSession(), liveMeasure);
db.commit();
@@ -144,7 +119,7 @@ public class QualityGateActionTest {
String eTagERROR = response.getHeader("ETag");
- assertThat(Arrays.asList(eTagOK, eTagWARN, eTagERROR))
+ assertThat(Arrays.asList(eTagOK, eTagERROR))
.doesNotContainNull()
.doesNotHaveDuplicates();
}
@@ -177,14 +152,14 @@ public class QualityGateActionTest {
MetricDto metric = createQualityGateMetric();
db.measures().insertLiveMeasure(project, metric, m -> m.setData(OK.name()));
ComponentDto longBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(LONG));
- db.measures().insertLiveMeasure(longBranch, metric, m -> m.setData(WARN.name()));
+ db.measures().insertLiveMeasure(longBranch, metric, m -> m.setData(ERROR.name()));
TestResponse response = ws.newRequest()
.setParam("project", longBranch.getKey())
.setParam("branch", longBranch.getBranch())
.execute();
- checkResponse(response, WARN);
+ checkResponse(response, ERROR);
}
@Test
@@ -193,13 +168,13 @@ public class QualityGateActionTest {
ComponentDto application = db.components().insertPublicApplication(organization);
userSession.registerComponents(application);
MetricDto metric = createQualityGateMetric();
- db.measures().insertLiveMeasure(application, metric, m -> m.setData(WARN.name()));
+ db.measures().insertLiveMeasure(application, metric, m -> m.setData(ERROR.name()));
TestResponse response = ws.newRequest()
.setParam("project", application.getKey())
.execute();
- checkResponse(response, WARN);
+ checkResponse(response, ERROR);
}
@Test
@@ -356,9 +331,6 @@ public class QualityGateActionTest {
case OK:
assertThat(response.getInput()).contains("<!-- SONARQUBE QUALITY GATE PASS -->");
break;
- case WARN:
- assertThat(response.getInput()).contains("<!-- SONARQUBE QUALITY GATE WARN -->");
- break;
case ERROR:
assertThat(response.getInput()).contains("<!-- SONARQUBE QUALITY GATE FAIL -->");
break;
diff --git a/server/sonar-server/src/test/java/org/sonar/server/badge/ws/SvgGeneratorTest.java b/server/sonar-server/src/test/java/org/sonar/server/badge/ws/SvgGeneratorTest.java
index a0261f079b3..2cae011851e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/badge/ws/SvgGeneratorTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/badge/ws/SvgGeneratorTest.java
@@ -31,7 +31,7 @@ import org.sonar.server.tester.UserSessionRule;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.api.measures.Metric.Level.WARN;
+import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.server.badge.ws.SvgGenerator.Color.DEFAULT;
public class SvgGeneratorTest {
@@ -62,9 +62,9 @@ public class SvgGeneratorTest {
mapSettings.setProperty("sonar.sonarcloud.enabled", false);
initSvgGenerator();
- String result = underTest.generateQualityGate(WARN);
+ String result = underTest.generateQualityGate(ERROR);
- checkQualityGate(result, WARN);
+ checkQualityGate(result, ERROR);
}
@Test
@@ -103,9 +103,6 @@ public class SvgGeneratorTest {
case OK:
assertThat(response).isEqualTo(readTemplate("quality_gate_passed.svg"));
break;
- case WARN:
- assertThat(response).isEqualTo(readTemplate("quality_gate_warn.svg"));
- break;
case ERROR:
assertThat(response).isEqualTo(readTemplate("quality_gate_failed.svg"));
break;
diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
index 43f67a31909..21507e936b0 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
@@ -970,14 +970,14 @@ public class SearchProjectsActionTest {
OrganizationDto organization = db.organizations().insert();
MetricDto qualityGateStatus = db.measures().insertMetric(c -> c.setKey(QUALITY_GATE_STATUS).setValueType(LEVEL.name()));
ComponentDto project1 = insertProject(organization, c -> c.setName("Sonar Java"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
- ComponentDto project2 = insertProject(organization, c -> c.setName("Sonar Groovy"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("WARN")));
+ ComponentDto project2 = insertProject(organization, c -> c.setName("Sonar Groovy"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
ComponentDto project3 = insertProject(organization, c -> c.setName("Sonar Markdown"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
ComponentDto project4 = insertProject(organization, c -> c.setName("Sonar Qube"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
assertThat(call(request.setSort(QUALITY_GATE_STATUS).setAsc(true)).getComponentsList()).extracting(Component::getKey)
.containsExactly(project3.getDbKey(), project4.getDbKey(), project2.getDbKey(), project1.getDbKey());
assertThat(call(request.setSort(QUALITY_GATE_STATUS).setAsc(false)).getComponentsList()).extracting(Component::getKey)
- .containsExactly(project1.getDbKey(), project2.getDbKey(), project3.getDbKey(), project4.getDbKey());
+ .containsExactly(project2.getDbKey(), project1.getDbKey(), project3.getDbKey(), project4.getDbKey());
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java
index caef2d96e77..26a42f9fad1 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java
@@ -206,12 +206,12 @@ public class CreateActionTest {
ws.newRequest()
.setParam(CreateAction.PARAM_PROJECT_ID, project.uuid())
.setParam(CreateAction.PARAM_METRIC_ID, metric.getId().toString())
- .setParam(CreateAction.PARAM_VALUE, Metric.Level.WARN.name())
+ .setParam(CreateAction.PARAM_VALUE, Metric.Level.ERROR.name())
.execute();
assertThat(db.getDbClient().customMeasureDao().selectByMetricId(db.getSession(), metric.getId()))
.extracting(CustomMeasureDto::getDescription, CustomMeasureDto::getTextValue, CustomMeasureDto::getValue, CustomMeasureDto::getComponentUuid)
- .containsExactlyInAnyOrder(tuple(null, Metric.Level.WARN.name(), 0d, project.uuid()));
+ .containsExactlyInAnyOrder(tuple(null, Metric.Level.ERROR.name(), 0d, project.uuid()));
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java
index 6c3094a9807..d9d8b8fe7ea 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java
@@ -28,7 +28,7 @@ import org.sonar.server.exceptions.BadRequestException;
import org.sonar.db.measure.custom.CustomMeasureTesting;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.api.measures.Metric.Level.WARN;
+import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.api.measures.Metric.ValueType.BOOL;
import static org.sonar.api.measures.Metric.ValueType.FLOAT;
import static org.sonar.api.measures.Metric.ValueType.INT;
@@ -82,9 +82,9 @@ public class CustomMeasureValidatorTest {
@Test
public void set_level_value() {
- underTest.setMeasureValue(customMeasure, WARN.name(), newMetricDto().setValueType(LEVEL.name()));
+ underTest.setMeasureValue(customMeasure, ERROR.name(), newMetricDto().setValueType(LEVEL.name()));
- assertThat(customMeasure.getTextValue()).isEqualTo(WARN.name());
+ assertThat(customMeasure.getTextValue()).isEqualTo(ERROR.name());
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java
index cd5272a9ddb..639bdaff952 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java
@@ -62,7 +62,6 @@ import static org.sonar.api.measures.CoreMetrics.ALERT_STATUS_KEY;
import static org.sonar.api.measures.CoreMetrics.COVERAGE_KEY;
import static org.sonar.api.measures.Metric.Level.ERROR;
import static org.sonar.api.measures.Metric.Level.OK;
-import static org.sonar.api.measures.Metric.Level.WARN;
import static org.sonar.api.resources.Qualifiers.PROJECT;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
import static org.sonar.db.user.GroupTesting.newGroupDto;
@@ -173,11 +172,10 @@ public class ProjectMeasuresIndexTest {
index(
newDoc(PROJECT1).setQualityGateStatus(OK.name()),
newDoc(PROJECT2).setQualityGateStatus(ERROR.name()),
- newDoc(PROJECT3).setQualityGateStatus(WARN.name()),
newDoc(project4).setQualityGateStatus(OK.name()));
- assertResults(new ProjectMeasuresQuery().setSort("alert_status").setAsc(true), PROJECT1, project4, PROJECT3, PROJECT2);
- assertResults(new ProjectMeasuresQuery().setSort("alert_status").setAsc(false), PROJECT2, PROJECT3, PROJECT1, project4);
+ assertResults(new ProjectMeasuresQuery().setSort("alert_status").setAsc(true), PROJECT1, project4, PROJECT2);
+ assertResults(new ProjectMeasuresQuery().setSort("alert_status").setAsc(false), PROJECT2, PROJECT1, project4);
}
@Test
@@ -187,7 +185,7 @@ public class ProjectMeasuresIndexTest {
ComponentDto apache1 = ComponentTesting.newPrivateProjectDto(ORG).setUuid("apache-1").setName("Apache").setDbKey("project3");
ComponentDto apache2 = ComponentTesting.newPrivateProjectDto(ORG).setUuid("apache-2").setName("Apache").setDbKey("project4");
index(
- newDoc(windows).setQualityGateStatus(WARN.name()),
+ newDoc(windows).setQualityGateStatus(ERROR.name()),
newDoc(apachee).setQualityGateStatus(OK.name()),
newDoc(apache1).setQualityGateStatus(OK.name()),
newDoc(apache2).setQualityGateStatus(OK.name()));
@@ -335,7 +333,7 @@ public class ProjectMeasuresIndexTest {
index(
newDoc(PROJECT1).setQualityGateStatus(OK.name()),
newDoc(PROJECT2).setQualityGateStatus(OK.name()),
- newDoc(PROJECT3).setQualityGateStatus(WARN.name()));
+ newDoc(PROJECT3).setQualityGateStatus(ERROR.name()));
ProjectMeasuresQuery query = new ProjectMeasuresQuery().setQualityGateStatus(OK);
assertResults(query, PROJECT1, PROJECT2);
@@ -1041,10 +1039,6 @@ public class ProjectMeasuresIndexTest {
// 2 docs with QG OK
newDoc().setQualityGateStatus(OK.name()),
newDoc().setQualityGateStatus(OK.name()),
- // 3 docs with QG WARN
- newDoc().setQualityGateStatus(WARN.name()),
- newDoc().setQualityGateStatus(WARN.name()),
- newDoc().setQualityGateStatus(WARN.name()),
// 4 docs with QG ERROR
newDoc().setQualityGateStatus(ERROR.name()),
newDoc().setQualityGateStatus(ERROR.name()),
@@ -1055,7 +1049,6 @@ public class ProjectMeasuresIndexTest {
assertThat(result).containsOnly(
entry(ERROR.name(), 4L),
- entry(WARN.name(), 3L),
entry(OK.name(), 2L));
}
@@ -1065,10 +1058,6 @@ public class ProjectMeasuresIndexTest {
// 2 docs with QG OK
newDoc(NCLOC, 10d, COVERAGE, 0d).setQualityGateStatus(OK.name()),
newDoc(NCLOC, 10d, COVERAGE, 0d).setQualityGateStatus(OK.name()),
- // 3 docs with QG WARN
- newDoc(NCLOC, 100d, COVERAGE, 0d).setQualityGateStatus(WARN.name()),
- newDoc(NCLOC, 100d, COVERAGE, 0d).setQualityGateStatus(WARN.name()),
- newDoc(NCLOC, 100d, COVERAGE, 0d).setQualityGateStatus(WARN.name()),
// 4 docs with QG ERROR
newDoc(NCLOC, 100d, COVERAGE, 0d).setQualityGateStatus(ERROR.name()),
newDoc(NCLOC, 5000d, COVERAGE, 40d).setQualityGateStatus(ERROR.name()),
@@ -1083,7 +1072,6 @@ public class ProjectMeasuresIndexTest {
// Sticky facet on quality gate does not take into account quality gate filter
assertThat(facets.get(ALERT_STATUS_KEY)).containsOnly(
entry(OK.name(), 2L),
- entry(WARN.name(), 3L),
entry(ERROR.name(), 3L));
// But facet on ncloc does well take into into filters
assertThat(facets.get(NCLOC)).containsExactly(
@@ -1100,11 +1088,7 @@ public class ProjectMeasuresIndexTest {
indexForUser(USER1,
// 2 docs with QG OK
newDoc().setQualityGateStatus(OK.name()),
- newDoc().setQualityGateStatus(OK.name()),
- // 3 docs with QG WARN
- newDoc().setQualityGateStatus(WARN.name()),
- newDoc().setQualityGateStatus(WARN.name()),
- newDoc().setQualityGateStatus(WARN.name()));
+ newDoc().setQualityGateStatus(OK.name()));
// User cannot see these projects
indexForUser(USER2,
@@ -1119,7 +1103,6 @@ public class ProjectMeasuresIndexTest {
assertThat(result).containsOnly(
entry(ERROR.name(), 0L),
- entry(WARN.name(), 3L),
entry(OK.name(), 2L));
}
@@ -1252,7 +1235,7 @@ public class ProjectMeasuresIndexTest {
index(
newDoc().setTags(newArrayList("finance")).setQualityGateStatus(OK.name()),
newDoc().setTags(newArrayList("finance")).setQualityGateStatus(ERROR.name()),
- newDoc().setTags(newArrayList("cpp")).setQualityGateStatus(WARN.name()));
+ newDoc().setTags(newArrayList("cpp")).setQualityGateStatus(ERROR.name()));
Facets facets = underTest.search(
new ProjectMeasuresQuery().setTags(newHashSet("cpp")),
@@ -1264,8 +1247,7 @@ public class ProjectMeasuresIndexTest {
entry("cpp", 1L));
assertThat(facets.get(ALERT_STATUS_KEY)).containsOnly(
entry(OK.name(), 0L),
- entry(ERROR.name(), 0L),
- entry(WARN.name(), 1L));
+ entry(ERROR.name(), 1L));
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java
index f04b8fc0db0..be254749f57 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java
@@ -330,7 +330,7 @@ public class LiveMeasureComputerImplTest {
@Test
public void event_contains_newQualityGate_computed_by_LiveQualityGateComputer() {
markProjectAsAnalyzed(project);
- db.measures().insertLiveMeasure(project, alertStatusMetric, m -> m.setData(Metric.Level.WARN.name()));
+ db.measures().insertLiveMeasure(project, alertStatusMetric, m -> m.setData(Metric.Level.ERROR.name()));
db.measures().insertLiveMeasure(project, intMetric, m -> m.setVariation(42.0).setValue(null));
BranchDto branch = db.getDbClient().branchDao().selectByBranchKey(db.getSession(), project.projectUuid(), "master")
.orElseThrow(() -> new IllegalStateException("Can't find master branch"));
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveQualityGateComputerImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveQualityGateComputerImplTest.java
index 158b38f942c..5e96dc14446 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveQualityGateComputerImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveQualityGateComputerImplTest.java
@@ -107,14 +107,14 @@ public class LiveQualityGateComputerImplTest {
assertThat(result.getId()).isEqualTo("" + gate.getId());
assertThat(result.getConditions())
- .extracting(Condition::getMetricKey, Condition::getOperator, c -> c.getErrorThreshold().get(), c -> c.getWarningThreshold().get())
+ .extracting(Condition::getMetricKey, Condition::getOperator, Condition::getErrorThreshold)
.containsExactlyInAnyOrder(
- tuple(metric.getKey(), Condition.Operator.fromDbValue(condition.getOperator()), condition.getErrorThreshold(), condition.getWarningThreshold()));
+ tuple(metric.getKey(), Condition.Operator.fromDbValue(condition.getOperator()), condition.getErrorThreshold()));
}
@Test
public void getMetricsRelatedTo() {
- Condition condition = new Condition("metric1", Condition.Operator.EQUALS, "10", null);
+ Condition condition = new Condition("metric1", Condition.Operator.EQUALS, "10");
QualityGate gate = new QualityGate("1", "foo", ImmutableSet.of(condition));
Set<String> result = underTest.getMetricsRelatedTo(gate);
@@ -132,7 +132,7 @@ public class LiveQualityGateComputerImplTest {
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", null);
+ 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());
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeSortTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeSortTest.java
index 8f179406c60..4bcc338208d 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeSortTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeSortTest.java
@@ -154,19 +154,17 @@ public class ComponentTreeSortTest {
public void sort_by_alert_status_ascending() {
components = newArrayList(
newComponentWithoutSnapshotId("PROJECT OK 1", Qualifiers.PROJECT, "PROJECT_OK_PATH_1"),
- newComponentWithoutSnapshotId("PROJECT WARN 1", Qualifiers.PROJECT, "PROJECT_WARN_PATH_1"),
newComponentWithoutSnapshotId("PROJECT ERROR 1", Qualifiers.PROJECT, "PROJECT_ERROR_PATH_1"),
newComponentWithoutSnapshotId("PROJECT OK 2", Qualifiers.PROJECT, "PROJECT_OK_PATH_2"),
- newComponentWithoutSnapshotId("PROJECT WARN 2", Qualifiers.PROJECT, "PROJECT_WARN_PATH_2"),
newComponentWithoutSnapshotId("PROJECT ERROR 2", Qualifiers.PROJECT, "PROJECT_ERROR_PATH_2"));
metrics = singletonList(newMetricDto()
.setKey(CoreMetrics.ALERT_STATUS_KEY)
.setValueType(ValueType.LEVEL.name()));
measuresByComponentUuidAndMetric = HashBasedTable.create();
- List<String> statuses = newArrayList("OK", "WARN", "ERROR");
+ List<String> statuses = newArrayList("OK", "ERROR");
for (int i = 0; i < components.size(); i++) {
ComponentDto component = components.get(i);
- String alertStatus = statuses.get(i % 3);
+ String alertStatus = statuses.get(i % 2);
measuresByComponentUuidAndMetric.put(component.uuid(), metrics.get(0), createFromMeasureDto(new LiveMeasureDto().setData(alertStatus)));
}
ComponentTreeRequest wsRequest = newRequest(newArrayList(METRIC_SORT, NAME_SORT), true, CoreMetrics.ALERT_STATUS_KEY);
@@ -175,7 +173,6 @@ public class ComponentTreeSortTest {
assertThat(result).extracting("name").containsExactly(
"PROJECT ERROR 1", "PROJECT ERROR 2",
- "PROJECT WARN 1", "PROJECT WARN 2",
"PROJECT OK 1", "PROJECT OK 2");
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/notification/email/AlertsEmailTemplateTest.java b/server/sonar-server/src/test/java/org/sonar/server/notification/email/AlertsEmailTemplateTest.java
index 93b72ff7d02..164abbbaf72 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/notification/email/AlertsEmailTemplateTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/notification/email/AlertsEmailTemplateTest.java
@@ -51,7 +51,7 @@ public class AlertsEmailTemplateTest {
@Test
public void shouldFormatAlertWithSeveralMessages() {
- Notification notification = createNotification("Orange (was Red)", "violations > 4, coverage < 75%", "WARN", "false");
+ Notification notification = createNotification("Red (was Green)", "violations > 4, coverage < 75%", "ERROR", "false");
EmailMessage message = template.format(notification);
assertThat(message.getMessageId(), is("alerts/45"));
@@ -59,7 +59,7 @@ public class AlertsEmailTemplateTest {
assertThat(message.getMessage(), is("" +
"Project: Foo\n" +
"Version: V1-SNAP\n" +
- "Quality gate status: Orange (was Red)\n" +
+ "Quality gate status: Red (was Green)\n" +
"\n" +
"Quality gate thresholds:\n" +
" - violations > 4\n" +
@@ -70,7 +70,7 @@ public class AlertsEmailTemplateTest {
@Test
public void shouldFormatAlertWithSeveralMessagesOnBranch() {
- Notification notification = createNotification("Orange (was Red)", "violations > 4, coverage < 75%", "WARN", "false")
+ Notification notification = createNotification("Red (was Green)", "violations > 4, coverage < 75%", "ERROR", "false")
.setFieldValue("branch", "feature");
EmailMessage message = template.format(notification);
@@ -80,7 +80,7 @@ public class AlertsEmailTemplateTest {
"Project: Foo\n" +
"Branch: feature\n" +
"Version: V1-SNAP\n" +
- "Quality gate status: Orange (was Red)\n" +
+ "Quality gate status: Red (was Green)\n" +
"\n" +
"Quality gate thresholds:\n" +
" - violations > 4\n" +
@@ -91,7 +91,7 @@ public class AlertsEmailTemplateTest {
@Test
public void shouldFormatNewAlertWithSeveralMessages() {
- Notification notification = createNotification("Orange (was Red)", "violations > 4, coverage < 75%", "WARN", "true");
+ Notification notification = createNotification("Red (was Green)", "violations > 4, coverage < 75%", "ERROR", "true");
EmailMessage message = template.format(notification);
assertThat(message.getMessageId(), is("alerts/45"));
@@ -99,7 +99,7 @@ public class AlertsEmailTemplateTest {
assertThat(message.getMessage(), is("" +
"Project: Foo\n" +
"Version: V1-SNAP\n" +
- "Quality gate status: Orange (was Red)\n" +
+ "Quality gate status: Red (was Green)\n" +
"\n" +
"New quality gate thresholds:\n" +
" - violations > 4\n" +
@@ -110,7 +110,7 @@ public class AlertsEmailTemplateTest {
@Test
public void shouldFormatNewAlertWithOneMessage() {
- Notification notification = createNotification("Orange (was Red)", "violations > 4", "WARN", "true");
+ Notification notification = createNotification("Red (was Green)", "violations > 4", "ERROR", "true");
EmailMessage message = template.format(notification);
assertThat(message.getMessageId(), is("alerts/45"));
@@ -118,7 +118,7 @@ public class AlertsEmailTemplateTest {
assertThat(message.getMessage(), is("" +
"Project: Foo\n" +
"Version: V1-SNAP\n" +
- "Quality gate status: Orange (was Red)\n" +
+ "Quality gate status: Red (was Green)\n" +
"\n" +
"New quality gate threshold: violations > 4\n" +
"\n" +
@@ -127,7 +127,7 @@ public class AlertsEmailTemplateTest {
@Test
public void shouldFormatNewAlertWithoutVersion() {
- Notification notification = createNotification("Orange (was Red)", "violations > 4", "WARN", "true")
+ Notification notification = createNotification("Red (was Green)", "violations > 4", "ERROR", "true")
.setFieldValue("projectVersion", null);
EmailMessage message = template.format(notification);
@@ -135,7 +135,7 @@ public class AlertsEmailTemplateTest {
assertThat(message.getSubject(), is("New quality gate threshold reached on \"Foo\""));
assertThat(message.getMessage(), is("" +
"Project: Foo\n" +
- "Quality gate status: Orange (was Red)\n" +
+ "Quality gate status: Red (was Green)\n" +
"\n" +
"New quality gate threshold: violations > 4\n" +
"\n" +
@@ -144,7 +144,7 @@ public class AlertsEmailTemplateTest {
@Test
public void shouldFormatNewAlertWithOneMessageOnBranch() {
- Notification notification = createNotification("Orange (was Red)", "violations > 4", "WARN", "true")
+ Notification notification = createNotification("Red (was Green)", "violations > 4", "ERROR", "true")
.setFieldValue("branch", "feature");
EmailMessage message = template.format(notification);
@@ -154,7 +154,7 @@ public class AlertsEmailTemplateTest {
"Project: Foo\n" +
"Branch: feature\n" +
"Version: V1-SNAP\n" +
- "Quality gate status: Orange (was Red)\n" +
+ "Quality gate status: Red (was Green)\n" +
"\n" +
"New quality gate threshold: violations > 4\n" +
"\n" +
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java
index bd2dc92bb51..2269165109d 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java
@@ -65,9 +65,20 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setKey("new_coverage").setValueType(INT.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
- QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "LT", null, "80");
+ QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "LT", "80");
- verifyCondition(result, qualityGate, metric, "LT", null, "80");
+ verifyCondition(result, qualityGate, metric, "LT", "80");
+ }
+
+ @Test
+ public void create_condition_throws_NPE_if_errorThreshold_is_null() {
+ MetricDto metric = db.measures().insertMetric(m -> m.setKey(SQALE_RATING_KEY).setValueType(RATING.name()).setHidden(false));
+ QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
+
+ expectedException.expect(NullPointerException.class);
+ expectedException.expectMessage("errorThreshold can not be null");
+
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", null);
}
@Test
@@ -79,7 +90,7 @@ public class QualityGateConditionsUpdaterTest {
expectedException.expect(BadRequestException.class);
expectedException.expectMessage(format("Condition on metric '%s' already exists.", metric.getShortName()));
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "LT", "90", null);
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "LT", "90");
}
@Test
@@ -89,7 +100,7 @@ public class QualityGateConditionsUpdaterTest {
expectedException.expect(NotFoundException.class);
expectedException.expectMessage("There is no metric with key=new_coverage");
- underTest.createCondition(db.getSession(), qualityGate, "new_coverage", "LT", null, "80");
+ underTest.createCondition(db.getSession(), qualityGate, "new_coverage", "LT", "80");
}
@Test
@@ -101,7 +112,7 @@ public class QualityGateConditionsUpdaterTest {
expectedException.expect(BadRequestException.class);
expectedException.expectMessage(format("Metric '%s' cannot be used to define a condition.", metric.getKey()));
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", null, "80");
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", "80");
}
@Test
@@ -112,7 +123,7 @@ public class QualityGateConditionsUpdaterTest {
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("Operator UNKNOWN is not allowed for metric type PERCENT.");
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "UNKNOWN", null, "80");
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "UNKNOWN", "90");
}
@Test
@@ -120,20 +131,9 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setKey(SQALE_RATING_KEY).setValueType(RATING.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
- QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", null, "3");
+ QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", "3");
- verifyCondition(result, qualityGate, metric, "GT", null, "3");
- }
-
- @Test
- public void fail_to_create_warning_condition_on_invalid_rating_metric() {
- MetricDto metric = db.measures().insertMetric(m -> m.setKey(SQALE_RATING_KEY).setValueType(RATING.name()).setHidden(false));
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
-
- expectedException.expect(BadRequestException.class);
- expectedException.expectMessage("'6' is not a valid rating");
-
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", "6", null);
+ verifyCondition(result, qualityGate, metric, "GT", "3");
}
@Test
@@ -144,7 +144,7 @@ public class QualityGateConditionsUpdaterTest {
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("'80' is not a valid rating");
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", null, "80");
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", "80");
}
@Test
@@ -155,18 +155,7 @@ public class QualityGateConditionsUpdaterTest {
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("There's no worse rating than E (5)");
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", "5", null);
- }
-
- @Test
- @UseDataProvider("valid_values")
- public void create_warning_condition(Metric.ValueType valueType, String value) {
- MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
-
- QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", value, null);
-
- verifyCondition(result, qualityGate, metric, "EQ", value, null);
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "GT", "5");
}
@Test
@@ -175,45 +164,46 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
- QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", null, value);
+ QualityGateConditionDto result = underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", value);
- verifyCondition(result, qualityGate, metric, "EQ", null, value);
+ verifyCondition(result, qualityGate, metric, "EQ", value);
}
@Test
@UseDataProvider("invalid_values")
- public void fail_to_create_warning_INT_condition_when_value_is_not_an_integer(Metric.ValueType valueType, String value) {
+ public void fail_to_create_error_INT_condition_when_value_is_not_an_integer(Metric.ValueType valueType, String value) {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
expectedException.expect(BadRequestException.class);
expectedException.expectMessage(format("Invalid value '%s' for metric '%s'", value, metric.getShortName()));
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", value, null);
+ underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", value);
}
@Test
- @UseDataProvider("invalid_values")
- public void fail_to_create_error_INT_condition_when_value_is_not_an_integer(Metric.ValueType valueType, String value) {
- MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
+ public void update_condition() {
+ MetricDto metric = db.measures().insertMetric(m -> m.setValueType(PERCENT.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
+ QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
+ c -> c.setOperator("LT").setErrorThreshold("80"));
- expectedException.expect(BadRequestException.class);
- expectedException.expectMessage(format("Invalid value '%s' for metric '%s'", value, metric.getShortName()));
+ QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "LT", "80");
- underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "EQ", null, value);
+ verifyCondition(result, qualityGate, metric, "LT", "80");
}
@Test
- public void update_condition() {
+ public void update_condition_throws_NPE_if_errorThreshold_is_null() {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(PERCENT.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("80"));
+ c -> c.setOperator("LT").setErrorThreshold("80"));
- QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "60", null);
+ expectedException.expect(NullPointerException.class);
+ expectedException.expectMessage("errorThreshold can not be null");
- verifyCondition(result, qualityGate, metric, "GT", "60", null);
+ underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", null);
}
@Test
@@ -221,11 +211,11 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setKey(SQALE_RATING_KEY).setValueType(RATING.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold("80").setErrorThreshold(null));
+ c -> c.setOperator("LT").setErrorThreshold("80"));
- QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "4", null);
+ QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "4");
- verifyCondition(result, qualityGate, metric, "GT", "4", null);
+ verifyCondition(result, qualityGate, metric, "GT", "4");
}
@Test
@@ -233,12 +223,12 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setKey("not_core_rating_metric").setValueType(RATING.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("3"));
+ c -> c.setOperator("LT").setErrorThreshold("3"));
expectedException.expect(BadRequestException.class);
expectedException.expectMessage(format("The metric '%s' cannot be used", metric.getShortName()));
- underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "4", null);
+ underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "4");
}
@Test
@@ -247,25 +237,12 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setKey(metricKey).setValueType(valueType.name()).setHidden(hidden));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("80"));
+ c -> c.setOperator("LT").setErrorThreshold("80"));
expectedException.expect(BadRequestException.class);
expectedException.expectMessage(format("Metric '%s' cannot be used to define a condition.", metric.getKey()));
- underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "60", null);
- }
-
- @Test
- @UseDataProvider("valid_values")
- public void update_warning_condition(Metric.ValueType valueType, String value) {
- MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
- QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("80"));
-
- QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "EQ", value, null);
-
- verifyCondition(result, qualityGate, metric, "EQ", value, null);
+ underTest.updateCondition(db.getSession(), condition, metric.getKey(), "GT", "60");
}
@Test
@@ -274,25 +251,11 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("80"));
+ c -> c.setOperator("LT").setErrorThreshold("80"));
- QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "EQ", null, value);
-
- verifyCondition(result, qualityGate, metric, "EQ", null, value);
- }
-
- @Test
- @UseDataProvider("invalid_values")
- public void fail_to_update_warning_INT_condition_when_value_is_not_an_integer(Metric.ValueType valueType, String value) {
- MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
- QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("80"));
-
- expectedException.expect(BadRequestException.class);
- expectedException.expectMessage(format("Invalid value '%s' for metric '%s'", value, metric.getShortName()));
+ QualityGateConditionDto result = underTest.updateCondition(db.getSession(), condition, metric.getKey(), "EQ", value);
- underTest.updateCondition(db.getSession(), condition, metric.getKey(), "EQ", value, null);
+ verifyCondition(result, qualityGate, metric, "EQ", value);
}
@Test
@@ -301,12 +264,12 @@ public class QualityGateConditionsUpdaterTest {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(valueType.name()).setHidden(false));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization());
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("LT").setWarningThreshold(null).setErrorThreshold("80"));
+ c -> c.setOperator("LT").setErrorThreshold("80"));
expectedException.expect(BadRequestException.class);
expectedException.expectMessage(format("Invalid value '%s' for metric '%s'", value, metric.getShortName()));
- underTest.updateCondition(db.getSession(), condition, metric.getKey(), "EQ", null, value);
+ underTest.updateCondition(db.getSession(), condition, metric.getKey(), "EQ", value);
}
@DataProvider
@@ -342,18 +305,16 @@ public class QualityGateConditionsUpdaterTest {
};
}
- private void verifyCondition(QualityGateConditionDto dto, QualityGateDto qualityGate, MetricDto metric, String operator, @Nullable String warning, @Nullable String error) {
+ private void verifyCondition(QualityGateConditionDto dto, QualityGateDto qualityGate, MetricDto metric, String operator, String error) {
QualityGateConditionDto reloaded = db.getDbClient().gateConditionDao().selectById(dto.getId(), db.getSession());
assertThat(reloaded.getQualityGateId()).isEqualTo(qualityGate.getId());
assertThat(reloaded.getMetricId()).isEqualTo(metric.getId().longValue());
assertThat(reloaded.getOperator()).isEqualTo(operator);
- assertThat(reloaded.getWarningThreshold()).isEqualTo(warning);
assertThat(reloaded.getErrorThreshold()).isEqualTo(error);
assertThat(dto.getQualityGateId()).isEqualTo(qualityGate.getId());
assertThat(dto.getMetricId()).isEqualTo(metric.getId().longValue());
assertThat(dto.getOperator()).isEqualTo(operator);
- assertThat(dto.getWarningThreshold()).isEqualTo(warning);
assertThat(dto.getErrorThreshold()).isEqualTo(error);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/RegisterQualityGatesTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/RegisterQualityGatesTest.java
index 481e4f36bbb..ce299186f24 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/RegisterQualityGatesTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/RegisterQualityGatesTest.java
@@ -107,7 +107,7 @@ public class RegisterQualityGatesTest {
createBuiltInConditions(builtInQualityGate);
// Add another condition
qualityGateConditionsUpdater.createCondition(dbSession, builtInQualityGate,
- NEW_SECURITY_REMEDIATION_EFFORT_KEY, OPERATOR_GREATER_THAN, null, "5");
+ NEW_SECURITY_REMEDIATION_EFFORT_KEY, OPERATOR_GREATER_THAN, "5");
dbSession.commit();
underTest.start();
@@ -215,8 +215,7 @@ public class RegisterQualityGatesTest {
QualityGateConditionDto conditionDto = new QualityGateConditionDto()
.setMetricId(-1) // This Id does not exist
.setOperator(OPERATOR_GREATER_THAN)
- .setErrorThreshold("1")
- .setWarningThreshold("1");
+ .setErrorThreshold("1");
gateConditionDao.insert(conditionDto, dbSession);
dbSession.commit();
@@ -250,29 +249,29 @@ public class RegisterQualityGatesTest {
assertThat(qualityGateDto.getCreatedAt()).isNotNull();
assertThat(qualityGateDto.isBuiltIn()).isTrue();
assertThat(gateConditionDao.selectForQualityGate(dbSession, qualityGateDto.getId()))
- .extracting(QualityGateConditionDto::getMetricId, QualityGateConditionDto::getOperator, QualityGateConditionDto::getWarningThreshold,
+ .extracting(QualityGateConditionDto::getMetricId, QualityGateConditionDto::getOperator,
QualityGateConditionDto::getErrorThreshold)
.containsOnly(
- tuple(newReliability.getId().longValue(), OPERATOR_GREATER_THAN, null, "1"),
- tuple(newSecurity.getId().longValue(), OPERATOR_GREATER_THAN, null, "1"),
- tuple(newMaintainability.getId().longValue(), OPERATOR_GREATER_THAN, null, "1"),
- tuple(newCoverage.getId().longValue(), OPERATOR_LESS_THAN, null, "80"),
- tuple(newDuplication.getId().longValue(), OPERATOR_GREATER_THAN, null, "3"));
+ tuple(newReliability.getId().longValue(), OPERATOR_GREATER_THAN, "1"),
+ tuple(newSecurity.getId().longValue(), OPERATOR_GREATER_THAN, "1"),
+ tuple(newMaintainability.getId().longValue(), OPERATOR_GREATER_THAN, "1"),
+ tuple(newCoverage.getId().longValue(), OPERATOR_LESS_THAN, "80"),
+ tuple(newDuplication.getId().longValue(), OPERATOR_GREATER_THAN, "3"));
}
private List<QualityGateConditionDto> createBuiltInConditions(QualityGateDto qg) {
List<QualityGateConditionDto> conditions = new ArrayList<>();
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_SECURITY_RATING_KEY, OPERATOR_GREATER_THAN, null, "1"));
+ NEW_SECURITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_RELIABILITY_RATING_KEY, OPERATOR_GREATER_THAN, null, "1"));
+ NEW_RELIABILITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_MAINTAINABILITY_RATING_KEY, OPERATOR_GREATER_THAN, null, "1"));
+ NEW_MAINTAINABILITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_COVERAGE_KEY, OPERATOR_LESS_THAN, null, "80"));
+ NEW_COVERAGE_KEY, OPERATOR_LESS_THAN, "80"));
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_DUPLICATED_LINES_DENSITY_KEY, OPERATOR_GREATER_THAN, null, "3"));
+ NEW_DUPLICATED_LINES_DENSITY_KEY, OPERATOR_GREATER_THAN, "3"));
return conditions;
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java
index 906c8529eaf..ed37d41f6f6 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java
@@ -109,8 +109,8 @@ public class CopyActionTest {
assertThat(actual.getUuid()).isNotEqualTo(qualityGate.getUuid());
assertThat(db.getDbClient().gateConditionDao().selectForQualityGate(dbSession, qualityGate.getId()))
- .extracting(c-> (int) c.getMetricId(), QualityGateConditionDto::getWarningThreshold, QualityGateConditionDto::getErrorThreshold)
- .containsExactlyInAnyOrder(tuple(metric.getId(), condition.getWarningThreshold(), condition.getErrorThreshold()));
+ .extracting(c-> (int) c.getMetricId(), QualityGateConditionDto::getErrorThreshold)
+ .containsExactlyInAnyOrder(tuple(metric.getId(), condition.getErrorThreshold()));
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java
index 48ac02b70b6..f0b1e768e3b 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java
@@ -20,7 +20,6 @@
package org.sonar.server.qualitygate.ws;
import java.util.ArrayList;
-import javax.annotation.Nullable;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -50,7 +49,6 @@ import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GAT
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ORGANIZATION;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_WARNING;
public class CreateConditionActionTest {
@@ -72,24 +70,6 @@ public class CreateConditionActionTest {
private WsActionTester ws = new WsActionTester(underTest);
@Test
- public void create_warning_condition() {
- OrganizationDto organization = db.organizations().insert();
- logInAsQualityGateAdmin(organization);
- QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
- MetricDto metric = insertMetric();
-
- ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getId().toString())
- .setParam(PARAM_METRIC, metric.getKey())
- .setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
- .setParam(PARAM_ORGANIZATION, organization.getKey())
- .execute();
-
- assertCondition(qualityGate, metric, "LT", "90", null, null);
- }
-
- @Test
public void create_error_condition() {
OrganizationDto organization = db.organizations().insert();
logInAsQualityGateAdmin(organization);
@@ -104,7 +84,7 @@ public class CreateConditionActionTest {
.setParam(PARAM_ORGANIZATION, organization.getKey())
.execute();
- assertCondition(qualityGate, metric, "LT", null, "90", null);
+ assertCondition(qualityGate, metric, "LT", "90");
}
@Test
@@ -122,7 +102,7 @@ public class CreateConditionActionTest {
.setParam(PARAM_ORGANIZATION, organization.getKey())
.execute();
- assertCondition(qualityGate, metric, "LT", null, "90", 1);
+ assertCondition(qualityGate, metric, "LT", "90");
}
@Test
@@ -138,48 +118,10 @@ public class CreateConditionActionTest {
.setParam(PARAM_GATE_ID, qualityGate.getId().toString())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
- .execute();
-
- assertCondition(qualityGate, metric, "LT", "90", null, null);
- }
-
- @Test
- public void create_warning_condition_with_empty_string_on_error() {
- OrganizationDto organization = db.organizations().insert();
- logInAsQualityGateAdmin(organization);
- QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
- MetricDto metric = insertMetric();
-
- ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getId().toString())
- .setParam(PARAM_METRIC, metric.getKey())
- .setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
- .setParam(PARAM_ERROR, "")
- .setParam(PARAM_ORGANIZATION, organization.getKey())
- .execute();
-
- assertCondition(qualityGate, metric, "LT", "90", null, null);
- }
-
- @Test
- public void create_error_condition_with_empty_string_on_warning() {
- OrganizationDto organization = db.organizations().insert();
- logInAsQualityGateAdmin(organization);
- QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
- MetricDto metric = insertMetric();
-
- ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getId().toString())
- .setParam(PARAM_METRIC, metric.getKey())
- .setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "")
- .setParam(PARAM_ERROR, "90")
- .setParam(PARAM_ORGANIZATION, organization.getKey())
+ .setParam(PARAM_ERROR, "10")
.execute();
- assertCondition(qualityGate, metric, "LT", null, "90", null);
+ assertCondition(qualityGate, metric, "LT", "10");
}
@Test
@@ -213,7 +155,6 @@ public class CreateConditionActionTest {
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "45")
- .setParam(PARAM_WARNING, "90")
.setParam(PARAM_ORGANIZATION, organization.getKey())
.executeProtobuf(CreateConditionResponse.class);
@@ -221,7 +162,6 @@ public class CreateConditionActionTest {
assertThat(response.getId()).isEqualTo(condition.getId());
assertThat(response.getMetric()).isEqualTo(metric.getKey());
assertThat(response.getOp()).isEqualTo("LT");
- assertThat(response.getWarning()).isEqualTo("90");
assertThat(response.getError()).isEqualTo("45");
}
@@ -256,17 +196,16 @@ public class CreateConditionActionTest {
.containsExactlyInAnyOrder(
tuple("gateId", true),
tuple("metric", true),
+ tuple("error", true),
tuple("op", false),
- tuple("warning", false),
- tuple("error", false),
tuple("organization", false));
}
- private void assertCondition(QualityGateDto qualityGate, MetricDto metric, String operator, @Nullable String warning, @Nullable String error, @Nullable Integer period) {
+ private void assertCondition(QualityGateDto qualityGate, MetricDto metric, String operator, String error) {
assertThat(dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGate.getId()))
.extracting(QualityGateConditionDto::getQualityGateId, QualityGateConditionDto::getMetricId, QualityGateConditionDto::getOperator,
- QualityGateConditionDto::getWarningThreshold, QualityGateConditionDto::getErrorThreshold)
- .containsExactlyInAnyOrder(tuple(qualityGate.getId(), metric.getId().longValue(), operator, warning, error));
+ QualityGateConditionDto::getErrorThreshold)
+ .containsExactlyInAnyOrder(tuple(qualityGate.getId(), metric.getId().longValue(), operator, error));
}
private void logInAsQualityGateAdmin(OrganizationDto organization) {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java
index 6b5141ff621..19d7b9481ac 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java
@@ -25,7 +25,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.api.web.UserRole;
@@ -76,8 +75,6 @@ public class ProjectStatusActionTest {
@Test
public void test_definition() {
WebService.Action action = ws.getDef();
- assertThat(action.changelog()).extracting(Change::getVersion, Change::getDescription).containsExactly(
- tuple("6.4", "The field 'ignoredConditions' is added to the response"));
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java
index e026fb2e626..51298148501 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java
@@ -22,7 +22,6 @@ package org.sonar.server.qualitygate.ws;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.server.ws.WebService.Param;
import org.sonar.api.utils.System2;
@@ -87,10 +86,10 @@ public class ShowActionTest {
assertThat(response.getIsBuiltIn()).isFalse();
assertThat(response.getConditionsList()).hasSize(2);
assertThat(response.getConditionsList())
- .extracting(Condition::getId, Condition::getMetric, Condition::getOp, Condition::getError, Condition::getWarning)
+ .extracting(Condition::getId, Condition::getMetric, Condition::getOp, Condition::getError)
.containsExactlyInAnyOrder(
- tuple(condition1.getId(), metric1.getKey(), "GT", condition1.getErrorThreshold(), condition1.getWarningThreshold()),
- tuple(condition2.getId(), metric2.getKey(), "LT", condition2.getErrorThreshold(), condition2.getWarningThreshold()));
+ tuple(condition1.getId(), metric1.getKey(), "GT", condition1.getErrorThreshold()),
+ tuple(condition2.getId(), metric2.getKey(), "LT", condition2.getErrorThreshold()));
}
@Test
@@ -397,9 +396,9 @@ public class ShowActionTest {
QGateWithOrgDto qualityGate2 = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("My Quality Gate 2"));
db.qualityGates().setDefaultQualityGate(organization, qualityGate2);
MetricDto blockerViolationsMetric = db.measures().insertMetric(m -> m.setKey("blocker_violations"));
- MetricDto criticalViolationsMetric = db.measures().insertMetric(m -> m.setKey("critical_violations"));
- db.qualityGates().addCondition(qualityGate, blockerViolationsMetric, c -> c.setOperator("GT").setErrorThreshold("0").setWarningThreshold(null));
- db.qualityGates().addCondition(qualityGate, criticalViolationsMetric, c -> c.setOperator("LT").setErrorThreshold(null).setWarningThreshold("0"));
+ MetricDto criticalViolationsMetric = db.measures().insertMetric(m -> m.setKey("tests"));
+ db.qualityGates().addCondition(qualityGate, blockerViolationsMetric, c -> c.setOperator("GT").setErrorThreshold("0"));
+ db.qualityGates().addCondition(qualityGate, criticalViolationsMetric, c -> c.setOperator("LT").setErrorThreshold("10"));
String response = ws.newRequest()
.setParam("name", qualityGate.getName())
@@ -415,10 +414,6 @@ public class ShowActionTest {
public void verify_definition() {
WebService.Action action = ws.getDef();
assertThat(action.since()).isEqualTo("4.3");
- assertThat(action.changelog()).extracting(Change::getVersion, Change::getDescription)
- .containsExactlyInAnyOrder(
- tuple("7.0", "'isBuiltIn' field is added to the response"),
- tuple("7.0", "'actions' field is added in the response"));
assertThat(action.params())
.extracting(Param::key, Param::isRequired)
.containsExactlyInAnyOrder(
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/UpdateConditionActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/UpdateConditionActionTest.java
index 0f1b91b5f45..7d8353aa39b 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/UpdateConditionActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/UpdateConditionActionTest.java
@@ -19,7 +19,9 @@
*/
package org.sonar.server.qualitygate.ws;
-import javax.annotation.Nullable;
+import com.tngtech.java.junit.dataprovider.DataProvider;
+import com.tngtech.java.junit.dataprovider.DataProviderRunner;
+import com.tngtech.java.junit.dataprovider.UseDataProvider;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -51,7 +53,6 @@ import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ORGANIZATION;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_WARNING;
public class UpdateConditionActionTest {
@@ -73,33 +74,13 @@ public class UpdateConditionActionTest {
private WsActionTester ws = new WsActionTester(underTest);
@Test
- public void update_warning_condition() {
- OrganizationDto organization = db.organizations().insert();
- userSession.addPermission(ADMINISTER_QUALITY_GATES, organization);
- QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
- MetricDto metric = insertMetric();
- QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("GT").setWarningThreshold(null).setErrorThreshold("80"));
-
- ws.newRequest()
- .setParam(PARAM_ORGANIZATION, organization.getKey())
- .setParam(PARAM_ID, Long.toString(condition.getId()))
- .setParam(PARAM_METRIC, metric.getKey())
- .setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
- .execute();
-
- assertCondition(qualityGate, metric, "LT", "90", null);
- }
-
- @Test
public void update_error_condition() {
OrganizationDto organization = db.organizations().insert();
userSession.addPermission(ADMINISTER_QUALITY_GATES, organization);
QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
MetricDto metric = insertMetric();
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("GT").setWarningThreshold(null).setErrorThreshold("80"));
+ c -> c.setOperator("GT").setErrorThreshold("80"));
ws.newRequest()
.setParam(PARAM_ORGANIZATION, organization.getKey())
@@ -109,7 +90,7 @@ public class UpdateConditionActionTest {
.setParam(PARAM_ERROR, "90")
.execute();
- assertCondition(qualityGate, metric, "LT", null, "90");
+ assertCondition(qualityGate, metric, "LT", "90");
}
@Test
@@ -123,52 +104,10 @@ public class UpdateConditionActionTest {
.setParam(PARAM_ID, Long.toString(condition.getId()))
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
+ .setParam(PARAM_ERROR, "10")
.execute();
- assertCondition(qualityGate, metric, "LT", "90", null);
- }
-
- @Test
- public void update_warning_condition_with_empty_string_on_error() {
- OrganizationDto organization = db.organizations().insert();
- userSession.addPermission(ADMINISTER_QUALITY_GATES, organization);
- QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
- MetricDto metric = insertMetric();
- QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("GT").setWarningThreshold(null).setErrorThreshold("80"));
-
- ws.newRequest()
- .setParam(PARAM_ORGANIZATION, organization.getKey())
- .setParam(PARAM_ID, Long.toString(condition.getId()))
- .setParam(PARAM_METRIC, metric.getKey())
- .setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
- .setParam(PARAM_ERROR, "")
- .execute();
-
- assertCondition(qualityGate, metric, "LT", "90", null);
- }
-
- @Test
- public void update_error_condition_with_empty_string_on_warning() {
- OrganizationDto organization = db.organizations().insert();
- userSession.addPermission(ADMINISTER_QUALITY_GATES, organization);
- QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
- MetricDto metric = insertMetric();
- QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("GT").setWarningThreshold(null).setErrorThreshold("80"));
-
- ws.newRequest()
- .setParam(PARAM_ORGANIZATION, organization.getKey())
- .setParam(PARAM_ID, Long.toString(condition.getId()))
- .setParam(PARAM_METRIC, metric.getKey())
- .setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_ERROR, "90")
- .setParam(PARAM_WARNING, "")
- .execute();
-
- assertCondition(qualityGate, metric, "LT", null, "90");
+ assertCondition(qualityGate, metric, "LT", "10");
}
@Test
@@ -178,21 +117,19 @@ public class UpdateConditionActionTest {
QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
MetricDto metric = insertMetric();
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric,
- c -> c.setOperator("GT").setWarningThreshold(null).setErrorThreshold("80"));
+ c -> c.setOperator("GT").setErrorThreshold("80"));
CreateConditionResponse response = ws.newRequest()
.setParam(PARAM_ORGANIZATION, organization.getKey())
.setParam(PARAM_ID, Long.toString(condition.getId()))
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
.setParam(PARAM_ERROR, "45")
.executeProtobuf(CreateConditionResponse.class);
assertThat(response.getId()).isEqualTo(condition.getId());
assertThat(response.getMetric()).isEqualTo(metric.getKey());
assertThat(response.getOp()).isEqualTo("LT");
- assertThat(response.getWarning()).isEqualTo("90");
assertThat(response.getError()).isEqualTo("45");
}
@@ -212,7 +149,7 @@ public class UpdateConditionActionTest {
.setParam(PARAM_ID, Long.toString(condition.getId()))
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
+ .setParam(PARAM_ERROR, "10")
.execute();
}
@@ -232,7 +169,7 @@ public class UpdateConditionActionTest {
.setParam(PARAM_ID, "123")
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
+ .setParam(PARAM_ERROR, "90")
.execute();
}
@@ -253,7 +190,7 @@ public class UpdateConditionActionTest {
.setParam(PARAM_ID, Long.toString(condition.getId()))
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
+ .setParam(PARAM_ERROR, "90")
.execute();
}
@@ -273,7 +210,7 @@ public class UpdateConditionActionTest {
.setParam(PARAM_ID, Long.toString(condition.getId()))
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
- .setParam(PARAM_WARNING, "90")
+ .setParam(PARAM_ERROR, "90")
.execute();
}
@@ -289,18 +226,16 @@ public class UpdateConditionActionTest {
.containsExactlyInAnyOrder(
tuple("id", true),
tuple("metric", true),
+ tuple("error", true),
tuple("op", false),
- tuple("warning", false),
- tuple("error", false),
tuple("organization", false));
-
}
- private void assertCondition(QualityGateDto qualityGate, MetricDto metric, String operator, @Nullable String warning, @Nullable String error) {
+ private void assertCondition(QualityGateDto qualityGate, MetricDto metric, String operator, String error) {
assertThat(dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGate.getId()))
.extracting(QualityGateConditionDto::getQualityGateId, QualityGateConditionDto::getMetricId, QualityGateConditionDto::getOperator,
- QualityGateConditionDto::getWarningThreshold, QualityGateConditionDto::getErrorThreshold)
- .containsExactlyInAnyOrder(tuple(qualityGate.getId(), metric.getId().longValue(), operator, warning, error));
+ QualityGateConditionDto::getErrorThreshold)
+ .containsExactlyInAnyOrder(tuple(qualityGate.getId(), metric.getId().longValue(), operator, error));
}
private MetricDto insertMetric() {
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/ProjectStatusActionTest/measure_data.json b/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/ProjectStatusActionTest/measure_data.json
index cee92e73677..38c36070556 100644
--- a/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/ProjectStatusActionTest/measure_data.json
+++ b/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/ProjectStatusActionTest/measure_data.json
@@ -13,7 +13,6 @@
"metric": "new_blocker_violations",
"op": "GT",
"period": 1,
- "warning": "",
"error": "0",
"actual": "14",
"level": "ERROR"
@@ -22,7 +21,6 @@
"metric": "new_critical_violations",
"op": "GT",
"period": 1,
- "warning": "",
"error": "0",
"actual": "1",
"level": "ERROR"
@@ -31,7 +29,6 @@
"metric": "new_sqale_debt_ratio",
"op": "GT",
"period": 1,
- "warning": "",
"error": "5",
"actual": "0.6562109862671661",
"level": "OK"
@@ -40,7 +37,6 @@
"metric": "reopened_issues",
"op": "GT",
"period": 1,
- "warning": "0",
"actual": "0",
"level": "OK"
},
@@ -48,17 +44,15 @@
"metric": "open_issues",
"op": "GT",
"period": 1,
- "warning": "0",
- "error": "",
+ "error": "0",
"actual": "17",
- "level": "WARN"
+ "level": "ERROR"
},
{
"metric": "skipped_tests",
"op": "GT",
"period": 1,
- "warning": "0",
- "error": "",
+ "error": "0",
"actual": "0",
"level": "OK"
}
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/QualityGateDetailsFormatterTest/non_leak_period.json b/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/QualityGateDetailsFormatterTest/non_leak_period.json
index 4122aa76dd2..3dda0a73a86 100644
--- a/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/QualityGateDetailsFormatterTest/non_leak_period.json
+++ b/server/sonar-server/src/test/resources/org/sonar/server/qualitygate/ws/QualityGateDetailsFormatterTest/non_leak_period.json
@@ -44,7 +44,7 @@
"warning": "",
"error": "5",
"actual": "0.5670339761248853",
- "level": "WARN"
+ "level": "ERROR"
}
]
}