This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git
The following commit(s) were added to refs/heads/rocketmq-studio by this push:
new 7c04959a fix(metrics): normalize auth modes with root locale (#1488)
7c04959a is described below
commit 7c04959a5e25a4320818c890fa3a69d1a40f5bcf
Author: yyqdbngt <[email protected]>
AuthorDate: Tue Aug 11 17:55:26 2026 +0800
fix(metrics): normalize auth modes with root locale (#1488)
Co-authored-by: yyqdbngt <[email protected]>
---
.../studio/cluster/metrics/MetricsService.java | 3 +-
.../studio/cluster/metrics/MetricsServiceTest.java | 37 ++++++++++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
b/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
index 5a3c94a6..04ceec22 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
@@ -28,6 +28,7 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -119,7 +120,7 @@ public class MetricsService {
if (!StringUtils.hasText(auth)) {
return "none";
}
- return switch (auth.trim().toLowerCase()) {
+ return switch (auth.trim().toLowerCase(Locale.ROOT)) {
case "basic auth", "basic" -> "basic";
case "bearer token", "bearer" -> "bearer";
default -> "none";
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
b/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
index 96efdd3e..353d0ab1 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
@@ -29,6 +29,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -421,6 +422,42 @@ class MetricsServiceTest {
verifyNoInteractions(metricsSourceFactory, metricsSource);
}
+ @Test
+ void queryByDataSourceShouldNormalizeAuthIndependentlyOfDefaultLocale() {
+ MetricQueryDTO query = MetricQueryDTO.builder()
+ .metric("cpu")
+ .start(1700000000L)
+ .end(1700003600L)
+ .step("1m")
+ .build();
+ MetricsDataSourceQueryRequest request = new
MetricsDataSourceQueryRequest();
+ request.setQuery(query);
+ request.setUsername("prom");
+ request.setPassword("secret");
+ DataSourceVO dataSource = DataSourceVO.builder()
+ .key("ds-1")
+ .name("prometheus-prod")
+ .type("prometheus")
+ .url("http://prometheus:9090")
+ .auth("BASIC")
+ .build();
+ when(settingsService.getDataSource("ds-1")).thenReturn(dataSource);
+
when(metricsSourceFactory.create(any(MetricsDataSourceConfig.class))).thenReturn(metricsSource);
+
when(metricsSource.query(any(MetricQueryDTO.class))).thenReturn(metricData("cpu",
List.of()));
+ Locale originalLocale = Locale.getDefault();
+
+ try {
+ Locale.setDefault(Locale.forLanguageTag("tr-TR"));
+ metricsService.queryByDataSource("ds-1", request);
+ } finally {
+ Locale.setDefault(originalLocale);
+ }
+
+ ArgumentCaptor<MetricsDataSourceConfig> configCaptor =
ArgumentCaptor.forClass(MetricsDataSourceConfig.class);
+ verify(metricsSourceFactory).create(configCaptor.capture());
+ assertThat(configCaptor.getValue().getAuthType()).isEqualTo("basic");
+ }
+
@Test
void queryByDataSourceShouldRejectMissingKey() {
MetricsDataSourceQueryRequest request = new
MetricsDataSourceQueryRequest();