From 9de6e6b4ef769c6b365bd7fd335d77c50a015d83 Mon Sep 17 00:00:00 2001
From: zhouhn <zhouhn@xiaopeng.com>
Date: 星期六, 07 三月 2026 20:58:02 +0800
Subject: [PATCH] 统一mqtt的topic地址生成到一个函数方法

---
 xp-robotaxi-automatic-pilot-boot/src/test/java/com/xiaopeng/automaticPilot/util/XPUUtilTest.java |  161 +----------------------------------------------------
 1 files changed, 5 insertions(+), 156 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/test/java/com/xiaopeng/automaticPilot/util/XPUUtilTest.java b/xp-robotaxi-automatic-pilot-boot/src/test/java/com/xiaopeng/automaticPilot/util/XPUUtilTest.java
index 72b2034..dd3b45c 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/test/java/com/xiaopeng/automaticPilot/util/XPUUtilTest.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/test/java/com/xiaopeng/automaticPilot/util/XPUUtilTest.java
@@ -1,194 +1,43 @@
 package com.xiaopeng.automaticPilot.util;
 
-import com.xiaopeng.api.dto.automaticPilot.MqttPublishDto;
 import com.xiaopeng.api.feignClient.automaticPilot.VmpOpenServiceClient;
-import com.xiaopeng.api.feignClient.automaticPilot.XPUClient;
-import com.xiaopeng.api.vo.automaticPilot.MqttPublishVo;
-import com.xiaopeng.api.vo.automaticPilot.protobuf.*;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
 public class XPUUtilTest {
 
     private XPUUtil xpuUtil;
-    private XPUClient xpuClient;
-    private VmpOpenServiceClient vmpClient;
 
     @BeforeEach
     public void setUp() throws Exception {
         xpuUtil = new XPUUtil();
-        
-        // Mock VmpOpenServiceClient
-        vmpClient = Mockito.mock(VmpOpenServiceClient.class);
+        VmpOpenServiceClient vmpClient = Mockito.mock(VmpOpenServiceClient.class);
         Map<String, String> mapping = new HashMap<>();
         mapping.put(XPUUtil.XPU_ID_TYPE, "1234567890ABCDEFGHIJKL");
         Mockito.when(vmpClient.getVehicleBindInfoByVin(Mockito.anyString(), Mockito.anyList()))
                 .thenReturn(mapping);
-        
-        // Mock XPUClient
-        xpuClient = Mockito.mock(XPUClient.class);
-        Mockito.when(xpuClient.publish(Mockito.any(MqttPublishVo.class)))
-                .thenReturn(new MqttPublishDto());
-
-        // Inject mocks
         Field vmpField = XPUUtil.class.getDeclaredField("vmpOpenServiceClient");
         vmpField.setAccessible(true);
         vmpField.set(xpuUtil, vmpClient);
-
-        Field xpuClientField = XPUUtil.class.getDeclaredField("xpuClient");
-        xpuClientField.setAccessible(true);
-        xpuClientField.set(xpuUtil, xpuClient);
-
         Field topicField = XPUUtil.class.getDeclaredField("topicPrefix");
         topicField.setAccessible(true);
         topicField.set(xpuUtil, "Robotaxi/Msg/Xpu");
     }
 
     @Test
-    public void testBuildTopicByVin() throws Exception {
-        Method buildTopic = XPUUtil.class.getDeclaredMethod("buildTopicByVin", String.class);
+    public void testBuildTopic() throws Exception {
+        Method buildTopic = XPUUtil.class.getDeclaredMethod("buildTopic", String.class);
         buildTopic.setAccessible(true);
         String result = (String) buildTopic.invoke(xpuUtil, "VIN123");
         Assertions.assertEquals("Robotaxi/Msg/Xpu/ABCDEFGHIJKL00000000", result);
     }
-
-    @Test
-    public void testCloudCreateOrder() {
-        String orderId = "1881347710714060802";
-
-        RtTask.Builder taskBuilder = RtTask.newBuilder();
-        taskBuilder.setTaskId("task-123");
-        taskBuilder.setOrderId(orderId);
-        taskBuilder.setTaskType(OrderType.ORDER_TYPE_ROBOTAXI);
-
-        Waypoint.Builder pointBuilder = Waypoint.newBuilder();
-        pointBuilder.setPointType(PointType.START_POINT);
-        pointBuilder.setActionType(ActionType.PICK_UP);
-        pointBuilder.setSequence(1);
-
-        GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder();
-        geoPointBuilder.setLatitude(30.0);
-        geoPointBuilder.setLongitude(120.0);
-        // geoPointBuilder.setPoiName("Start Point"); // GeoPoint might not have poi_name
-        pointBuilder.setPoint(geoPointBuilder.build());
-
-        taskBuilder.addPoints(pointBuilder);
-
-        RtTaskList.Builder taskListBuilder = RtTaskList.newBuilder();
-        taskListBuilder.addTasks(taskBuilder.build());
-
-        String vin = "VIN12345678900000";
-        Long sequence = 1L;
-
-        xpuUtil.cloudCreateOrder(taskListBuilder.build(), vin, sequence);
-
-        ArgumentCaptor<MqttPublishVo> captor = ArgumentCaptor.forClass(MqttPublishVo.class);
-        Mockito.verify(xpuClient).publish(captor.capture());
-        MqttPublishVo capturedVo = captor.getValue();
-        
-        Assertions.assertEquals("Robotaxi/Msg/Xpu/ABCDEFGHIJKL00000000", capturedVo.getTopic());
-        // Note: Current implementation serializes enum as ordinal.
-        Assertions.assertTrue(capturedVo.getPayload().contains("\"cmd\": 10003"), "Payload should contain cmd CLOUD_CREATE_ORDER (10003), but was: " + capturedVo.getPayload());
-    }
-
-    @Test
-    public void testCloudOrderOperation() {
-        String orderId = "1881347710714060802";
-
-        OrderOperation.Builder operationBuilder = OrderOperation.newBuilder();
-        operationBuilder.setOrderId(orderId);
-        operationBuilder.setTaskId("task-123");
-        operationBuilder.setOperationType(OrderOperationType.CLOUD_CREATE_ORDER);
-        operationBuilder.setOrderType(OrderType.ORDER_TYPE_ROBOTAXI);
-
-        Waypoint.Builder waypointBuilder = Waypoint.newBuilder();
-        waypointBuilder.setWaypointId("wp-1");
-        waypointBuilder.setPointType(PointType.WAY_POINT);
-        waypointBuilder.setActionType(ActionType.PICK_UP); // Use valid enum
-        waypointBuilder.setSequence(2);
-
-        GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder();
-        geoPointBuilder.setLatitude(30.1);
-        geoPointBuilder.setLongitude(120.1);
-        // geoPointBuilder.setPoiName("Way Point");
-        waypointBuilder.setPoint(geoPointBuilder.build());
-
-        operationBuilder.addWaypoints(waypointBuilder.build());
-
-        // TargetPoint targetPoint = new TargetPoint(); // OrderOperation uses Waypoint for target_point in proto?
-        // Check proto: Waypoint target_point = 6;
-        Waypoint.Builder targetPointBuilder = Waypoint.newBuilder();
-        GeoPoint.Builder endGeoPointBuilder = GeoPoint.newBuilder();
-        endGeoPointBuilder.setLatitude(30.2);
-        endGeoPointBuilder.setLongitude(120.2);
-        targetPointBuilder.setPoint(endGeoPointBuilder.build());
-        operationBuilder.setTargetPoint(targetPointBuilder.build());
-
-        String vin = "VIN12345678900000";
-        Long sequence = 2L;
-
-        xpuUtil.cloudOrderOperation(operationBuilder.build(), vin, sequence);
-
-        ArgumentCaptor<MqttPublishVo> captor = ArgumentCaptor.forClass(MqttPublishVo.class);
-        Mockito.verify(xpuClient).publish(captor.capture());
-        MqttPublishVo capturedVo = captor.getValue();
-        
-        Assertions.assertEquals("Robotaxi/Msg/Xpu/ABCDEFGHIJKL00000000", capturedVo.getTopic());
-        // Note: CLOUD_ORDER_OPERATION is 10001
-        Assertions.assertTrue(capturedVo.getPayload().contains("\"cmd\": 10001"), "Payload should contain cmd CLOUD_ORDER_OPERATION (10001), but was: " + capturedVo.getPayload());
-    }
-
-    @Test
-    public void testResponseMessage() {
-        ResponseMessage.Builder responseMessageBuilder = ResponseMessage.newBuilder();
-        responseMessageBuilder.setRequestSeq(12345L);
-        responseMessageBuilder.setCode(StatusCode.OK);
-        responseMessageBuilder.setTimestamp(System.currentTimeMillis());
-
-
-        String vin = "VIN12345678900000";
-        xpuUtil.responseMessage(responseMessageBuilder.build(), vin);
-
-        ArgumentCaptor<MqttPublishVo> captor = ArgumentCaptor.forClass(MqttPublishVo.class);
-        Mockito.verify(xpuClient).publish(captor.capture());
-        MqttPublishVo capturedVo = captor.getValue();
-        
-        Assertions.assertEquals("Robotaxi/Msg/Xpu/ABCDEFGHIJKL00000000", capturedVo.getTopic());
-        // Note: CLOUD_TASK_CONTROL (used in responseMessage method? check code)
-        // In XPUUtil.java: headerBuilder.setCmd(RTCmdType.CLOUD_TASK_CONTROL.getValue());
-        // CLOUD_TASK_CONTROL is 10002
-        Assertions.assertTrue(capturedVo.getPayload().contains("\"cmd\": 10002"), "Payload should contain cmd CLOUD_TASK_CONTROL (10002), but was: " + capturedVo.getPayload());
-
-    }
-
-    @Test
-    public void testCloudPushNavigation() {
-        RestoreNavigationData.Builder navigationDataBuilder = RestoreNavigationData.newBuilder();
-        navigationDataBuilder.setRequestId("req-123");
-        navigationDataBuilder.setRouteId("5939fa259ad6479cbdf8871ceed96b72");
-        String content = "{\"startPoint\":{\"location\":\"116.481028,39.989643\"},\"endPoint\":{\"location\":\"116.465302,40.004717\"},\"routeID\":\"xxxxxxxxxxxxx\",\"strategy\":17,\"type\":1,\"ferry\":0,\"disableEndDispatch\":1,\"viaInfo\":[{},{}],\"routeUserType\":2,\"bizScene\":2,\"plate\":\"京A12345\",\"vehicleType\":1}";
-        navigationDataBuilder.setContent(content);
-        navigationDataBuilder.setTimestamp(System.currentTimeMillis());
-
-        String xpuId = "1234567890ABCDEFGHIJKL";
-        Long sequence = 3L;
-
-        xpuUtil.cloudPushNavigation(navigationDataBuilder.build(), xpuId, sequence);
-
-        ArgumentCaptor<MqttPublishVo> captor = ArgumentCaptor.forClass(MqttPublishVo.class);
-        Mockito.verify(xpuClient).publish(captor.capture());
-        MqttPublishVo capturedVo = captor.getValue();
-        
-        Assertions.assertEquals("Robotaxi/Msg/Xpu/ABCDEFGHIJKL00000000", capturedVo.getTopic());
-        // Note: CLOUD_NAVIGATION_RESPONSE is 10006
-        Assertions.assertTrue(capturedVo.getPayload().contains("\"cmd\": 10006"), "Payload should contain cmd CLOUD_NAVIGATION_RESPONSE (10006), but was: " + capturedVo.getPayload());
-    }
 }
+

--
Gitblit v1.7.1