aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2015-09-01 16:30:44 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2015-09-02 14:28:19 +0200
commit32428f49443f18796d73237b892117e171c1f5af (patch)
treea29bd10a5fab167b0658780f036feee44633d69c /server
parent65a791b7eab29403268ea9b3f9c9eea2850949be (diff)
downloadsonarqube-32428f49443f18796d73237b892117e171c1f5af.tar.gz
sonarqube-32428f49443f18796d73237b892117e171c1f5af.zip
SONAR-6730 Add boolean measure
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureComputerContextImpl.java7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureImpl.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java15
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureImplTest.java19
4 files changed, 46 insertions, 4 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureComputerContextImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureComputerContextImpl.java
index 434e18d1185..13d3a9a4578 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureComputerContextImpl.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureComputerContextImpl.java
@@ -168,6 +168,13 @@ public class MeasureComputerContextImpl implements MeasureComputerContext {
measureRepository.add(internalComponent, metric, newMeasureBuilder().create(value));
}
+ @Override
+ public void addMeasure(String metricKey, boolean value) {
+ Metric metric = metricRepository.getByKey(metricKey);
+ validateAddMeasure(metric);
+ measureRepository.add(internalComponent, metric, newMeasureBuilder().create(value));
+ }
+
private void validateInputMetric(String metric) {
checkArgument(allowedMetrics.contains(metric), "Only metrics in %s can be used to load measures", definition.getInputMetrics());
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureImpl.java
index 285a05ab68e..5d0371d3f41 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureImpl.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/api/MeasureImpl.java
@@ -28,6 +28,7 @@ import org.sonar.api.ce.measure.Measure;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
+import static org.sonar.server.computation.measure.Measure.ValueType.BOOLEAN;
import static org.sonar.server.computation.measure.Measure.ValueType.DOUBLE;
import static org.sonar.server.computation.measure.Measure.ValueType.INT;
import static org.sonar.server.computation.measure.Measure.ValueType.LONG;
@@ -36,7 +37,7 @@ import static org.sonar.server.computation.measure.Measure.ValueType.STRING;
@Immutable
public class MeasureImpl implements Measure {
- private static final Set<org.sonar.server.computation.measure.Measure.ValueType> ALLOWED_VALUE_TYPES = ImmutableSet.of(INT, LONG, DOUBLE, STRING);
+ private static final Set<org.sonar.server.computation.measure.Measure.ValueType> ALLOWED_VALUE_TYPES = ImmutableSet.of(INT, LONG, DOUBLE, STRING, BOOLEAN);
private final org.sonar.server.computation.measure.Measure measure;
@@ -69,6 +70,12 @@ public class MeasureImpl implements Measure {
return measure.getStringValue();
}
+ @Override
+ public boolean getBooleanValue() {
+ checkValueType(BOOLEAN);
+ return measure.getBooleanValue();
+ }
+
private void checkValueType(org.sonar.server.computation.measure.Measure.ValueType expected) {
checkState(measure.getValueType() == expected, String.format(
"Value can not be converted to %s because current value type is a %s",
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java
index 74c2cd64b3a..683324ed989 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java
@@ -60,6 +60,7 @@ public class MeasureComputerContextImplTest {
private static final String DOUBLE_METRIC_KEY = "double_metric_key";
private static final String LONG_METRIC_KEY = "long_metric_key";
private static final String STRING_METRIC_KEY = "string_metric_key";
+ private static final String BOOLEAN_METRIC_KEY = "boolean_metric_key";
private static final int PROJECT_REF = 1;
private static final int FILE_1_REF = 12341;
@@ -84,7 +85,9 @@ public class MeasureComputerContextImplTest {
.add(new MetricImpl(2, INT_METRIC_KEY, "int metric", Metric.MetricType.INT))
.add(new MetricImpl(3, DOUBLE_METRIC_KEY, "double metric", Metric.MetricType.FLOAT))
.add(new MetricImpl(4, LONG_METRIC_KEY, "long metric", Metric.MetricType.MILLISEC))
- .add(new MetricImpl(5, STRING_METRIC_KEY, "string metric", Metric.MetricType.STRING));
+ .add(new MetricImpl(5, STRING_METRIC_KEY, "string metric", Metric.MetricType.STRING))
+ .add(new MetricImpl(6, BOOLEAN_METRIC_KEY, "boolean metric", Metric.MetricType.BOOL))
+ ;
@Rule
public MeasureRepositoryRule measureRepository = MeasureRepositoryRule.create(treeRootHolder, metricRepository);
@@ -217,6 +220,16 @@ public class MeasureComputerContextImplTest {
}
@Test
+ public void add_boolean_measure_create_measure_of_type_boolean_with_right_value() throws Exception {
+ MeasureComputerContextImpl underTest = newContext(PROJECT_REF, NCLOC_KEY, BOOLEAN_METRIC_KEY);
+ underTest.addMeasure(BOOLEAN_METRIC_KEY, true);
+
+ Optional<Measure> measure = measureRepository.getAddedRawMeasure(PROJECT_REF, BOOLEAN_METRIC_KEY);
+ assertThat(measure).isPresent();
+ assertThat(measure.get().getBooleanValue()).isTrue();
+ }
+
+ @Test
public void fail_with_IAE_when_add_measure_is_called_on_metric_not_in_output_list() throws Exception {
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("Only metrics in [int_metric_key] can be used to add measures. Metric 'double_metric_key' is not allowed.");
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureImplTest.java
index cd7d24d690f..c6b11e3fdbd 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureImplTest.java
@@ -93,9 +93,24 @@ public class MeasureImplTest {
}
@Test
+ public void get_boolean_value() throws Exception {
+ MeasureImpl measure = new MeasureImpl(Measure.newMeasureBuilder().create(true));
+ assertThat(measure.getBooleanValue()).isTrue();
+ }
+
+ @Test
+ public void fail_with_ISE_when_not_boolean_value() throws Exception {
+ thrown.expect(IllegalStateException.class);
+ thrown.expectMessage("Value can not be converted to boolean because current value type is a DOUBLE");
+
+ MeasureImpl measure = new MeasureImpl(Measure.newMeasureBuilder().create(1d));
+ measure.getBooleanValue();
+ }
+
+ @Test
public void fail_with_ISE_when_creating_measure_with_no_value() throws Exception {
thrown.expect(IllegalStateException.class);
- thrown.expectMessage("Only following types are allowed [INT, LONG, DOUBLE, STRING]");
+ thrown.expectMessage("Only following types are allowed [INT, LONG, DOUBLE, STRING, BOOLEAN]");
new MeasureImpl(Measure.newMeasureBuilder().createNoValue());
}
@@ -103,7 +118,7 @@ public class MeasureImplTest {
@Test
public void fail_with_ISE_when_creating_measure_with_not_allowed_value() throws Exception {
thrown.expect(IllegalStateException.class);
- thrown.expectMessage("Only following types are allowed [INT, LONG, DOUBLE, STRING]");
+ thrown.expectMessage("Only following types are allowed [INT, LONG, DOUBLE, STRING, BOOLEAN]");
new MeasureImpl(Measure.newMeasureBuilder().create(Measure.Level.ERROR));
}