@@ -123,7 +123,7 @@ public class AverageFormula implements Formula<AverageFormula.AverageCounter> { | |||
} | |||
@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)); |
@@ -28,13 +28,14 @@ import static org.sonar.server.computation.component.Component.Type; | |||
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); | |||
} |
@@ -68,7 +68,7 @@ public class DistributionFormula implements Formula<DistributionFormula.Distribu | |||
} | |||
@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) { |
@@ -104,17 +104,17 @@ public class FormulaExecutorComponentVisitor extends PathAwareVisitorAdapter<For | |||
@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 | |||
@@ -124,12 +124,12 @@ public class FormulaExecutorComponentVisitor extends PathAwareVisitorAdapter<For | |||
@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 | |||
@@ -137,7 +137,7 @@ public class FormulaExecutorComponentVisitor extends PathAwareVisitorAdapter<For | |||
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 | |||
@@ -151,7 +151,7 @@ public class FormulaExecutorComponentVisitor extends PathAwareVisitorAdapter<For | |||
} | |||
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); | |||
@@ -176,15 +176,15 @@ public class FormulaExecutorComponentVisitor extends PathAwareVisitorAdapter<For | |||
} | |||
} | |||
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; | |||
} | |||
@@ -27,17 +27,17 @@ import org.sonar.server.computation.measure.Measure; | |||
import org.sonar.server.computation.period.Period; | |||
/** | |||
* The context passing information to {@link Counter#aggregate(FileAggregateContext)}. | |||
* The context passing information to {@link Counter#aggregate(LeafAggregateContext)}. | |||
*/ | |||
public interface FileAggregateContext { | |||
public interface LeafAggregateContext { | |||
/** | |||
* The Component representing the currently processed File. | |||
* The Component representing the currently processed leaf. | |||
*/ | |||
Component getFile(); | |||
Component getLeaf(); | |||
/** | |||
* Retrieve the measure for the current File with the metric key if it exists. | |||
* Retrieve the measure for the current component for the specified metric key if it exists. | |||
*/ | |||
Optional<Measure> getMeasure(String metricKey); | |||
@@ -45,7 +45,7 @@ public class SumCounter implements Counter<SumCounter> { | |||
} | |||
@Override | |||
public void aggregate(FileAggregateContext context) { | |||
public void aggregate(LeafAggregateContext context) { | |||
Optional<Measure> measureOptional = context.getMeasure(metricKey); | |||
if (measureOptional.isPresent()) { | |||
addValue(measureOptional.get().getIntValue()); |
@@ -20,7 +20,7 @@ | |||
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; | |||
@@ -39,7 +39,7 @@ public final class CoverageUtils { | |||
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; | |||
@@ -50,7 +50,7 @@ public final class CoverageUtils { | |||
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; |
@@ -20,7 +20,7 @@ | |||
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. | |||
@@ -36,12 +36,12 @@ public abstract class ElementsAndCoveredElementsCounter implements Counter<Eleme | |||
} | |||
@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); | |||
} |
@@ -20,7 +20,7 @@ | |||
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; | |||
/** | |||
@@ -37,12 +37,12 @@ public abstract class ElementsAndCoveredElementsVariationCounter implements Coun | |||
} | |||
@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); | |||
} |
@@ -19,7 +19,7 @@ | |||
*/ | |||
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; | |||
@@ -31,7 +31,7 @@ public final class LinesAndConditionsWithUncoveredCounter extends ElementsAndCov | |||
} | |||
@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 |
@@ -20,7 +20,7 @@ | |||
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; | |||
@@ -33,7 +33,7 @@ public final class LinesAndConditionsWithUncoveredVariationCounter extends Eleme | |||
} | |||
@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; |
@@ -19,7 +19,7 @@ | |||
*/ | |||
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; | |||
@@ -31,7 +31,7 @@ public final class SingleWithUncoveredCounter extends ElementsAndCoveredElements | |||
} | |||
@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()); | |||
} |
@@ -19,7 +19,7 @@ | |||
*/ | |||
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; | |||
@@ -35,7 +35,7 @@ public final class SingleWithUncoveredVariationCounter extends ElementsAndCovere | |||
} | |||
@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()) { |
@@ -27,7 +27,7 @@ import org.sonar.server.computation.component.PathAwareCrawler; | |||
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; | |||
@@ -181,7 +181,7 @@ public class CommentMeasuresStep implements ComputationStep { | |||
} | |||
@Override | |||
public void aggregate(FileAggregateContext context) { | |||
public void aggregate(LeafAggregateContext context) { | |||
publicApiCounter.aggregate(context); | |||
publicUndocumentedApiCounter.aggregate(context); | |||
} |
@@ -67,8 +67,7 @@ public class CoverageMeasuresStep implements ComputationStep { | |||
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), | |||
@@ -76,8 +75,7 @@ public class CoverageMeasuresStep implements ComputationStep { | |||
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), |
@@ -28,7 +28,7 @@ import org.sonar.server.computation.component.PathAwareCrawler; | |||
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; | |||
@@ -187,7 +187,7 @@ public class DuplicationMeasuresStep implements ComputationStep { | |||
} | |||
@Override | |||
public void aggregate(FileAggregateContext context) { | |||
public void aggregate(LeafAggregateContext context) { | |||
Optional<Measure> measureOptional = context.getMeasure(metricKey); | |||
if (measureOptional.isPresent()) { | |||
value += measureOptional.get().getIntValue(); |
@@ -32,7 +32,7 @@ import org.sonar.server.computation.component.PathAwareCrawler; | |||
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; | |||
@@ -115,8 +115,8 @@ public class LanguageDistributionMeasuresStep implements ComputationStep { | |||
} | |||
@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()); |
@@ -36,7 +36,7 @@ import org.sonar.server.computation.component.Component; | |||
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; | |||
@@ -297,8 +297,8 @@ public class NewCoverageMeasuresStep implements ComputationStep { | |||
} | |||
@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; |
@@ -27,7 +27,7 @@ import org.sonar.server.computation.component.PathAwareCrawler; | |||
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; | |||
@@ -138,7 +138,7 @@ public class UnitTestMeasuresStep implements ComputationStep { | |||
} | |||
@Override | |||
public void aggregate(FileAggregateContext context) { | |||
public void aggregate(LeafAggregateContext context) { | |||
testsCounter.aggregate(context); | |||
testsErrorsCounter.aggregate(context); | |||
testsFailuresCounter.aggregate(context); |
@@ -50,7 +50,7 @@ public class AverageFormulaTest { | |||
.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)); | |||
@@ -108,7 +108,7 @@ public class AverageFormulaTest { | |||
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); | |||
} | |||
@@ -118,7 +118,7 @@ public class AverageFormulaTest { | |||
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); | |||
@@ -131,7 +131,7 @@ public class AverageFormulaTest { | |||
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); | |||
} | |||
@@ -141,7 +141,7 @@ public class AverageFormulaTest { | |||
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); | |||
} | |||
@@ -151,7 +151,7 @@ public class AverageFormulaTest { | |||
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); | |||
} | |||
@@ -160,8 +160,8 @@ public class AverageFormulaTest { | |||
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(); | |||
} | |||
@@ -173,8 +173,8 @@ public class AverageFormulaTest { | |||
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); | |||
} | |||
@@ -182,8 +182,8 @@ public class AverageFormulaTest { | |||
@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(); | |||
} | |||
@@ -192,8 +192,8 @@ public class AverageFormulaTest { | |||
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(); | |||
} | |||
@@ -203,7 +203,7 @@ public class AverageFormulaTest { | |||
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(); | |||
} | |||
@@ -218,10 +218,10 @@ public class AverageFormulaTest { | |||
.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); | |||
} | |||
@@ -239,21 +239,21 @@ public class AverageFormulaTest { | |||
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))); | |||
} | |||
} |
@@ -43,7 +43,7 @@ public class DistributionFormulaTest { | |||
@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( | |||
@@ -71,7 +71,7 @@ public class DistributionFormulaTest { | |||
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"); | |||
} | |||
@@ -80,7 +80,7 @@ public class DistributionFormulaTest { | |||
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); | |||
@@ -91,8 +91,8 @@ public class DistributionFormulaTest { | |||
@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(); | |||
} | |||
@@ -101,13 +101,13 @@ public class DistributionFormulaTest { | |||
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))); | |||
} | |||
} |
@@ -287,9 +287,9 @@ public class FormulaExecutorComponentVisitorTest { | |||
} | |||
@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); | |||
@@ -339,9 +339,9 @@ public class FormulaExecutorComponentVisitorTest { | |||
} | |||
@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); |
@@ -34,7 +34,7 @@ public class SumCounterTest { | |||
private final static String METRIC_KEY = "metric"; | |||
FileAggregateContext fileAggregateContext = mock(FileAggregateContext.class); | |||
LeafAggregateContext leafAggregateContext = mock(LeafAggregateContext.class); | |||
SumCounter sumCounter = new SumCounter(METRIC_KEY); | |||
@@ -45,27 +45,27 @@ public class SumCounterTest { | |||
@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); | |||
@@ -43,7 +43,7 @@ public class SumFormulaTest { | |||
@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( | |||
@@ -71,7 +71,7 @@ public class SumFormulaTest { | |||
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); | |||
} | |||
@@ -80,7 +80,7 @@ public class SumFormulaTest { | |||
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); | |||
@@ -92,7 +92,7 @@ public class SumFormulaTest { | |||
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(); | |||
} | |||
@@ -100,14 +100,14 @@ public class SumFormulaTest { | |||
@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))); | |||
} | |||
} |
@@ -28,7 +28,7 @@ import org.junit.Test; | |||
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; | |||
@@ -47,7 +47,7 @@ public class CoverageUtilsTest { | |||
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(); | |||
@@ -127,10 +127,10 @@ public class CoverageUtilsTest { | |||
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)); | |||
@@ -144,7 +144,7 @@ public class CoverageUtilsTest { | |||
} | |||
@Override | |||
public Component getFile() { | |||
public Component getLeaf() { | |||
throw new UnsupportedOperationException("getFile is not supported"); | |||
} | |||