aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server-common
diff options
context:
space:
mode:
authorMichal Duda <michal.duda@sonarsource.com>2021-02-26 15:03:43 +0100
committersonartech <sonartech@sonarsource.com>2021-03-04 20:12:49 +0000
commitbd5b4a869dfe128ccbebc86af58c4a4bb77962e1 (patch)
tree05afc91040043017e2252eaa82d93a0c1a63c950 /server/sonar-server-common
parentd59b2466752eed8e91f178a346b5da9b86e80d3e (diff)
downloadsonarqube-bd5b4a869dfe128ccbebc86af58c4a4bb77962e1.tar.gz
sonarqube-bd5b4a869dfe128ccbebc86af58c4a4bb77962e1.zip
SONAR-14525 include SCM usage information in telemetry
Diffstat (limited to 'server/sonar-server-common')
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryData.java14
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/telemetry/TelemetryDataJsonWriter.java16
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/telemetry/TelemetryDataJsonWriterTest.java23
3 files changed, 49 insertions, 4 deletions
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 4710e3f9d75..b625d1aead5 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
@@ -43,6 +43,7 @@ public class TelemetryData {
private final Map<String, Long> almIntegrationCountByAlm;
private final Map<String, Long> nclocByLanguage;
private final List<String> externalAuthenticationProviders;
+ private final Map<String, Long> projectCountByScm;
private final EditionProvider.Edition edition;
private final String licenseType;
private final Long installationDate;
@@ -73,6 +74,7 @@ public class TelemetryData {
hasUnanalyzedCpp = builder.hasUnanalyzedCpp;
customSecurityConfigs = builder.customSecurityConfigs == null ? emptyList() : builder.customSecurityConfigs;
externalAuthenticationProviders = builder.externalAuthenticationProviders;
+ projectCountByScm = builder.projectCountByScm;
}
public String getServerId() {
@@ -155,6 +157,10 @@ public class TelemetryData {
return externalAuthenticationProviders;
}
+ public Map<String, Long> getProjectCountByScm() {
+ return projectCountByScm;
+ }
+
static Builder builder() {
return new Builder();
}
@@ -178,6 +184,8 @@ public class TelemetryData {
private Boolean hasUnanalyzedCpp;
private List<String> customSecurityConfigs;
private List<String> externalAuthenticationProviders;
+ private Map<String, Long> projectCountByScm;
+
private Builder() {
// enforce static factory method
@@ -188,6 +196,11 @@ public class TelemetryData {
return this;
}
+ Builder setProjectCountByScm(Map<String, Long> projectCountByScm) {
+ this.projectCountByScm = projectCountByScm;
+ return this;
+ }
+
Builder setServerId(String serverId) {
this.serverId = serverId;
return this;
@@ -283,6 +296,7 @@ public class TelemetryData {
requireNonNull(database);
requireNonNull(usingBranches);
requireNonNull(externalAuthenticationProviders);
+ requireNonNull(projectCountByScm);
return new TelemetryData(this);
}
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 17366c51ebe..e675e1dc101 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
@@ -26,6 +26,8 @@ import static org.sonar.api.measures.CoreMetrics.NCLOC_KEY;
public class TelemetryDataJsonWriter {
+ public static final String COUNT = "count";
+
public void writeTelemetryData(JsonWriter json, TelemetryData statistics) {
json.beginObject();
json.prop("id", statistics.getServerId());
@@ -55,7 +57,7 @@ public class TelemetryDataJsonWriter {
statistics.getProjectCountByLanguage().forEach((language, count) -> {
json.beginObject();
json.prop("language", language);
- json.prop("count", count);
+ json.prop(COUNT, count);
json.endObject();
});
json.endArray();
@@ -73,7 +75,7 @@ public class TelemetryDataJsonWriter {
statistics.getAlmIntegrationCountByAlm().forEach((alm, count) -> {
json.beginObject();
json.prop("alm", alm);
- json.prop("count", count);
+ json.prop(COUNT, count);
json.endObject();
});
json.endArray();
@@ -93,6 +95,16 @@ public class TelemetryDataJsonWriter {
statistics.getExternalAuthenticationProviders().forEach(json::value);
json.endArray();
+ json.name("projectCountByScm");
+ json.beginArray();
+ statistics.getProjectCountByScm().forEach((scm, count) -> {
+ json.beginObject();
+ json.prop("scm", scm);
+ json.prop(COUNT, count);
+ json.endObject();
+ });
+ json.endArray();
+
if (statistics.getInstallationDate() != null) {
json.prop("installationDate", statistics.getInstallationDate());
}
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 141e4b57198..ca3e14f774c 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
@@ -37,6 +37,7 @@ import org.sonar.core.platform.EditionProvider;
import org.sonar.core.util.stream.MoreCollectors;
import org.sonar.server.measure.index.ProjectMeasuresStatistics;
+import static java.util.Arrays.asList;
import static java.util.stream.Collectors.joining;
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
import static org.assertj.core.api.Assertions.assertThat;
@@ -56,7 +57,8 @@ public class TelemetryDataJsonWriterTest {
.setNclocByLanguage(Collections.emptyMap())
.build())
.setNcloc(42L)
- .setExternalAuthenticationProviders(Arrays.asList("github", "gitlab"))
+ .setExternalAuthenticationProviders(asList("github", "gitlab"))
+ .setProjectCountByScm(Collections.emptyMap())
.setDatabase(new TelemetryData.Database("H2", "11"))
.setUsingBranches(true);
@@ -216,6 +218,23 @@ public class TelemetryDataJsonWriterTest {
}
@Test
+ public void write_project_count_by_scm() {
+ TelemetryData data = SOME_TELEMETRY_DATA
+ .setProjectCountByScm(ImmutableMap.of("git", 5L, "svn", 4L, "cvs", 3L, "undetected", 2L))
+ .build();
+
+ String json = writeTelemetryData(data);
+
+ assertJson(json).isSimilarTo("{" +
+ " \"projectCountByScm\": ["
+ + "{ \"scm\":\"git\", \"count\":5},"
+ + "{ \"scm\":\"svn\", \"count\":4},"
+ + "{ \"scm\":\"cvs\", \"count\":3},"
+ + "{ \"scm\":\"undetected\", \"count\":2},"
+ + "]}");
+ }
+
+ @Test
public void write_project_stats_by_language() {
int projectCount = random.nextInt(8909);
Map<String, Long> countByLanguage = IntStream.range(0, 1 + random.nextInt(10))
@@ -368,7 +387,7 @@ public class TelemetryDataJsonWriterTest {
@DataProvider
public static Object[][] allEditions() {
return Arrays.stream(EditionProvider.Edition.values())
- .map(t -> new Object[] {t})
+ .map(t -> new Object[]{t})
.toArray(Object[][]::new);
}