try (DbSession dbSession = dbClient.openSession(true)) {
Component project = treeRootHolder.getRoot();
- new DepthTraversalTypeAwareCrawler(new DuplicationVisitor(dbSession, analysisMetadataHolder.getUuid())).visit(project);
+ DuplicationVisitor visitor = new DuplicationVisitor(dbSession, analysisMetadataHolder.getUuid());
+ new DepthTraversalTypeAwareCrawler(visitor).visit(project);
dbSession.commit();
+ context.getStatistics().add("inserts", visitor.count);
}
}
private final DbSession session;
private final String analysisUuid;
+ private int count = 0;
private DuplicationVisitor(DbSession session, String analysisUuid) {
super(CrawlerDepthLimit.FILE, PRE_ORDER);
indexInFile++;
}
}
+ count += indexInFile;
}
}
@Override
public String getDescription() {
- return "Persist cross project duplications index";
+ return "Persist cross project duplications";
}
}
when(crossProjectDuplicationStatusHolder.isEnabled()).thenReturn(true);
reportReader.putDuplicationBlocks(FILE_1_REF, singletonList(CPD_TEXT_BLOCK));
- underTest.execute(new TestComputationStepContext());
+ TestComputationStepContext context = new TestComputationStepContext();
+ underTest.execute(context);
Map<String, Object> dto = dbTester.selectFirst("select HASH, START_LINE, END_LINE, INDEX_IN_FILE, COMPONENT_UUID, ANALYSIS_UUID from duplications_index");
assertThat(dto.get("HASH")).isEqualTo(CPD_TEXT_BLOCK.getHash());
assertThat(dto.get("INDEX_IN_FILE")).isEqualTo(0L);
assertThat(dto.get("COMPONENT_UUID")).isEqualTo(FILE_1.getUuid());
assertThat(dto.get("ANALYSIS_UUID")).isEqualTo(ANALYSIS_UUID);
+ context.getStatistics().assertValue("inserts", 1);
}
@Test
.setEndLine(15)
.build()));
- underTest.execute(new TestComputationStepContext());
+ TestComputationStepContext context = new TestComputationStepContext();
+ underTest.execute(context);
List<Map<String, Object>> dtos = dbTester.select("select HASH, START_LINE, END_LINE, INDEX_IN_FILE, COMPONENT_UUID, ANALYSIS_UUID from duplications_index");
assertThat(dtos).extracting("HASH").containsOnly(CPD_TEXT_BLOCK.getHash(), "b1234353e96320ff");
assertThat(dtos).extracting("INDEX_IN_FILE").containsOnly(0L, 1L);
assertThat(dtos).extracting("COMPONENT_UUID").containsOnly(FILE_1.getUuid());
assertThat(dtos).extracting("ANALYSIS_UUID").containsOnly(ANALYSIS_UUID);
+ context.getStatistics().assertValue("inserts", 2);
}
@Test
when(crossProjectDuplicationStatusHolder.isEnabled()).thenReturn(true);
reportReader.putDuplicationBlocks(FILE_1_REF, Collections.emptyList());
- underTest.execute(new TestComputationStepContext());
+ TestComputationStepContext context = new TestComputationStepContext();
+ underTest.execute(context);
assertThat(dbTester.countRowsOfTable("duplications_index")).isEqualTo(0);
+ context.getStatistics().assertValue("inserts", 0);
}
@Test
when(crossProjectDuplicationStatusHolder.isEnabled()).thenReturn(false);
reportReader.putDuplicationBlocks(FILE_1_REF, singletonList(CPD_TEXT_BLOCK));
- underTest.execute(new TestComputationStepContext());
+ TestComputationStepContext context = new TestComputationStepContext();
+ underTest.execute(context);
assertThat(dbTester.countRowsOfTable("duplications_index")).isEqualTo(0);
+ context.getStatistics().assertValue("inserts", null);
}
}