diff options
author | Zipeng WU <zipeng.wu@sonarsource.com> | 2023-05-26 15:39:56 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-05-26 20:03:09 +0000 |
commit | 9443d2e8130ee0f81b0c5775f3bee1e197df79a0 (patch) | |
tree | f29b1985d638fa922e879bb57e9587595bd435cb | |
parent | b7f90fc1c4d20d202fd244b3db791884c6a37293 (diff) | |
download | sonarqube-9443d2e8130ee0f81b0c5775f3bee1e197df79a0.tar.gz sonarqube-9443d2e8130ee0f81b0c5775f3bee1e197df79a0.zip |
SONAR-19297 Accommodate Community Edition NCD specific logic for telemetry (#8385)
Co-authored-by: Nolwenn Cadic <nolwenn.cadic@sonarsource.com>
2 files changed, 30 insertions, 3 deletions
diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java index 03c441fe5b7..d0bac974b2c 100644 --- a/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java +++ b/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java @@ -217,7 +217,7 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader { hasInstance = true; } else if (projectUuid != null) { var value = dto.getType() == REFERENCE_BRANCH ? branchUuidByKey.get(createBranchUniqueKey(projectUuid, dto.getValue())) : dto.getValue(); - if (branchUuid == null) { + if (branchUuid == null || isCommunityEdition()) { ncd = new NewCodeDefinition(dto.getType().name(), value, "project"); this.ncdByProject.put(projectUuid, ncd); } else { @@ -234,6 +234,11 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader { } } + private boolean isCommunityEdition() { + var edition = editionProvider.get(); + return edition.isPresent() && edition.get() == COMMUNITY; + } + private static String createBranchUniqueKey(String projectUuid, @Nullable String branchKey) { return projectUuid + "-" + branchKey; } @@ -430,7 +435,6 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader { return configuration.get(property).isPresent(); } - private TelemetryData.ManagedInstanceInformation buildManagedInstanceInformation() { String provider = managedInstanceService.isInstanceExternallyManaged() ? managedInstanceService.getProviderName() : null; return new TelemetryData.ManagedInstanceInformation(managedInstanceService.isInstanceExternallyManaged(), provider); diff --git a/server/sonar-webserver-core/src/test/java/org/sonar/server/telemetry/TelemetryDataLoaderImplTest.java b/server/sonar-webserver-core/src/test/java/org/sonar/server/telemetry/TelemetryDataLoaderImplTest.java index 0df240825c3..84c76209d16 100644 --- a/server/sonar-webserver-core/src/test/java/org/sonar/server/telemetry/TelemetryDataLoaderImplTest.java +++ b/server/sonar-webserver-core/src/test/java/org/sonar/server/telemetry/TelemetryDataLoaderImplTest.java @@ -48,7 +48,6 @@ import org.sonar.db.component.AnalysisPropertyDto; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.SnapshotDto; import org.sonar.db.metric.MetricDto; -import org.sonar.db.newcodeperiod.NewCodePeriodDto; import org.sonar.db.newcodeperiod.NewCodePeriodType; import org.sonar.db.qualitygate.QualityGateDto; import org.sonar.db.user.UserDbTester; @@ -337,6 +336,30 @@ public class TelemetryDataLoaderImplTest { } @Test + public void test_ncd_on_community_edition() { + server.setId("AU-TpxcB-iU5OvuD2FL7").setVersion("7.5.4"); + when(editionProvider.get()).thenReturn(Optional.of(COMMUNITY)); + + ComponentDto project = db.components().insertPublicProject().getMainBranchComponent(); + + ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setBranchType(BRANCH)); + + db.newCodePeriods().insert(project.uuid(), branch.branchUuid(), NewCodePeriodType.NUMBER_OF_DAYS, "30"); + + var projectNcdId = new NewCodeDefinition(NewCodePeriodType.NUMBER_OF_DAYS.name(), "30", "project").hashCode(); + + TelemetryData data = communityUnderTest.load(); + + assertThat(data.getProjectStatistics()) + .extracting(ProjectStatistics::getBranchCount, ProjectStatistics::getNcdId) + .containsExactlyInAnyOrder(tuple(2L, projectNcdId)); + + assertThat(data.getBranches()) + .extracting(TelemetryData.Branch::branchUuid, TelemetryData.Branch::ncdId) + .contains(tuple(branch.uuid(), projectNcdId)); + } + + @Test public void data_contains_weekly_count_sonarlint_users() { db.users().insertUser(c -> c.setLastSonarlintConnectionDate(NOW - 100_000L)); db.users().insertUser(c -> c.setLastSonarlintConnectionDate(NOW)); |