aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-ce-task/src
diff options
context:
space:
mode:
authorTravis Collins <travistx@gmail.com>2025-03-04 15:09:04 -0700
committersonartech <sonartech@sonarsource.com>2025-03-05 20:03:08 +0000
commit9e773383d24c716fe56f334a24c000d8f0575d70 (patch)
tree9eab241811c98bd98ca6f2ebc83f1bfe7d4e8ca4 /server/sonar-ce-task/src
parent859a87748a1f005d8d565da6f526f7d5bc45d0ea (diff)
downloadsonarqube-9e773383d24c716fe56f334a24c000d8f0575d70.tar.gz
sonarqube-9e773383d24c716fe56f334a24c000d8f0575d70.zip
SQRP-302 Add CE statistics mirroring the telemetry values
Diffstat (limited to 'server/sonar-ce-task/src')
-rw-r--r--server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStep.java4
-rw-r--r--server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStepExecutor.java16
-rw-r--r--server/sonar-ce-task/src/test/java/org/sonar/ce/task/step/ComputationStepExecutorTest.java47
-rw-r--r--server/sonar-ce-task/src/testFixtures/java/org/sonar/ce/task/step/TestComputationStepContext.java8
4 files changed, 63 insertions, 12 deletions
diff --git a/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStep.java b/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStep.java
index 1609fab0332..7ab1e8848f3 100644
--- a/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStep.java
+++ b/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStep.java
@@ -54,7 +54,9 @@ public interface ComputationStep {
interface Context {
Statistics getStatistics();
- void addTelemetryMetric(String key, Object value);
+ void addTelemetryMetricOnly(String key, Object value);
+
+ void addTelemetryWithStatistic(String key, Object value);
}
void execute(Context context);
diff --git a/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStepExecutor.java b/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStepExecutor.java
index cd0a2378e2e..cd1e3d343f4 100644
--- a/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStepExecutor.java
+++ b/server/sonar-ce-task/src/main/java/org/sonar/ce/task/step/ComputationStepExecutor.java
@@ -19,10 +19,6 @@
*/
package org.sonar.ce.task.step;
-import static com.google.common.base.Preconditions.checkArgument;
-import static java.lang.String.format;
-import static java.util.Objects.requireNonNull;
-
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
@@ -33,6 +29,10 @@ import org.sonar.ce.task.telemetry.StepsTelemetryUnavailableHolderImpl;
import org.sonar.core.util.logs.Profiler;
import org.springframework.beans.factory.annotation.Autowired;
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.lang.String.format;
+import static java.util.Objects.requireNonNull;
+
public final class ComputationStepExecutor {
private static final Logger LOGGER = LoggerFactory.getLogger(ComputationStepExecutor.class);
@@ -142,8 +142,14 @@ public final class ComputationStepExecutor {
}
@Override
- public void addTelemetryMetric(String key, Object value) {
+ public void addTelemetryMetricOnly(String key, Object value) {
+ stepsTelemetryHolder.add(key, value);
+ }
+
+ @Override
+ public void addTelemetryWithStatistic(String key, Object value) {
stepsTelemetryHolder.add(key, value);
+ statistics.add(key, value);
}
}
}
diff --git a/server/sonar-ce-task/src/test/java/org/sonar/ce/task/step/ComputationStepExecutorTest.java b/server/sonar-ce-task/src/test/java/org/sonar/ce/task/step/ComputationStepExecutorTest.java
index dba68d93156..a6bbf9a3044 100644
--- a/server/sonar-ce-task/src/test/java/org/sonar/ce/task/step/ComputationStepExecutorTest.java
+++ b/server/sonar-ce-task/src/test/java/org/sonar/ce/task/step/ComputationStepExecutorTest.java
@@ -72,8 +72,8 @@ public class ComputationStepExecutorTest {
}
@Test
- public void execute_call_execute_on_ComputationStep_with_metrics() {
- ComputationStep step = new StepWithMetrics("Step", "step.foo", "100", "step.bar", "20");
+ public void execute_call_execute_on_ComputationStepWithTelemetryMetricOnly() {
+ ComputationStep step = new StepWithTelemetryMetricOnly("Step", "step.foo", "100", "step.bar", "20");
new ComputationStepExecutor(mockComputationSteps(step), taskInterrupter, stepsTelemetryHolder, listener)
.execute();
@@ -83,6 +83,21 @@ public class ComputationStepExecutorTest {
}
@Test
+ public void execute_call_execute_on_ComputationStepWithTelemetryWithStatistic() {
+ ComputationStep step = new StepWithTelemetrywithStatistic("Step", "step.foo", "100", "step.bar", "20");
+
+ new ComputationStepExecutor(mockComputationSteps(step), taskInterrupter, stepsTelemetryHolder, listener)
+ .execute();
+
+ assertThat(stepsTelemetryHolder.getTelemetryMetrics()).containsEntry("step.foo", "100");
+ assertThat(stepsTelemetryHolder.getTelemetryMetrics()).containsEntry("step.bar", "20");
+ List<String> infoLogs = logTester.logs(Level.INFO);
+ System.out.println("infoLogs = " + infoLogs);
+ assertThat(infoLogs).hasSize(1);
+ assertThat(infoLogs.get(0)).contains("Step | step.foo=100 | step.bar=20 | status=SUCCESS | time=");
+ }
+
+ @Test
public void execute_let_exception_thrown_by_ComputationStep_go_up_as_is() {
String message = "Exception should go up";
@@ -333,11 +348,33 @@ public class ComputationStepExecutorTest {
}
}
- private static class StepWithMetrics implements ComputationStep {
+ private static class StepWithTelemetryMetricOnly implements ComputationStep {
+ private final String description;
+ private final String[] metrics;
+
+ private StepWithTelemetryMetricOnly(String description, String... metrics) {
+ this.description = description;
+ this.metrics = metrics;
+ }
+
+ @Override
+ public void execute(Context context) {
+ for (int i = 0; i < metrics.length; i += 2) {
+ context.addTelemetryMetricOnly(metrics[i], metrics[i + 1]);
+ }
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+ }
+
+ private static class StepWithTelemetrywithStatistic implements ComputationStep {
private final String description;
private final String[] metrics;
- private StepWithMetrics(String description, String... metrics) {
+ private StepWithTelemetrywithStatistic(String description, String... metrics) {
this.description = description;
this.metrics = metrics;
}
@@ -345,7 +382,7 @@ public class ComputationStepExecutorTest {
@Override
public void execute(Context context) {
for (int i = 0; i < metrics.length; i += 2) {
- context.addTelemetryMetric(metrics[i], metrics[i + 1]);
+ context.addTelemetryWithStatistic(metrics[i], metrics[i + 1]);
}
}
diff --git a/server/sonar-ce-task/src/testFixtures/java/org/sonar/ce/task/step/TestComputationStepContext.java b/server/sonar-ce-task/src/testFixtures/java/org/sonar/ce/task/step/TestComputationStepContext.java
index ebb9c4b7d3a..7f3674b401e 100644
--- a/server/sonar-ce-task/src/testFixtures/java/org/sonar/ce/task/step/TestComputationStepContext.java
+++ b/server/sonar-ce-task/src/testFixtures/java/org/sonar/ce/task/step/TestComputationStepContext.java
@@ -43,10 +43,16 @@ public class TestComputationStepContext implements ComputationStep.Context {
}
@Override
- public void addTelemetryMetric(String key, Object value) {
+ public void addTelemetryMetricOnly(String key, Object value) {
metrics.add(key, value);
}
+ @Override
+ public void addTelemetryWithStatistic(String key, Object value) {
+ metrics.add(key, value);
+ statistics.add(key, value);
+ }
+
public Map<String, Object> getTelemetryMetrics() {
return metrics.getTelemetryMetrics();
}