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 c2488ccb test: add regression coverage from closed duplicates (#1497,
#1498, #1499)
c2488ccb is described below
commit c2488ccb45b7ae66a3a37a6e4fab8a62a02367f4
Author: lizhimins <[email protected]>
AuthorDate: Tue Aug 11 18:02:03 2026 +0800
test: add regression coverage from closed duplicates (#1497, #1498, #1499)
* fix: persist updated topic metadata
* test: add regression coverage from closed duplicates (#1497, #1498, #1499)
---------
Co-authored-by: yyqdbngt <[email protected]>
---
.../studio/ops/alert/AlertServiceTest.java | 45 ++++++++++++++++++++++
.../apache/RocketMQAdminClientImplTest.java | 22 +++++++++++
2 files changed, 67 insertions(+)
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/ops/alert/AlertServiceTest.java
b/server/src/test/java/org/apache/rocketmq/studio/ops/alert/AlertServiceTest.java
index f764f9ec..ecf8f60a 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/ops/alert/AlertServiceTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/ops/alert/AlertServiceTest.java
@@ -153,6 +153,31 @@ class AlertServiceTest {
.contains("expr: rocketmq_consumer_lag_messages > 2000");
}
+ @Test
+ void exportPrometheusRulesYamlShouldDisambiguateDuplicateAlertNames() {
+ AlertRuleVO first = AlertRuleVO.builder()
+ .name("High Lag")
+ .metric("rocketmq_consumer_lag_messages")
+ .operator(">")
+ .threshold(1000)
+ .enabled(true)
+ .build();
+ AlertRuleVO second = AlertRuleVO.builder()
+ .name("High-Lag")
+ .metric("rocketmq_consumer_lag_messages")
+ .operator(">")
+ .threshold(2000)
+ .enabled(true)
+ .build();
+ when(alertRepository.findAllRules()).thenReturn(List.of(first,
second));
+
+ String result = alertService.exportPrometheusRulesYaml();
+
+ assertThat(result)
+ .contains("- alert: HighLag\n")
+ .contains("- alert: HighLag_2\n");
+ }
+
@Test
void
exportPrometheusRulesYamlShouldRenderReplicationLagRuleWithScopeAndSeverity() {
AlertRuleVO rule = AlertRuleVO.builder()
@@ -199,6 +224,26 @@ class AlertServiceTest {
.contains("severity: warning");
}
+ @Test
+ void exportPrometheusRulesYamlShouldReplaceInvalidPrometheusFields() {
+ AlertRuleVO rule = AlertRuleVO.builder()
+ .name("Malformed rule")
+ .metric("up) or vector(1")
+ .operator("> 0 or")
+ .threshold(10)
+ .duration("5xyz")
+ .enabled(true)
+ .build();
+ when(alertRepository.findAllRules()).thenReturn(List.of(rule));
+
+ String result = alertService.exportPrometheusRulesYaml();
+
+ assertThat(result)
+ .contains("expr: rocketmq_consumer_lag_messages > 10")
+ .contains("for: 5m")
+ .doesNotContain("vector(1", "> 0 or", "5xyz");
+ }
+
@Test
void
exportPrometheusRulesYamlShouldNormalizeSeverityIndependentlyOfDefaultLocale() {
AlertRuleVO rule = AlertRuleVO.builder()
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/provider/apache/RocketMQAdminClientImplTest.java
b/server/src/test/java/org/apache/rocketmq/studio/provider/apache/RocketMQAdminClientImplTest.java
index 804ec59b..f80e57a6 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/provider/apache/RocketMQAdminClientImplTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/provider/apache/RocketMQAdminClientImplTest.java
@@ -27,6 +27,7 @@ import org.apache.rocketmq.remoting.protocol.body.ClusterInfo;
import org.apache.rocketmq.remoting.protocol.route.BrokerData;
import org.apache.rocketmq.studio.cluster.broker.MqAdminExtFactory;
import org.apache.rocketmq.studio.common.exception.BusinessException;
+import org.apache.rocketmq.studio.common.domain.enums.TopicType;
import org.apache.rocketmq.studio.cluster.broker.RuntimeAdminClientResolver;
import org.apache.rocketmq.studio.instance.group.ConsumerGroupVO;
import org.apache.rocketmq.studio.instance.topic.TopicVO;
@@ -205,6 +206,27 @@ class RocketMQAdminClientImplTest {
verify(adminExt, never()).createAndUpdateTopicConfig(anyString(),
any(TopicConfig.class));
}
+ @Test
+ void updateTopicPersistsTypeAndRemark() throws Exception {
+ TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new
MybatisConfiguration(), ""), RmqTopic.class);
+ RmqTopic existing = new RmqTopic();
+ existing.setTopicType(TopicType.NORMAL.name());
+ existing.setRemark("old remark");
+
when(adminExt.examineBrokerClusterInfo()).thenReturn(clusterInfoWithMaster());
+ when(topicMapper.selectOne(any())).thenReturn(existing);
+
+ TopicVO topic = new TopicVO();
+ topic.setName("orders");
+ topic.setType(TopicType.FIFO);
+ topic.setRemark("updated remark");
+
+ adminClient.updateTopic(topic);
+
+ assertThat(existing.getTopicType()).isEqualTo(TopicType.FIFO.name());
+ assertThat(existing.getRemark()).isEqualTo("updated remark");
+ verify(topicMapper).updateById(existing);
+ }
+
@Test
void topicDeleteUsesSelectedInstanceAndScopesMetadataToCluster() throws
Exception {
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new
MybatisConfiguration(), ""), RmqTopic.class);