}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
Optional<Double> mainValueOptional = getDoubleValue(context.getMeasure(mainMetric));
if (!mainValueOptional.isPresent() && fallbackMetric != null) {
mainValueOptional = getDoubleValue(context.getMeasure(fallbackMetric));
public interface Counter<T extends Counter<T>> {
/**
- * This method is used on not {@link Type#FILE} levels, to aggregate the value of counter from a child
+ * This method is used on not leaf levels, to aggregate the value of counter from a child
*/
void aggregate(T counter);
/**
- * This method is called on {@link Type#FILE} levels, in order to populate the counter with one or more {@link Type#FILE} measures.
+ * This method is called on {@link Type#FILE} or {@link Type#PROJECT_VIEW} levels (aka. leaf levels), in order to
+ * populate the counter with one or more leaf measures.
*/
- void aggregate(FileAggregateContext context);
+ void aggregate(LeafAggregateContext context);
}
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
Optional<Measure> measureOptional = context.getMeasure(metricKey);
String data = measureOptional.isPresent() ? measureOptional.get().getData() : null;
if (data != null) {
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-package org.sonar.server.computation.formula;
-
-import com.google.common.base.Optional;
-import java.util.List;
-import org.sonar.server.computation.component.Component;
-import org.sonar.server.computation.measure.Measure;
-import org.sonar.server.computation.period.Period;
-
-/**
- * The context passing information to {@link Counter#aggregate(FileAggregateContext)}.
- */
-public interface FileAggregateContext {
-
- /**
- * The Component representing the currently processed File.
- */
- Component getFile();
-
- /**
- * Retrieve the measure for the current File with the metric key if it exists.
- */
- Optional<Measure> getMeasure(String metricKey);
-
- /**
- * Lists of Periods defined for the current project. They can be used to retrieve variations Measure.
- */
- List<Period> getPeriods();
-
-}
@Override
public void visitProject(Component project, Path<FormulaExecutorComponentVisitor.Counters> path) {
- processNotFile(project, path);
+ processNotLeaf(project, path);
}
@Override
public void visitModule(Component module, Path<FormulaExecutorComponentVisitor.Counters> path) {
- processNotFile(module, path);
+ processNotLeaf(module, path);
}
@Override
public void visitDirectory(Component directory, Path<FormulaExecutorComponentVisitor.Counters> path) {
- processNotFile(directory, path);
+ processNotLeaf(directory, path);
}
@Override
@Override
public void visitView(Component view, Path<Counters> path) {
- processNotFile(view, path);
+ processNotLeaf(view, path);
}
@Override
public void visitSubView(Component subView, Path<Counters> path) {
- processNotFile(subView, path);
+ processNotLeaf(subView, path);
}
@Override
processLeaf(projectView, path);
}
- private void processNotFile(Component component, Path<FormulaExecutorComponentVisitor.Counters> path) {
+ private void processNotLeaf(Component component, Path<FormulaExecutorComponentVisitor.Counters> path) {
for (Formula formula : formulas) {
Counter counter = path.current().getCounter(formula);
// If there were no file under this node, the counter won't be initialized
}
private void processLeaf(Component file, Path<FormulaExecutorComponentVisitor.Counters> path) {
- FileAggregateContext counterContext = new FileAggregateContextImpl(file);
+ LeafAggregateContext counterContext = new LeafAggregateContextImpl(file);
for (Formula formula : formulas) {
Counter counter = formula.createNewCounter();
counter.aggregate(counterContext);
}
}
- private class FileAggregateContextImpl implements FileAggregateContext {
+ private class LeafAggregateContextImpl implements LeafAggregateContext {
private final Component file;
- public FileAggregateContextImpl(Component file) {
+ public LeafAggregateContextImpl(Component file) {
this.file = file;
}
@Override
- public Component getFile() {
+ public Component getLeaf() {
return file;
}
--- /dev/null
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+package org.sonar.server.computation.formula;
+
+import com.google.common.base.Optional;
+import java.util.List;
+import org.sonar.server.computation.component.Component;
+import org.sonar.server.computation.measure.Measure;
+import org.sonar.server.computation.period.Period;
+
+/**
+ * The context passing information to {@link Counter#aggregate(LeafAggregateContext)}.
+ */
+public interface LeafAggregateContext {
+
+ /**
+ * The Component representing the currently processed leaf.
+ */
+ Component getLeaf();
+
+ /**
+ * Retrieve the measure for the current component for the specified metric key if it exists.
+ */
+ Optional<Measure> getMeasure(String metricKey);
+
+ /**
+ * Lists of Periods defined for the current project. They can be used to retrieve variations Measure.
+ */
+ List<Period> getPeriods();
+
+}
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
Optional<Measure> measureOptional = context.getMeasure(metricKey);
if (measureOptional.isPresent()) {
addValue(measureOptional.get().getIntValue());
package org.sonar.server.computation.formula.coverage;
import com.google.common.base.Optional;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.measure.Measure;
import org.sonar.server.computation.measure.MeasureVariations;
import org.sonar.server.computation.period.Period;
return (100.0 * coveredLines) / lines;
}
- static long getLongMeasureValue(FileAggregateContext counterContext, String metricKey) {
+ static long getLongMeasureValue(LeafAggregateContext counterContext, String metricKey) {
Measure measure = counterContext.getMeasure(metricKey).or(DEFAULT_MEASURE);
if (measure.getValueType() == Measure.ValueType.NO_VALUE) {
return 0L;
return measure.getLongValue();
}
- static MeasureVariations getMeasureVariations(FileAggregateContext counterContext, String metricKey) {
+ static MeasureVariations getMeasureVariations(LeafAggregateContext counterContext, String metricKey) {
Optional<Measure> measure = counterContext.getMeasure(metricKey);
if (!measure.isPresent() || !measure.get().hasVariations()) {
return DEFAULT_VARIATIONS;
package org.sonar.server.computation.formula.coverage;
import org.sonar.server.computation.formula.Counter;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
/**
* A counter used to create a measure which are based on a count of elements and coveredElements.
}
@Override
- public void aggregate(FileAggregateContext context) {
- if (context.getFile().getFileAttributes().isUnitTest()) {
+ public void aggregate(LeafAggregateContext context) {
+ if (context.getLeaf().getFileAttributes().isUnitTest()) {
return;
}
- aggregateForSupportedFile(context);
+ aggregateForSupportedLeaf(context);
}
- protected abstract void aggregateForSupportedFile(FileAggregateContext counterContext);
+ protected abstract void aggregateForSupportedLeaf(LeafAggregateContext counterContext);
}
package org.sonar.server.computation.formula.coverage;
import org.sonar.server.computation.formula.Counter;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.formula.counter.LongVariationValue;
/**
}
@Override
- public void aggregate(FileAggregateContext context) {
- if (context.getFile().getFileAttributes().isUnitTest()) {
+ public void aggregate(LeafAggregateContext context) {
+ if (context.getLeaf().getFileAttributes().isUnitTest()) {
return;
}
aggregateForSupportedFile(context);
}
- protected abstract void aggregateForSupportedFile(FileAggregateContext counterContext);
+ protected abstract void aggregateForSupportedFile(LeafAggregateContext counterContext);
}
*/
package org.sonar.server.computation.formula.coverage;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import static org.sonar.server.computation.formula.coverage.CoverageUtils.getLongMeasureValue;
}
@Override
- protected void aggregateForSupportedFile(FileAggregateContext counterContext) {
+ protected void aggregateForSupportedLeaf(LeafAggregateContext counterContext) {
this.elements = getLongMeasureValue(counterContext, metricKeys.getLines())
+ getLongMeasureValue(counterContext, metricKeys.getConditions());
this.coveredElements = this.elements
package org.sonar.server.computation.formula.coverage;
import com.google.common.base.Optional;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.measure.Measure;
import org.sonar.server.computation.measure.MeasureVariations;
import org.sonar.server.computation.period.Period;
}
@Override
- public void aggregateForSupportedFile(FileAggregateContext counterContext) {
+ public void aggregateForSupportedFile(LeafAggregateContext counterContext) {
Optional<Measure> newLinesMeasure = counterContext.getMeasure(metricKeys.getLines());
if (!newLinesMeasure.isPresent() || !newLinesMeasure.get().hasVariations()) {
return;
*/
package org.sonar.server.computation.formula.coverage;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import static org.sonar.server.computation.formula.coverage.CoverageUtils.getLongMeasureValue;
}
@Override
- protected void aggregateForSupportedFile(FileAggregateContext counterContext) {
+ protected void aggregateForSupportedLeaf(LeafAggregateContext counterContext) {
this.elements = getLongMeasureValue(counterContext, metricKeys.getCovered());
this.coveredElements = this.elements - getLongMeasureValue(counterContext, metricKeys.getUncovered());
}
*/
package org.sonar.server.computation.formula.coverage;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.measure.MeasureVariations;
import org.sonar.server.computation.period.Period;
}
@Override
- protected void aggregateForSupportedFile(FileAggregateContext counterContext) {
+ protected void aggregateForSupportedFile(LeafAggregateContext counterContext) {
MeasureVariations newConditions = getMeasureVariations(counterContext, metricKeys.getCovered());
MeasureVariations uncoveredConditions = getMeasureVariations(counterContext, metricKeys.getUncovered());
for (Period period : counterContext.getPeriods()) {
import org.sonar.server.computation.component.TreeRootHolder;
import org.sonar.server.computation.formula.Counter;
import org.sonar.server.computation.formula.CreateMeasureContext;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.formula.Formula;
import org.sonar.server.computation.formula.FormulaExecutorComponentVisitor;
import org.sonar.server.computation.formula.SumCounter;
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
publicApiCounter.aggregate(context);
publicUndocumentedApiCounter.aggregate(context);
}
new CodeCoverageFormula(),
new BranchCoverageFormula(),
new LineCoverageFormula(),
-
- // integration test
+ // integration test
new SumFormula(IT_LINES_TO_COVER_KEY),
new SumFormula(IT_UNCOVERED_LINES_KEY),
new SumFormula(IT_CONDITIONS_TO_COVER_KEY),
new ItCoverageFormula(),
new ItBranchCoverageFormula(),
new ItLineCoverageFormula(),
-
- // overall test
+ // overall test
new SumFormula(OVERALL_LINES_TO_COVER_KEY),
new SumFormula(OVERALL_UNCOVERED_LINES_KEY),
new SumFormula(OVERALL_CONDITIONS_TO_COVER_KEY),
import org.sonar.server.computation.component.TreeRootHolder;
import org.sonar.server.computation.formula.Counter;
import org.sonar.server.computation.formula.CreateMeasureContext;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.formula.Formula;
import org.sonar.server.computation.formula.FormulaExecutorComponentVisitor;
import org.sonar.server.computation.formula.SumCounter;
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
Optional<Measure> measureOptional = context.getMeasure(metricKey);
if (measureOptional.isPresent()) {
value += measureOptional.get().getIntValue();
import org.sonar.server.computation.component.TreeRootHolder;
import org.sonar.server.computation.formula.Counter;
import org.sonar.server.computation.formula.CreateMeasureContext;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.formula.Formula;
import org.sonar.server.computation.formula.FormulaExecutorComponentVisitor;
import org.sonar.server.computation.measure.Measure;
}
@Override
- public void aggregate(FileAggregateContext context) {
- String language = context.getFile().getFileAttributes().getLanguageKey();
+ public void aggregate(LeafAggregateContext context) {
+ String language = context.getLeaf().getFileAttributes().getLanguageKey();
Optional<Measure> ncloc = context.getMeasure(CoreMetrics.NCLOC_KEY);
if (ncloc.isPresent()) {
multiset.add(language == null ? UNKNOWN_LANGUAGE_KEY : language, ncloc.get().getIntValue());
import org.sonar.server.computation.component.PathAwareCrawler;
import org.sonar.server.computation.component.TreeRootHolder;
import org.sonar.server.computation.formula.CreateMeasureContext;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.formula.Formula;
import org.sonar.server.computation.formula.FormulaExecutorComponentVisitor;
import org.sonar.server.computation.formula.counter.IntVariationValue;
}
@Override
- public void aggregate(FileAggregateContext context) {
- Component fileComponent = context.getFile();
+ public void aggregate(LeafAggregateContext context) {
+ Component fileComponent = context.getLeaf();
BatchReport.Changesets componentScm = batchReportReader.readChangesets(fileComponent.getReportAttributes().getRef());
if (componentScm == null) {
return;
import org.sonar.server.computation.component.TreeRootHolder;
import org.sonar.server.computation.formula.Counter;
import org.sonar.server.computation.formula.CreateMeasureContext;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.formula.Formula;
import org.sonar.server.computation.formula.FormulaExecutorComponentVisitor;
import org.sonar.server.computation.formula.SumCounter;
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
testsCounter.aggregate(context);
testsErrorsCounter.aggregate(context);
testsFailuresCounter.aggregate(context);
.setByMetricKey(FUNCTIONS_KEY)
.build();
- FileAggregateContext fileAggregateContext = mock(FileAggregateContext.class);
+ LeafAggregateContext leafAggregateContext = mock(LeafAggregateContext.class);
CreateMeasureContext createMeasureContext = new DumbCreateMeasureContext(
ReportComponent.builder(Component.Type.PROJECT, 1).build(), mock(Metric.class), mock(PeriodsHolder.class));
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10d);
addMeasure(FUNCTIONS_KEY, 2d);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext).get().getDoubleValue()).isEqualTo(5d);
}
AverageFormula.AverageCounter anotherCounter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10d);
addMeasure(FUNCTIONS_KEY, 2d);
- anotherCounter.aggregate(fileAggregateContext);
+ anotherCounter.aggregate(leafAggregateContext);
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
counter.aggregate(anotherCounter);
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10d);
addMeasure(FUNCTIONS_KEY, 2d);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext).get().getDoubleValue()).isEqualTo(5d);
}
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10);
addMeasure(FUNCTIONS_KEY, 2);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext).get().getDoubleValue()).isEqualTo(5);
}
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10L);
addMeasure(FUNCTIONS_KEY, 2L);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext).get().getDoubleValue()).isEqualTo(5L);
}
public void not_create_measure_when_aggregated_measure_has_no_value() {
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10L);
- when(fileAggregateContext.getMeasure(FUNCTIONS_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().createNoValue()));
- counter.aggregate(fileAggregateContext);
+ when(leafAggregateContext.getMeasure(FUNCTIONS_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().createNoValue()));
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext)).isAbsent();
}
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10L);
- when(fileAggregateContext.getMeasure(FUNCTIONS_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().create("data")));
- counter.aggregate(fileAggregateContext);
+ when(leafAggregateContext.getMeasure(FUNCTIONS_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().create("data")));
+ counter.aggregate(leafAggregateContext);
BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext);
}
@Test
public void no_measure_created_when_counter_has_no_value() {
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
- when(fileAggregateContext.getMeasure(anyString())).thenReturn(Optional.<Measure>absent());
- counter.aggregate(fileAggregateContext);
+ when(leafAggregateContext.getMeasure(anyString())).thenReturn(Optional.<Measure>absent());
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext)).isAbsent();
}
public void not_create_measure_when_only_one_measure() {
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10L);
- when(fileAggregateContext.getMeasure(FUNCTIONS_KEY)).thenReturn(Optional.<Measure>absent());
- counter.aggregate(fileAggregateContext);
+ when(leafAggregateContext.getMeasure(FUNCTIONS_KEY)).thenReturn(Optional.<Measure>absent());
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext)).isAbsent();
}
AverageFormula.AverageCounter counter = BASIC_AVERAGE_FORMULA.createNewCounter();
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10d);
addMeasure(FUNCTIONS_KEY, 0d);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_AVERAGE_FORMULA.createMeasure(counter, createMeasureContext)).isAbsent();
}
.build();
AverageFormula.AverageCounter counter = underTest.createNewCounter();
- when(fileAggregateContext.getMeasure(COMPLEXITY_IN_FUNCTIONS_KEY)).thenReturn(Optional.<Measure>absent());
+ when(leafAggregateContext.getMeasure(COMPLEXITY_IN_FUNCTIONS_KEY)).thenReturn(Optional.<Measure>absent());
addMeasure(COMPLEXITY_KEY, 10d);
addMeasure(FUNCTIONS_KEY, 2d);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(underTest.createMeasure(counter, createMeasureContext).get().getDoubleValue()).isEqualTo(5d);
}
addMeasure(COMPLEXITY_IN_FUNCTIONS_KEY, 10d);
addMeasure(COMPLEXITY_KEY, 12d);
addMeasure(FUNCTIONS_KEY, 2d);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(underTest.createMeasure(counter, createMeasureContext).get().getDoubleValue()).isEqualTo(5d);
}
private void addMeasure(String metricKey, double value) {
- when(fileAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
+ when(leafAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
}
private void addMeasure(String metricKey, int value) {
- when(fileAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
+ when(leafAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
}
private void addMeasure(String metricKey, long value) {
- when(fileAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
+ when(leafAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
}
}
@Rule
public ExpectedException thrown = ExpectedException.none();
- FileAggregateContext fileAggregateContext = mock(FileAggregateContext.class);
+ LeafAggregateContext leafAggregateContext = mock(LeafAggregateContext.class);
CreateMeasureContext projectCreateMeasureContext = new DumbCreateMeasureContext(
ReportComponent.builder(Component.Type.PROJECT, 1).build(), mock(Metric.class), mock(PeriodsHolder.class));
CreateMeasureContext fileCreateMeasureContext = new DumbCreateMeasureContext(
public void create_measure() {
DistributionFormula.DistributionCounter counter = BASIC_DISTRIBUTION_FORMULA.createNewCounter();
addMeasure(FUNCTION_COMPLEXITY_DISTRIBUTION_KEY, "0=3;3=7;6=10");
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(BASIC_DISTRIBUTION_FORMULA.createMeasure(counter, projectCreateMeasureContext).get().getData()).isEqualTo("0=3;3=7;6=10");
}
public void create_measure_when_counter_is_aggregating_from_another_counter() {
DistributionFormula.DistributionCounter anotherCounter = BASIC_DISTRIBUTION_FORMULA.createNewCounter();
addMeasure(FUNCTION_COMPLEXITY_DISTRIBUTION_KEY, "0=3;3=7;6=10");
- anotherCounter.aggregate(fileAggregateContext);
+ anotherCounter.aggregate(leafAggregateContext);
DistributionFormula.DistributionCounter counter = BASIC_DISTRIBUTION_FORMULA.createNewCounter();
counter.aggregate(anotherCounter);
@Test
public void create_no_measure_when_no_value() {
DistributionFormula.DistributionCounter counter = BASIC_DISTRIBUTION_FORMULA.createNewCounter();
- when(fileAggregateContext.getMeasure(FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(Optional.<Measure>absent());
- counter.aggregate(fileAggregateContext);
+ when(leafAggregateContext.getMeasure(FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(Optional.<Measure>absent());
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_DISTRIBUTION_FORMULA.createMeasure(counter, projectCreateMeasureContext)).isAbsent();
}
public void not_create_measure_when_on_file() {
DistributionFormula.DistributionCounter counter = BASIC_DISTRIBUTION_FORMULA.createNewCounter();
addMeasure(FUNCTION_COMPLEXITY_DISTRIBUTION_KEY, "0=3;3=7;6=10");
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_DISTRIBUTION_FORMULA.createMeasure(counter, fileCreateMeasureContext)).isAbsent();
}
private void addMeasure(String metricKey, String value) {
- when(fileAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
+ when(leafAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
}
}
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
// verify the context which is passed to the method
- assertThat(context.getFile().getReportAttributes().getRef()).isIn(1111, 1112, 1211);
+ assertThat(context.getLeaf().getReportAttributes().getRef()).isIn(1111, 1112, 1211);
assertThat(context.getPeriods()).isEqualTo(periodsHolder.getPeriods());
Optional<Measure> measureOptional = context.getMeasure(LINES_KEY);
}
@Override
- public void aggregate(FileAggregateContext context) {
+ public void aggregate(LeafAggregateContext context) {
// verify the context which is passed to the method
- assertThat(context.getFile().getReportAttributes().getRef()).isIn(1111, 1112, 1211);
+ assertThat(context.getLeaf().getReportAttributes().getRef()).isIn(1111, 1112, 1211);
assertThat(context.getPeriods()).isEqualTo(periodsHolder.getPeriods());
Optional<Measure> measureOptional = context.getMeasure(NEW_LINES_TO_COVER_KEY);
private final static String METRIC_KEY = "metric";
- FileAggregateContext fileAggregateContext = mock(FileAggregateContext.class);
+ LeafAggregateContext leafAggregateContext = mock(LeafAggregateContext.class);
SumCounter sumCounter = new SumCounter(METRIC_KEY);
@Test
public void aggregate_from_context() {
- when(fileAggregateContext.getMeasure(METRIC_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(10)));
+ when(leafAggregateContext.getMeasure(METRIC_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(10)));
- sumCounter.aggregate(fileAggregateContext);
+ sumCounter.aggregate(leafAggregateContext);
assertThat(sumCounter.getValue().get()).isEqualTo(10);
}
@Test
public void no_value_when_aggregate_from_context_but_no_measure() {
- when(fileAggregateContext.getMeasure(anyString())).thenReturn(Optional.<Measure>absent());
+ when(leafAggregateContext.getMeasure(anyString())).thenReturn(Optional.<Measure>absent());
- sumCounter.aggregate(fileAggregateContext);
+ sumCounter.aggregate(leafAggregateContext);
assertThat(sumCounter.getValue()).isAbsent();
}
@Test
public void aggregate_from_counter() {
- when(fileAggregateContext.getMeasure(METRIC_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(10)));
+ when(leafAggregateContext.getMeasure(METRIC_KEY)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(10)));
SumCounter anotherCounter = new SumCounter(METRIC_KEY);
- anotherCounter.aggregate(fileAggregateContext);
+ anotherCounter.aggregate(leafAggregateContext);
sumCounter.aggregate(anotherCounter);
@Rule
public ExpectedException thrown = ExpectedException.none();
- FileAggregateContext fileAggregateContext = mock(FileAggregateContext.class);
+ LeafAggregateContext leafAggregateContext = mock(LeafAggregateContext.class);
CreateMeasureContext projectCreateMeasureContext = new DumbCreateMeasureContext(
ReportComponent.builder(Component.Type.PROJECT, 1).build(), mock(Metric.class), mock(PeriodsHolder.class));
CreateMeasureContext fileCreateMeasureContext = new DumbCreateMeasureContext(
public void create_measure() {
SumCounter counter = BASIC_SUM_FORMULA.createNewCounter();
addMeasure(LINES_KEY, 10);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
assertThat(BASIC_SUM_FORMULA.createMeasure(counter, projectCreateMeasureContext).get().getIntValue()).isEqualTo(10);
}
public void create_measure_when_counter_is_aggregating_from_another_counter() {
SumCounter anotherCounter = BASIC_SUM_FORMULA.createNewCounter();
addMeasure(LINES_KEY, 10);
- anotherCounter.aggregate(fileAggregateContext);
+ anotherCounter.aggregate(leafAggregateContext);
SumCounter counter = BASIC_SUM_FORMULA.createNewCounter();
counter.aggregate(anotherCounter);
public void not_create_measure_on_file() {
SumCounter counter = BASIC_SUM_FORMULA.createNewCounter();
addMeasure(LINES_KEY, 10);
- counter.aggregate(fileAggregateContext);
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_SUM_FORMULA.createMeasure(counter, fileCreateMeasureContext)).isAbsent();
}
@Test
public void do_not_create_measures_when_no_values() {
SumCounter counter = BASIC_SUM_FORMULA.createNewCounter();
- when(fileAggregateContext.getMeasure(LINES_KEY)).thenReturn(Optional.<Measure>absent());
- counter.aggregate(fileAggregateContext);
+ when(leafAggregateContext.getMeasure(LINES_KEY)).thenReturn(Optional.<Measure>absent());
+ counter.aggregate(leafAggregateContext);
Assertions.assertThat(BASIC_SUM_FORMULA.createMeasure(counter, projectCreateMeasureContext)).isAbsent();
}
private void addMeasure(String metricKey, int value) {
- when(fileAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
+ when(leafAggregateContext.getMeasure(metricKey)).thenReturn(Optional.of(Measure.newMeasureBuilder().create(value)));
}
}
import org.junit.rules.ExpectedException;
import org.junit.rules.ExternalResource;
import org.sonar.server.computation.component.Component;
-import org.sonar.server.computation.formula.FileAggregateContext;
+import org.sonar.server.computation.formula.LeafAggregateContext;
import org.sonar.server.computation.measure.Measure;
import org.sonar.server.computation.measure.MeasureVariations;
import org.sonar.server.computation.period.Period;
public static final MeasureVariations DEFAULT_VARIATIONS = new MeasureVariations(0d, 0d, 0d, 0d, 0d);
@Rule
- public FileAggregateContextRule fileAggregateContext = new FileAggregateContextRule();
+ public LeafAggregateContextRule fileAggregateContext = new LeafAggregateContextRule();
@Rule
public ExpectedException expectedException = ExpectedException.none();
return new Period(periodIndex, "mode" + periodIndex, null, 963L + periodIndex, 9865L + periodIndex);
}
- private static class FileAggregateContextRule extends ExternalResource implements FileAggregateContext {
+ private static class LeafAggregateContextRule extends ExternalResource implements LeafAggregateContext {
private final Map<String, Measure> measures = new HashMap<>();
- public FileAggregateContextRule put(String metricKey, Measure measure) {
+ public LeafAggregateContextRule put(String metricKey, Measure measure) {
checkNotNull(metricKey);
checkNotNull(measure);
checkState(!measures.containsKey(metricKey));
}
@Override
- public Component getFile() {
+ public Component getLeaf() {
throw new UnsupportedOperationException("getFile is not supported");
}