]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-19556 projects dao is not misusing component_uuid anymore
authorLukasz Jarocki <lukasz.jarocki@sonarsource.com>
Tue, 13 Jun 2023 11:41:39 +0000 (13:41 +0200)
committersonartech <sonartech@sonarsource.com>
Tue, 20 Jun 2023 13:10:18 +0000 (13:10 +0000)
server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java
server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml
server/sonar-db-dao/src/main/resources/org/sonar/db/project/ProjectMapper.xml

index 3941bb5b4f7dd0c77479de15532ac330cf1c1bad..31bbc77973f51c08cd5c18f3898c4188ca6e43d0 100644 (file)
@@ -65,7 +65,7 @@ public class ProjectDaoIT {
   private final System2 system2 = new AlwaysIncreasingSystem2(1000L);
 
   @Rule
-  public DbTester db = DbTester.create(system2);
+  public DbTester db = DbTester.create(system2, true);
 
   private final AuditPersister auditPersister = mock(AuditPersister.class);
 
@@ -291,40 +291,45 @@ public class ProjectDaoIT {
   @Test
   public void select_project_uuids_associated_to_default_quality_profile_for_specific_language() {
     String language = "xoo";
-    Set<ComponentDto> projects = insertProjects(nextInt(10));
+    Set<ProjectData> projects = insertProjects(nextInt(10));
     insertDefaultQualityProfile(language);
     insertProjectsLiveMeasures(language, projects);
 
     Set<String> projectUuids = projectDao.selectProjectUuidsAssociatedToDefaultQualityProfileByLanguage(db.getSession(), language);
 
-    assertThat(projectUuids)
-      .containsExactlyInAnyOrderElementsOf(extractComponentUuids(projects));
+    assertThat(projectUuids).containsExactlyInAnyOrderElementsOf(extractComponentUuids(projects));
   }
 
   @Test
   public void update_ncloc_should_update_project() {
-    ComponentDto project = db.components().insertPublicProject().getMainBranchComponent();
+    String projectUuid = db.components().insertPublicProject().projectUuid();
 
-    projectDao.updateNcloc(db.getSession(), project.uuid(), 10L);
+    projectDao.updateNcloc(db.getSession(), projectUuid, 10L);
 
     Assertions.assertThat(projectDao.getNclocSum(db.getSession())).isEqualTo(10L);
   }
 
   @Test
   public void getNcloc_sum_compute_correctly_sum_of_projects() {
-    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().getMainBranchComponent().uuid(), 1L);
-    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().getMainBranchComponent().uuid(), 20L);
-    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().getMainBranchComponent().uuid(), 100L);
-    Assertions.assertThat(projectDao.getNclocSum(db.getSession())).isEqualTo(121L);
+    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().projectUuid(), 1L);
+    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().projectUuid(), 20L);
+    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().projectUuid(), 100L);
+
+    long nclocSum = projectDao.getNclocSum(db.getSession());
+
+    Assertions.assertThat(nclocSum).isEqualTo(121L);
   }
 
   @Test
   public void getNcloc_sum_compute_correctly_sum_of_projects_while_excluding_project() {
-    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().getMainBranchComponent().uuid(), 1L);
-    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().getMainBranchComponent().uuid(), 20L);
-    ComponentDto project3 = db.components().insertPublicProject().getMainBranchComponent();
-    projectDao.updateNcloc(db.getSession(), project3.uuid(), 100L);
-    Assertions.assertThat(projectDao.getNclocSum(db.getSession(), project3.uuid())).isEqualTo(21L);
+    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().projectUuid(), 1L);
+    projectDao.updateNcloc(db.getSession(), db.components().insertPublicProject().projectUuid(), 20L);
+    ProjectDto project3 = db.components().insertPublicProject().getProjectDto();
+    projectDao.updateNcloc(db.getSession(), project3.getUuid(), 100L);
+
+    long nclocSum = projectDao.getNclocSum(db.getSession(), project3.getUuid());
+
+    Assertions.assertThat(nclocSum).isEqualTo(21L);
   }
 
   @Test
