Skip to content

Commit

Permalink
SONAR-6646 empty measure must not be persisted
Browse files Browse the repository at this point in the history
  • Loading branch information
sns-seb committed Jun 23, 2015
1 parent 0bb8ab4 commit 7fe7ecd
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
Expand Up @@ -27,6 +27,7 @@
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Nonnull;
import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.CoreMetrics;
import org.sonar.core.measure.db.MeasureDto; import org.sonar.core.measure.db.MeasureDto;
import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.DbSession;
Expand Down Expand Up @@ -108,13 +109,23 @@ private void persistMeasures(Component component, Multimap<String, Measure> batc
} }


Metric metric = metricRepository.getByKey(metricKey); Metric metric = metricRepository.getByKey(metricKey);
Predicate<Measure> notBestValueOptimization = Predicates.not(BestValueOptimization.from(metric, component)); Predicate<Measure> notBestValueOptimized = Predicates.not(BestValueOptimization.from(metric, component));
for (Measure measure : from(measures.getValue()).filter(notBestValueOptimization)) { for (Measure measure : from(measures.getValue()).filter(NonEmptyMeasure.INSTANCE).filter(notBestValueOptimized)) {
MeasureDto measureDto = MeasureToMeasureDto.INSTANCE.toMeasureDto(measure, metric, componentId, snapshotId); MeasureDto measureDto = MeasureToMeasureDto.INSTANCE.toMeasureDto(measure, metric, componentId, snapshotId);
dbClient.measureDao().insert(session, measureDto); dbClient.measureDao().insert(session, measureDto);
} }
} }
} }

}

private enum NonEmptyMeasure implements Predicate<Measure> {
INSTANCE;

@Override
public boolean apply(@Nonnull Measure input) {
return input.getValueType() != Measure.ValueType.NO_VALUE || input.hasVariations() || input.getData() != null;
}
} }


} }
Expand Up @@ -213,6 +213,25 @@ public void bestValue_measure_of_bestValueOptimized_metrics_are_not_persisted()
assertThat(retrieveDtos()).isEmpty(); assertThat(retrieveDtos()).isEmpty();
} }


@Test
public void empty_values_are_not_persisted() {
reportReader.putMeasures(FILE_REF, Arrays.asList(
BatchReport.Measure.newBuilder()
.setValueType(MeasureValueType.STRING)
.setMetricKey(STRING_METRIC_KEY)
.build(),
BatchReport.Measure.newBuilder()
.setValueType(MeasureValueType.DOUBLE)
.setMetricKey(DOUBLE_METRIC_KEY)
.build()
));

sut.execute();
session.commit();

assertThat(retrieveDtos()).isEmpty();
}

private ComponentDto addComponent(String key) { private ComponentDto addComponent(String key) {
ComponentDto componentDto = new ComponentDto().setKey(key).setUuid(Uuids.create()); ComponentDto componentDto = new ComponentDto().setKey(key).setUuid(Uuids.create());
dbClient.componentDao().insert(session, componentDto); dbClient.componentDao().insert(session, componentDto);
Expand Down

0 comments on commit 7fe7ecd

Please sign in to comment.