]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7070 WS qualitygates/* leak period enforced when creating/updating a quality...
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Tue, 26 Jan 2016 10:07:20 +0000 (11:07 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 29 Jan 2016 14:59:36 +0000 (15:59 +0100)
server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGates.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/AppAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesWs.java
server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGatesTest.java
server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/AppActionTest.java
server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/QGatesWsTest.java

index 91d69f7a49426ddc704b0fa37e2f503a10742019..8f1c65dbc502fa8738f0d17df97c04b74aa1ecfd 100644 (file)
@@ -179,7 +179,10 @@ public class QualityGates {
     validateCondition(metric, operator, warningThreshold, errorThreshold, period);
     QualityGateConditionDto newCondition = new QualityGateConditionDto().setQualityGateId(qGateId)
       .setMetricId(metric.getId()).setMetricKey(metric.getKey())
-      .setOperator(operator).setWarningThreshold(warningThreshold).setErrorThreshold(errorThreshold).setPeriod(period);
+      .setOperator(operator)
+      .setWarningThreshold(warningThreshold)
+      .setErrorThreshold(errorThreshold)
+      .setPeriod(period);
     conditionDao.insert(newCondition);
     return newCondition;
   }
@@ -190,8 +193,13 @@ public class QualityGates {
     QualityGateConditionDto condition = getNonNullCondition(condId);
     Metric metric = getNonNullMetric(metricKey);
     validateCondition(metric, operator, warningThreshold, errorThreshold, period);
-    condition.setMetricId(metric.getId()).setMetricKey(metric.getKey())
-      .setOperator(operator).setWarningThreshold(warningThreshold).setErrorThreshold(errorThreshold).setPeriod(period);
+    condition
+      .setMetricId(metric.getId())
+      .setMetricKey(metric.getKey())
+      .setOperator(operator)
+      .setWarningThreshold(warningThreshold)
+      .setErrorThreshold(errorThreshold)
+      .setPeriod(period);
     conditionDao.update(condition);
     return condition;
   }
@@ -269,9 +277,8 @@ public class QualityGates {
   private void checkPeriod(Metric metric, @Nullable Integer period, Errors errors) {
     if (period == null) {
       errors.check(!metric.getKey().startsWith("new_"), "A period must be selected for differential metrics.");
-
     } else {
-      errors.check(period >= 1 && period <= 5, "Valid periods are integers between 1 and 5 (included).");
+      errors.check(period == 1, "The only valid quality gate period is 1, the leak period.");
     }
   }
 
index cedc36c18ae4f5b5a6b5d94ed5f31d8807143f1f..50123dd2e02e626a214e685e3b3009d93d71cf23 100644 (file)
@@ -20,7 +20,6 @@
 package org.sonar.server.qualitygate.ws;
 
 import org.apache.commons.lang.BooleanUtils;
-import org.sonar.api.i18n.I18n;
 import org.sonar.api.measures.Metric;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
@@ -37,12 +36,9 @@ public class AppAction implements QGateWsAction {
 
   private final Periods periods;
 
-  private final I18n i18n;
-
-  public AppAction(QualityGates qualityGates, Periods periods, I18n i18n) {
+  public AppAction(QualityGates qualityGates, Periods periods) {
     this.qualityGates = qualityGates;
     this.periods = periods;
-    this.i18n = i18n;
   }
 
   @Override
index 61d12a7709ff4e8e1de2aa0dd466a7df2bcec267..1e1802bc3865fa5f662301571d21f32a0fede5a1 100644 (file)
@@ -79,8 +79,8 @@ public class QGatesWs implements WebService {
       .setPossibleValues(QualityGateConditionDto.ALL_OPERATORS);
 
     action.createParam(PARAM_PERIOD)
-      .setDescription("Condition period")
-      .setExampleValue("1");
+      .setDescription("Condition period. If not set, the absolute value is considered.")
+      .setPossibleValues("1");
 
     action.createParam(PARAM_WARNING)
       .setDescription("Condition warning threshold")
index 889e9dda4a4d4507c837ffcb65fabfd155782fb6..fb610571c1398acd28c55e2c3683df63a387ec98 100644 (file)
@@ -347,7 +347,7 @@ public class QualityGatesTest {
     Metric newCoverage = Mockito.spy(CoreMetrics.NEW_COVERAGE);
     when(newCoverage.getId()).thenReturn(metricId);
     when(metricFinder.findByKey(metricKey)).thenReturn(newCoverage);
-    int period = 2;
+    int period = 1;
 
     QualityGateConditionDto newCondition = qGates.createCondition(qGateId, metricKey, operator, null, errorThreshold, period);
     assertThat(newCondition.getQualityGateId()).isEqualTo(qGateId);
@@ -461,7 +461,7 @@ public class QualityGatesTest {
     Metric newCoverage = Mockito.spy(CoreMetrics.NEW_COVERAGE);
     when(newCoverage.getId()).thenReturn(metricId);
     when(metricFinder.findByKey(metricKey)).thenReturn(newCoverage);
-    int period = 2;
+    int period = 1;
 
     assertThat(qGates.updateCondition(condId, metricKey, operator, null, errorThreshold, period)).isEqualTo(condition);
     assertThat(condition.getId()).isEqualTo(condId);
index 584f5efe471625da2d01d4bb8318b08099be8fb4..b02c7e783e620cede85faa610294eb4a2a1475b6 100644 (file)
@@ -67,7 +67,7 @@ public class AppActionTest {
       new CreateAction(qGates), new CopyAction(qGates), new DestroyAction(qGates), new RenameAction(qGates),
       new SetAsDefaultAction(qGates), new UnsetDefaultAction(qGates),
       new CreateConditionAction(qGates), new UpdateConditionAction(qGates), new DeleteConditionAction(qGates),
-      new SelectAction(qGates), new DeselectAction(qGates), new AppAction(qGates, periods, i18n)));
+      new SelectAction(qGates), new DeselectAction(qGates), new AppAction(qGates, periods)));
   }
 
   @Test
index 03598405b45a3955e0a9be95bf90790fea68b6a3..448b09e72816e01822c0fc7cda06d9fba8ee2ddf 100644 (file)
@@ -27,7 +27,6 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.sonar.api.i18n.I18n;
 import org.sonar.api.server.ws.WebService.Action;
 import org.sonar.api.server.ws.WebService.Controller;
 import org.sonar.db.qualitygate.ProjectQgateAssociation;
@@ -71,7 +70,7 @@ public class QGatesWsTest {
       new CreateAction(qGates), new CopyAction(qGates), new DestroyAction(qGates), new RenameAction(qGates),
       new SetAsDefaultAction(qGates), new UnsetDefaultAction(qGates),
       new CreateConditionAction(qGates), new UpdateConditionAction(qGates), new DeleteConditionAction(qGates),
-      new SelectAction(qGates), new DeselectAction(qGates), new AppAction(qGates, mock(Periods.class), mock(I18n.class))));
+      new SelectAction(qGates), new DeselectAction(qGates), new AppAction(qGates, mock(Periods.class))));
   }
 
   @Test