@@ -344,41 +349,41 @@ public class ProjectDaoIT {
     db.qualityProfiles().setAsDefault(profile);
   }
 
-  private static Set<String> extractComponentUuids(Collection<ComponentDto> components) {
+  private static Set<String> extractComponentUuids(Collection<ProjectData> components) {
     return components
       .stream()
-      .map(ComponentDto::uuid)
+      .map(ProjectData::projectUuid)
       .collect(Collectors.toSet());
   }
 
-  private Set<ComponentDto> insertProjects(int number) {
+  private Set<ProjectData> insertProjects(int number) {
     return IntStream
       .rangeClosed(0, number)
-      .mapToObj(x -> db.components().insertPrivateProject().getMainBranchComponent())
+      .mapToObj(x -> db.components().insertPrivateProject())
       .collect(Collectors.toSet());
   }
 
-  private Consumer<LiveMeasureDto> configureLiveMeasure(String language, MetricDto metric, ComponentDto project) {
+  private Consumer<LiveMeasureDto> configureLiveMeasure(String language, MetricDto metric, ProjectDto project, ComponentDto componentDto) {
     return liveMeasure -> liveMeasure
       .setMetricUuid(metric.getUuid())
-      .setComponentUuid(project.uuid())
-      .setProjectUuid(project.uuid())
+      .setComponentUuid(componentDto.uuid())
+      .setProjectUuid(project.getUuid())
       .setData(language + "=" + nextInt(10));
   }
 
-  private Consumer<ComponentDto> insertLiveMeasure(String language, MetricDto metric) {
-    return project -> db.measures().insertLiveMeasure(project, metric, configureLiveMeasure(language, metric, project));
+  private Consumer<ProjectData> insertLiveMeasure(String language, MetricDto metric) {
+    return (projectData) -> db.measures().insertLiveMeasure(projectData.getMainBranchComponent(), metric,
+      configureLiveMeasure(language, metric, projectData.getProjectDto(), projectData.getMainBranchComponent()));
   }
 
-  private void insertProjectsLiveMeasures(String language, Set<ComponentDto> projects) {
+  private void insertProjectsLiveMeasures(String language, Set<ProjectData> projects) {
     Consumer<MetricDto> configureMetric = metric -> metric
       .setValueType(STRING.name())
       .setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY);
 
     MetricDto metric = db.measures().insertMetric(configureMetric);
 
-    projects
-      .forEach(insertLiveMeasure(language, metric));
+    projects.forEach(insertLiveMeasure(language, metric));
   }
 
   private void assertProject(ProjectDto dto, String name, String kee, String uuid, String desc, @Nullable String tags, boolean isPrivate) {
index 1395671580d2678553d8ed0c2402d5eaa29b42be..7a775ff681e30299c053e59a52e3196f0ac3037f 100644 (file)
     select count(1)
       from live_measures lm
       inner join metrics m on m.uuid = lm.metric_uuid AND m.name = #{metric, jdbcType=VARCHAR}
-      inner join projects p on p.uuid = lm.component_uuid and p.qualifier = 'TRK'
+      inner join projects p on p.uuid = lm.project_uuid and p.qualifier = 'TRK'
   </select>
 
   <insert id="insert" parameterType="map" useGeneratedKeys="false">
index 36bb101f9aec2b2f6ab5e532b2a74aa1eaa17320..f8a5d2ea185433e4b1a908a2ee0e004233c46092 100644 (file)
     from
       live_measures lm
     inner join
-      projects p on (p.uuid = lm.project_uuid and p.uuid = lm.component_uuid)
+      projects p on p.uuid = lm.project_uuid
     inner join
       metrics m on m.uuid = lm.metric_uuid
+    inner join
+      project_branches pb on pb.uuid = lm.component_uuid
     where
       m.name = 'ncloc_language_distribution'
+      and pb.is_main = ${_true}
       and p.uuid not in (select project_uuid from project_qprofiles)
       and
       <foreach collection="languageFilters" index="index" item="languageFilter" open="(" separator=" or " close=")">