Browse Source

SONAR-7070 WS qualitygates/* leak period enforced when creating/updating a quality gate condition

tags/5.4-M11
Teryk Bellahsene 8 years ago
parent
commit
77af82fd52

+ 12
- 5
server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGates.java View 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.");
}
}


+ 1
- 5
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/AppAction.java View 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

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesWs.java View 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")

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGatesTest.java View 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);

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/AppActionTest.java View 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

+ 1
- 2
server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/QGatesWsTest.java View 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

Loading…
Cancel
Save