private static Measure.NewMeasureBuilder setCommonProperties(Measure.NewMeasureBuilder builder, LiveMeasureDto measureDto) { Double variation = measureDto.getVariation(); if (variation != null) { builder.setVariation(variation); } return builder; }
@Override public OptionalDouble getNewMetricValue() { if (dto.getVariation() == null) { return OptionalDouble.empty(); } return OptionalDouble.of(dto.getVariation()); } }
void setLeakValue(ComponentDto component, String metricKey, double variation) { changeCell(component, metricKey, c -> { double newVariation = scale(getMetric(metricKey), variation); if (c.getVariation() != null && Double.compare(c.getVariation(), newVariation) == 0) { return false; } MetricDto metric = metricsByKeys.get(metricKey); c.setVariation(scale(metric, variation)); return true; }); }
static void updateMeasureBuilder(Measure.Builder measureBuilder, MetricDto metricDto, LiveMeasureDto measureDto) { Double value = measureDto.getValue(); Double variation = measureDto.getVariation(); updateMeasureBuilder(measureBuilder, metricDto, value == null ? Double.NaN : value, measureDto.getDataAsString(), variation == null ? Double.NaN : variation); }
private Measure(LiveMeasureDto measureDto) { this.value = toPrimitive(measureDto.getValue()); this.data = measureDto.getDataAsString(); this.variation = toPrimitive(measureDto.getVariation()); }
private void verifyVariation(MeasureMatrix underTest, ComponentDto component, MetricDto metric, @Nullable Double expectedVariation) { assertThat(underTest.getMeasure(component, metric.getKey()).get().getVariation()).isEqualTo(expectedVariation); }
void setValue(ComponentDto component, String metricKey, double value) { changeCell(component, metricKey, m -> { MetricDto metric = getMetric(metricKey); double newValue = scale(metric, value); Double initialValue = m.getValue(); if (initialValue != null && Double.compare(initialValue, newValue) == 0) { return false; } m.setValue(newValue); Double initialVariation = m.getVariation(); if (initialValue != null && initialVariation != null) { double leakInitialValue = initialValue - initialVariation; m.setVariation(scale(metric, value - leakInitialValue)); } return true; }); }
void setValue(ComponentDto component, String metricKey, Rating value) { changeCell(component, metricKey, m -> { Double initialValue = m.getValue(); if (initialValue != null && Double.compare(initialValue, (double) value.getIndex()) == 0) { return false; } m.setData(value.name()); m.setValue((double) value.getIndex()); Double initialVariation = m.getVariation(); if (initialValue != null && initialVariation != null) { double leakInitialValue = initialValue - initialVariation; m.setVariation(value.getIndex() - leakInitialValue); } return true; }); }
private void assertThatRatingMeasureHasLeakValue(ComponentDto component, Rating expectedValue) { LiveMeasureDto measure = db.getDbClient().liveMeasureDao().selectMeasure(db.getSession(), component.uuid(), ratingMetric.getKey()).get(); assertThat(measure.getComponentUuid()).isEqualTo(component.uuid()); assertThat(measure.getProjectUuid()).isEqualTo(component.projectUuid()); assertThat(measure.getMetricId()).isEqualTo(ratingMetric.getId()); assertThat(measure.getVariation()).isEqualTo((double) expectedValue.getIndex()); }
private void assertThatIntMeasureHasLeakValue(ComponentDto component, double expectedValue) { LiveMeasureDto measure = db.getDbClient().liveMeasureDao().selectMeasure(db.getSession(), component.uuid(), intMetric.getKey()).get(); assertThat(measure.getComponentUuid()).isEqualTo(component.uuid()); assertThat(measure.getProjectUuid()).isEqualTo(component.projectUuid()); assertThat(measure.getMetricId()).isEqualTo(intMetric.getId()); assertThat(measure.getValue()).isNull(); assertThat(measure.getVariation()).isEqualTo(expectedValue); }
@Test public void measures_on_leak_period_are_persisted() { prepareProject(); measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().setVariation(42.0).createNoValue()); TestComputationStepContext context = new TestComputationStepContext(); step().execute(context); LiveMeasureDto persistedMeasure = selectMeasure("project-uuid", INT_METRIC).get(); assertThat(persistedMeasure.getValue()).isNull(); assertThat(persistedMeasure.getVariation()).isEqualTo(42.0); verifyStatistics(context, 1); }
@Test public void variation_is_refreshed_when_int_value_is_changed() { markProjectAsAnalyzed(project); // value is: // 42 on last analysis // 42-12=30 on beginning of leak period db.measures().insertLiveMeasure(project, intMetric, m -> m.setValue(42.0).setVariation(12.0)); // new value is 44, so variation on leak period is 44-30=14 List<QGChangeEvent> result = run(file1, newIntConstantFormula(44.0)); LiveMeasureDto measure = assertThatIntMeasureHasValue(project, 44.0); assertThat(measure.getVariation()).isEqualTo(14.0); assertThatProjectChanged(result, project); }
@Test public void upsert_inserts_or_updates_row() { if (!db.getDbClient().getDatabase().getDialect().supportsUpsert()) { return; } // insert LiveMeasureDto dto = newLiveMeasure(); int count = underTest.upsert(db.getSession(), dto); verifyPersisted(dto); verifyTableSize(1); assertThat(count).isEqualTo(1); // update dto.setValue(dto.getValue() + 1); dto.setVariation(dto.getVariation() + 10); dto.setData(dto.getDataAsString() + "_new"); count = underTest.upsert(db.getSession(), dto); assertThat(count).isEqualTo(1); verifyPersisted(dto); verifyTableSize(1); }
@Test public void variation_is_refreshed_when_rating_value_is_changed() { markProjectAsAnalyzed(project); // value is: // B on last analysis // D on beginning of leak period --> variation is -2 db.measures().insertLiveMeasure(project, ratingMetric, m -> m.setValue((double) Rating.B.getIndex()).setData("B").setVariation(-2.0)); // new value is C, so variation on leak period is D to C = -1 List<QGChangeEvent> result = run(file1, newRatingConstantFormula(Rating.C)); LiveMeasureDto measure = assertThatRatingMeasureHasValue(project, Rating.C); assertThat(measure.getVariation()).isEqualTo(-1.0); assertThatProjectChanged(result, project); }
@Test public void variation_does_not_change_if_rating_value_does_not_change() { markProjectAsAnalyzed(project); // value is: // B on last analysis // D on beginning of leak period --> variation is -2 db.measures().insertLiveMeasure(project, ratingMetric, m -> m.setValue((double) Rating.B.getIndex()).setData("B").setVariation(-2.0)); // new value is still B, so variation on leak period is still -2 List<QGChangeEvent> result = run(file1, newRatingConstantFormula(Rating.B)); LiveMeasureDto measure = assertThatRatingMeasureHasValue(project, Rating.B); assertThat(measure.getVariation()).isEqualTo(-2.0); assertThatProjectChanged(result, project); }
@Test public void insertOrUpdate() { // insert LiveMeasureDto dto = newLiveMeasure(); underTest.insertOrUpdate(db.getSession(), dto); verifyPersisted(dto); verifyTableSize(1); // update dto.setValue(dto.getValue() + 1); dto.setVariation(dto.getVariation() + 10); dto.setData(dto.getDataAsString() + "_new"); underTest.insertOrUpdate(db.getSession(), dto); verifyPersisted(dto); verifyTableSize(1); }
@Override public OptionalDouble getLeakValue() { if (dto.getVariation() == null) { return OptionalDouble.empty(); } return OptionalDouble.of(dto.getVariation()); } }
private static Measure.NewMeasureBuilder setCommonProperties(Measure.NewMeasureBuilder builder, LiveMeasureDto measureDto) { Double variation = measureDto.getVariation(); if (variation != null) { builder.setVariation(variation); } return builder; }
void setLeakValue(ComponentDto component, String metricKey, double variation) { changeCell(component, metricKey, c -> { double newVariation = scale(getMetric(metricKey), variation); if (c.getVariation() != null && Double.compare(c.getVariation(), newVariation) == 0) { return false; } MetricDto metric = metricsByKeys.get(metricKey); c.setVariation(scale(metric, variation)); return true; }); }
private Measure(LiveMeasureDto measureDto) { this.value = toPrimitive(measureDto.getValue()); this.data = measureDto.getDataAsString(); this.variation = toPrimitive(measureDto.getVariation()); }