Browse Source

SONAR-11077 log nb of inserts in CE PersistMeasuresStep

tags/7.5
Simon Brandhof 5 years ago
parent
commit
7719667797

+ 5
- 1
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStep.java View File

@@ -79,13 +79,16 @@ public class PersistMeasuresStep implements ComputationStep {
@Override
public void execute(ComputationStep.Context context) {
try (DbSession dbSession = dbClient.openSession(true)) {
new DepthTraversalTypeAwareCrawler(new MeasureVisitor(dbSession)).visit(treeRootHolder.getRoot());
MeasureVisitor visitor = new MeasureVisitor(dbSession);
new DepthTraversalTypeAwareCrawler(visitor).visit(treeRootHolder.getRoot());
dbSession.commit();
context.getStatistics().add("inserts", visitor.inserts);
}
}

private class MeasureVisitor extends TypeAwareVisitorAdapter {
private final DbSession session;
private int inserts = 0;

private MeasureVisitor(DbSession session) {
super(CrawlerDepthLimit.LEAVES, PRE_ORDER);
@@ -133,6 +136,7 @@ public class PersistMeasuresStep implements ComputationStep {
measuresByMetricKey.getValue().stream().filter(NonEmptyMeasure.INSTANCE).forEach(measure -> {
MeasureDto measureDto = measureToMeasureDto.toMeasureDto(measure, metric, component);
measureDao.insert(session, measureDto);
inserts++;
});
}
}

+ 18
- 7
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStepTest.java View File

@@ -95,7 +95,7 @@ public class PersistMeasuresStepTest extends BaseStepTest {
measureRepository.addRawMeasure(REF_3, STRING_METRIC.getKey(), newMeasureBuilder().create("dir-value"));
measureRepository.addRawMeasure(REF_4, STRING_METRIC.getKey(), newMeasureBuilder().create("file-value"));

execute(true);
TestComputationStepContext context = execute(true);

// project, module and dir measures are persisted, but not file measures
assertThat(db.countRowsOfTable("project_measures")).isEqualTo(3);
@@ -103,6 +103,7 @@ public class PersistMeasuresStepTest extends BaseStepTest {
assertThat(selectMeasure("module-uuid", STRING_METRIC).get().getData()).isEqualTo("module-value");
assertThat(selectMeasure("dir-uuid", STRING_METRIC).get().getData()).isEqualTo("dir-value");
assertThatMeasuresAreNotPersisted("file-uuid");
assertNbOfInserts(context, 3);
}

@Test
@@ -115,7 +116,7 @@ public class PersistMeasuresStepTest extends BaseStepTest {
measureRepository.addRawMeasure(REF_3, STRING_METRIC.getKey(), newMeasureBuilder().create("dir-value"));
measureRepository.addRawMeasure(REF_4, STRING_METRIC.getKey(), newMeasureBuilder().create("file-value"));

execute(false);
TestComputationStepContext context = execute(false);

// project, module and dir measures are persisted, but not file measures
assertThat(db.countRowsOfTable("project_measures")).isEqualTo(2);
@@ -123,6 +124,7 @@ public class PersistMeasuresStepTest extends BaseStepTest {
assertThat(selectMeasure("module-uuid", STRING_METRIC).get().getData()).isEqualTo("module-value");
assertThatMeasuresAreNotPersisted("dir-uuid");
assertThatMeasuresAreNotPersisted("file-uuid");
assertNbOfInserts(context, 2);
}

@Test
@@ -131,10 +133,11 @@ public class PersistMeasuresStepTest extends BaseStepTest {
measureRepository.addRawMeasure(REF_1, STRING_METRIC.getKey(), newMeasureBuilder().createNoValue());
measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().createNoValue());

execute(false);
TestComputationStepContext context = execute(false);

assertThatMeasureIsNotPersisted("project-uuid", STRING_METRIC);
assertThatMeasureIsNotPersisted("project-uuid", INT_METRIC);
assertNbOfInserts(context, 0);
}

@Test
@@ -142,11 +145,12 @@ public class PersistMeasuresStepTest extends BaseStepTest {
prepareProject();
measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().setVariation(42.0).createNoValue());

execute(false);
TestComputationStepContext context = execute(false);

MeasureDto persistedMeasure = selectMeasure("project-uuid", INT_METRIC).get();
assertThat(persistedMeasure.getValue()).isNull();
assertThat(persistedMeasure.getVariation()).isEqualTo(42.0);
assertNbOfInserts(context, 1);
}

@Test
@@ -158,11 +162,12 @@ public class PersistMeasuresStepTest extends BaseStepTest {
measureRepository.addRawMeasure(REF_2, STRING_METRIC.getKey(), newMeasureBuilder().create("subview-value"));
measureRepository.addRawMeasure(REF_3, STRING_METRIC.getKey(), newMeasureBuilder().create("project-value"));

execute(true);
TestComputationStepContext context = execute(true);

assertThat(db.countRowsOfTable("project_measures")).isEqualTo(2);
assertThat(selectMeasure("view-uuid", STRING_METRIC).get().getData()).isEqualTo("view-value");
assertThat(selectMeasure("subview-uuid", STRING_METRIC).get().getData()).isEqualTo("subview-value");
assertNbOfInserts(context, 2);
}

private void prepareProject() {
@@ -216,9 +221,11 @@ public class PersistMeasuresStepTest extends BaseStepTest {
assertThatMeasureIsNotPersisted(componentUuid, INT_METRIC);
}

private void execute(boolean persistDirectories) {
private TestComputationStepContext execute(boolean persistDirectories) {
TestComputationStepContext context = new TestComputationStepContext();
new PersistMeasuresStep(dbClient, metricRepository, new MeasureToMeasureDto(analysisMetadataHolder, treeRootHolder), treeRootHolder, measureRepository, persistDirectories)
.execute(new TestComputationStepContext());
.execute(context);
return context;
}

private Optional<MeasureDto> selectMeasure(String componentUuid, Metric metric) {
@@ -237,6 +244,10 @@ public class PersistMeasuresStepTest extends BaseStepTest {
return componentDto;
}

private static void assertNbOfInserts(TestComputationStepContext context, int expected) {
context.getStatistics().assertValue("inserts", expected);
}

@Override
protected ComputationStep step() {
return new PersistMeasuresStep(dbClient, metricRepository, new MeasureToMeasureDto(analysisMetadataHolder, treeRootHolder), treeRootHolder, measureRepository, true);

Loading…
Cancel
Save