[ISSUE #19]Message track query enhancement (#21)

* [ISSUE #19]Message track query enhancement

* traceTopic can be null and system Topic is used by default

* add unit test

* select messageTrack topic in messageTrace page

Co-authored-by: zhangjidi <zhangjidi@cmss.chinamobile.com>
This commit is contained in:
zhangjidi2016
2021-09-23 21:01:32 +08:00
committed by GitHub
parent dc67c660ff
commit 58336d951a
16 changed files with 97 additions and 65 deletions

View File

@@ -18,7 +18,6 @@
package org.apache.rocketmq.dashboard.config;
import java.io.File;
import org.apache.rocketmq.common.topic.TopicValidator;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.boot.web.server.ErrorPage;
@@ -38,7 +37,6 @@ public class RMQConfigureTest {
rmqConfigure.setIsVIPChannel("true");
rmqConfigure.setUseTLS(true);
rmqConfigure.setLoginRequired(true);
rmqConfigure.setMsgTrackTopicName(null);
rmqConfigure.setNamesrvAddr("127.0.0.1:9876");
rmqConfigure.setTimeoutMillis(3000L);
}
@@ -55,7 +53,6 @@ public class RMQConfigureTest {
Assert.assertEquals(rmqConfigure.getIsVIPChannel(), "true");
Assert.assertTrue(rmqConfigure.isEnableDashBoardCollect());
Assert.assertTrue(rmqConfigure.isLoginRequired());
Assert.assertEquals(rmqConfigure.getMsgTrackTopicNameOrDefault(), TopicValidator.RMQ_SYS_TRACE_TOPIC);
Assert.assertEquals(rmqConfigure.getNamesrvAddr(), "127.0.0.1:9876");
Assert.assertEquals(rmqConfigure.getTimeoutMillis().longValue(), 3000L);
ErrorPageRegistrar registrar = rmqConfigure.errorPageRegistrar();

View File

@@ -22,7 +22,6 @@ import org.apache.rocketmq.client.QueryResult;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.trace.TraceType;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.common.topic.TopicValidator;
import org.apache.rocketmq.dashboard.service.impl.MessageServiceImpl;
import org.apache.rocketmq.dashboard.service.impl.MessageTraceServiceImpl;
import org.apache.rocketmq.dashboard.util.MockObjectUtil;
@@ -57,7 +56,6 @@ public class MessageTraceControllerTest extends BaseControllerTest {
@Before
public void init() throws MQClientException, InterruptedException {
super.mockRmqConfigure();
when(configure.getMsgTrackTopicNameOrDefault()).thenReturn(TopicValidator.RMQ_SYS_TRACE_TOPIC);
List<MessageExt> messageList = new ArrayList<>(2);
MessageExt messageExt = MockObjectUtil.createMessageExt();
messageExt.setBody(MockObjectUtil.createTraceData().getBytes());

View File

@@ -44,6 +44,8 @@ import org.apache.rocketmq.dashboard.model.request.TopicConfigInfo;
import org.apache.rocketmq.dashboard.service.impl.ConsumerServiceImpl;
import org.apache.rocketmq.dashboard.service.impl.TopicServiceImpl;
import org.apache.rocketmq.dashboard.util.MockObjectUtil;
import org.apache.rocketmq.remoting.RPCHook;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
@@ -91,6 +93,8 @@ public class TopicControllerTest extends BaseControllerTest {
topicSet.add("common_topic2");
topicSet.add("system_topic1");
topicSet.add("system_topic2");
topicSet.add("%DLQ%topic");
topicSet.add("%RETRY%topic");
topicList.setTopicList(topicSet);
when(mqAdminExt.fetchAllTopicList()).thenReturn(topicList);
// mock system topics
@@ -117,10 +121,18 @@ public class TopicControllerTest extends BaseControllerTest {
requestBuilder = MockMvcRequestBuilders.get(url);
requestBuilder.param("skipSysProcess", String.valueOf(true));
perform = mockMvc.perform(requestBuilder);
perform.andExpect(status().isOk())
.andExpect(jsonPath("$.data.topicList", hasSize(6)));
// 2、list all topic filter DLQ and Retry topic
requestBuilder = MockMvcRequestBuilders.get(url);
requestBuilder.param("skipSysProcess", String.valueOf(false));
requestBuilder.param("skipRetryAndDlq", String.valueOf(true));
perform = mockMvc.perform(requestBuilder);
perform.andExpect(status().isOk())
.andExpect(jsonPath("$.data.topicList", hasSize(4)));
// 2、filter system topic
// 3、filter system topic
requestBuilder = MockMvcRequestBuilders.get(url);
perform = mockMvc.perform(requestBuilder);
perform.andExpect(status().isOk())
@@ -249,7 +261,7 @@ public class TopicControllerTest extends BaseControllerTest {
when(producer.send(any(Message.class))).thenReturn(result);
doReturn(producer).when(topicService).buildDefaultMQProducer(anyString(), any(), anyBoolean());
}
Assert.assertNotNull(topicService.buildDefaultMQProducer("group_test", mock(RPCHook.class)));
SendTopicMessageRequest request = new SendTopicMessageRequest();
request.setTopic(topicName);
request.setMessageBody("hello world");