diff options
author | Travis Collins <travistx@gmail.com> | 2025-03-04 15:09:04 -0700 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2025-03-05 20:03:08 +0000 |
commit | 9e773383d24c716fe56f334a24c000d8f0575d70 (patch) | |
tree | 9eab241811c98bd98ca6f2ebc83f1bfe7d4e8ca4 /server/sonar-ce-task/src | |
parent | 859a87748a1f005d8d565da6f526f7d5bc45d0ea (diff) | |
download | sonarqube-9e773383d24c716fe56f334a24c000d8f0575d70.tar.gz sonarqube-9e773383d24c716fe56f334a24c000d8f0575d70.zip |
SQRP-302 Add CE statistics mirroring the telemetry values
Diffstat (limited to 'server/sonar-ce-task/src')
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(); } |