aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZipeng WU <zipeng.wu@sonarsource.com>2023-05-26 15:39:56 +0200
committersonartech <sonartech@sonarsource.com>2023-05-26 20:03:09 +0000
commit9443d2e8130ee0f81b0c5775f3bee1e197df79a0 (patch)
treef29b1985d638fa922e879bb57e9587595bd435cb
parentb7f90fc1c4d20d202fd244b3db791884c6a37293 (diff)
downloadsonarqube-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>
-rw-r--r--server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java8
-rw-r--r--server/sonar-webserver-core/src/test/java/org/sonar/server/telemetry/TelemetryDataLoaderImplTest.java25
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));