From 98aa88962583e2e8f59a5dd110aaa980282e6fe5 Mon Sep 17 00:00:00 2001 From: alain <108417558+alain-kermis-sonarsource@users.noreply.github.com> Date: Wed, 28 Sep 2022 14:29:30 +0200 Subject: SONAR-17195 Move unanalyzed language flags to project level for telemetry --- .../org/sonar/server/telemetry/TelemetryData.java | 39 +++++++------------ .../server/telemetry/TelemetryDataJsonWriter.java | 5 +-- .../telemetry/TelemetryDataJsonWriterTest.java | 45 +++++++++++----------- 3 files changed, 39 insertions(+), 50 deletions(-) (limited to 'server/sonar-server-common') diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryData.java b/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryData.java index 09b2c1ee5a1..d8caa44576c 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryData.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryData.java @@ -41,8 +41,6 @@ public class TelemetryData { private final Long installationDate; private final String installationVersion; private final boolean inDocker; - private final Boolean hasUnanalyzedC; - private final Boolean hasUnanalyzedCpp; private final List customSecurityConfigs; private final List users; private final List projects; @@ -58,8 +56,6 @@ public class TelemetryData { installationDate = builder.installationDate; installationVersion = builder.installationVersion; inDocker = builder.inDocker; - hasUnanalyzedC = builder.hasUnanalyzedC; - hasUnanalyzedCpp = builder.hasUnanalyzedCpp; customSecurityConfigs = builder.customSecurityConfigs == null ? emptyList() : builder.customSecurityConfigs; users = builder.users; projects = builder.projects; @@ -102,14 +98,6 @@ public class TelemetryData { return inDocker; } - public Optional hasUnanalyzedC() { - return Optional.ofNullable(hasUnanalyzedC); - } - - public Optional hasUnanalyzedCpp() { - return Optional.ofNullable(hasUnanalyzedCpp); - } - public List getCustomSecurityConfigs() { return customSecurityConfigs; } @@ -140,8 +128,6 @@ public class TelemetryData { private Long installationDate; private String installationVersion; private boolean inDocker = false; - private Boolean hasUnanalyzedC; - private Boolean hasUnanalyzedCpp; private List customSecurityConfigs; private List users; private List projects; @@ -196,16 +182,6 @@ public class TelemetryData { return this; } - Builder setHasUnanalyzedC(@Nullable Boolean hasUnanalyzedC) { - this.hasUnanalyzedC = hasUnanalyzedC; - return this; - } - - Builder setHasUnanalyzedCpp(@Nullable Boolean hasUnanalyzedCpp) { - this.hasUnanalyzedCpp = hasUnanalyzedCpp; - return this; - } - Builder setCustomSecurityConfigs(List customSecurityConfigs) { this.customSecurityConfigs = customSecurityConfigs; return this; @@ -288,14 +264,19 @@ public class TelemetryData { private final String projectUuid; private final Long branchCount; private final Long pullRequestCount; + private final Boolean hasUnanalyzedC; + private final Boolean hasUnanalyzedCpp; private final String scm; private final String ci; private final String devopsPlatform; - ProjectStatistics(String projectUuid, Long branchCount, Long pullRequestCount, @Nullable String scm, @Nullable String ci, @Nullable String devopsPlatform) { + ProjectStatistics(String projectUuid, Long branchCount, Long pullRequestCount, @Nullable Boolean hasUnanalyzedC, @Nullable Boolean hasUnanalyzedCpp, + @Nullable String scm, @Nullable String ci, @Nullable String devopsPlatform) { this.projectUuid = projectUuid; this.branchCount = branchCount; this.pullRequestCount = pullRequestCount; + this.hasUnanalyzedC = hasUnanalyzedC; + this.hasUnanalyzedCpp = hasUnanalyzedCpp; this.scm = scm; this.ci = ci; this.devopsPlatform = devopsPlatform; @@ -327,5 +308,13 @@ public class TelemetryData { public String getDevopsPlatform() { return devopsPlatform; } + + public Optional hasUnanalyzedC() { + return Optional.ofNullable(hasUnanalyzedC); + } + + public Optional hasUnanalyzedCpp() { + return Optional.ofNullable(hasUnanalyzedCpp); + } } } diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryDataJsonWriter.java b/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryDataJsonWriter.java index c6ab6177ff8..8af18b0e16e 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryDataJsonWriter.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryDataJsonWriter.java @@ -61,9 +61,6 @@ public class TelemetryDataJsonWriter { json.endArray(); } - statistics.hasUnanalyzedC().ifPresent(hasUnanalyzedC -> json.prop("hasUnanalyzedC", hasUnanalyzedC)); - statistics.hasUnanalyzedCpp().ifPresent(hasUnanalyzedCpp -> json.prop("hasUnanalyzedCpp", hasUnanalyzedCpp)); - if (statistics.getInstallationDate() != null) { json.prop("installationDate", toUtc(statistics.getInstallationDate())); } @@ -132,6 +129,8 @@ public class TelemetryDataJsonWriter { json.prop("scm", project.getScm()); json.prop("ci", project.getCi()); json.prop("devopsPlatform", project.getDevopsPlatform()); + project.hasUnanalyzedC().ifPresent(hasUnanalyzedC -> json.prop("hasUnanalyzedC", hasUnanalyzedC)); + project.hasUnanalyzedCpp().ifPresent(hasUnanalyzedCpp -> json.prop("hasUnanalyzedCpp", hasUnanalyzedCpp)); json.endObject(); }); json.endArray(); diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/telemetry/TelemetryDataJsonWriterTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/telemetry/TelemetryDataJsonWriterTest.java index 4d6d482f62d..6bc9a0c35fe 100644 --- a/server/sonar-server-common/src/test/java/org/sonar/server/telemetry/TelemetryDataJsonWriterTest.java +++ b/server/sonar-server-common/src/test/java/org/sonar/server/telemetry/TelemetryDataJsonWriterTest.java @@ -229,21 +229,6 @@ public class TelemetryDataJsonWriterTest { "}"); } - @Test - public void writes_has_unanalyzed_languages() { - TelemetryData data = SOME_TELEMETRY_DATA - .setHasUnanalyzedC(true) - .setHasUnanalyzedCpp(false) - .build(); - - String json = writeTelemetryData(data); - - assertJson(json).isSimilarTo("{" + - " \"hasUnanalyzedC\":true," + - " \"hasUnanalyzedCpp\":false," + - "}"); - } - @Test public void writes_security_custom_config() { TelemetryData data = SOME_TELEMETRY_DATA @@ -325,9 +310,9 @@ public class TelemetryDataJsonWriterTest { } @Test - public void writes_all_projects_stats() { + public void writes_all_projects_stats_with_analyzed_languages() { TelemetryData data = SOME_TELEMETRY_DATA - .setProjectStatistics(getProjectStats()) + .setProjectStatistics(getProjectStats(true)) .build(); String json = writeTelemetryData(data); @@ -340,7 +325,9 @@ public class TelemetryDataJsonWriterTest { " \"pullRequestCount\": 2," + " \"scm\": \"scm-0\"," + " \"ci\": \"ci-0\"," + - " \"devopsPlatform\": \"devops-0\"" + + " \"devopsPlatform\": \"devops-0\"," + + " \"hasUnanalyzedC\": true," + + " \"hasUnanalyzedCpp\": false" + " }," + " {" + " \"projectUuid\": \"uuid-1\"," + @@ -348,7 +335,9 @@ public class TelemetryDataJsonWriterTest { " \"pullRequestCount\": 4," + " \"scm\": \"scm-1\"," + " \"ci\": \"ci-1\"," + - " \"devopsPlatform\": \"devops-1\"" + + " \"devopsPlatform\": \"devops-1\"," + + " \"hasUnanalyzedC\": false," + + " \"hasUnanalyzedCpp\": true" + " }," + " {" + " \"projectUuid\": \"uuid-2\"," + @@ -356,12 +345,24 @@ public class TelemetryDataJsonWriterTest { " \"pullRequestCount\": 6," + " \"scm\": \"scm-2\"," + " \"ci\": \"ci-2\"," + - " \"devopsPlatform\": \"devops-2\"" + + " \"devopsPlatform\": \"devops-2\"," + + " \"hasUnanalyzedC\": true," + + " \"hasUnanalyzedCpp\": false" + " }" + " ]" + "}"); } + @Test + public void writes_all_projects_stats_with_unanalyzed_languages() { + TelemetryData data = SOME_TELEMETRY_DATA + .setProjectStatistics(getProjectStats(false)) + .build(); + + String json = writeTelemetryData(data); + assertThat(json).doesNotContain("hasUnanalyzedC", "hasUnanalyzedCpp"); + } + @NotNull private static List getUsers() { return IntStream.range(0, 3) @@ -374,8 +375,8 @@ public class TelemetryDataJsonWriterTest { return IntStream.range(0, 3).mapToObj(i -> new TelemetryData.Project("uuid-" + i, 1L, "lang-" + i, (i + 1L) * 2L)).collect(Collectors.toList()); } - private List getProjectStats() { - return IntStream.range(0, 3).mapToObj(i -> new TelemetryData.ProjectStatistics("uuid-" + i, (i + 1L) * 2L, (i + 1L) * 2L, "scm-" + i, "ci-" + i, "devops-" + i)) + private List getProjectStats(boolean hasUnanalyzedLanguages) { + return IntStream.range(0, 3).mapToObj(i -> new TelemetryData.ProjectStatistics("uuid-" + i, (i + 1L) * 2L, (i + 1L) * 2L, hasUnanalyzedLanguages ? i % 2 == 0 : null, hasUnanalyzedLanguages ? i % 2 != 0 : null, "scm-" + i, "ci-" + i, "devops-" + i)) .collect(Collectors.toList()); } -- cgit v1.2.3