| | |
| | | package com.xiaopeng.map.service; |
| | | |
| | | import com.xiaopeng.map.dto.AreaInput; |
| | | import com.xiaopeng.map.utils.XngpAreaRTreeFbsUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.junit.jupiter.api.Assumptions; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.autoconfigure.actuate.metrics.AutoConfigureMetrics; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.context.ActiveProfiles; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | import static org.junit.jupiter.api.Assertions.assertNotNull; |
| | | import static org.junit.jupiter.api.Assertions.assertTrue; |
| | | |
| | | /** |
| | | * AdcOssHandleService 集成测试,直接调用真实 OSS 服务。 |
| | | * 运行前需配置环境变量:ALIYUN_OSS_ACCESS_KEY_ID、ALIYUN_OSS_ACCESS_KEY_SECRET、VIN_SALT1、VIN_SALT2 |
| | | */ |
| | | @Slf4j |
| | | @SpringBootTest(classes = com.xiaopeng.map.MapApplication.class) |
| | | @ActiveProfiles("local") |
| | | @AutoConfigureMetrics |
| | | class AdcOssHandleServiceTest { |
| | | |
| | | @Autowired(required = false) |
| | | private AdcOssHandleService adcOssHandleService; |
| | | |
| | | @Autowired(required = false) |
| | | private RobotaxiOssService robotaxiOssService; |
| | | |
| | | @Test |
| | | void uploadOddLayerFile() { |
| | | if (adcOssHandleService == null || robotaxiOssService == null) { |
| | | log.warn("OSS 未启用,测试跳过。请配置 ALIYUN_OSS_ACCESS_KEY_ID、ALIYUN_OSS_ACCESS_KEY_SECRET、VIN_SALT1、VIN_SALT2"); |
| | | Assumptions.assumeTrue(false, "OSS 未启用,请配置环境变量"); |
| | | } |
| | | // 构造测试坐标点:成都区域 3 个多边形 |
| | | String gcl1 = "104.06249_30.58322,104.06244_30.58049,104.06500_30.58100,104.06600_30.58400"; |
| | | String gcl2 = "104.06800_30.58200,104.06900_30.58000,104.07100_30.58150,104.06800_30.58200"; |
| | | String gcl3 = "104.05500_30.57800,104.05700_30.57600,104.06000_30.57750,104.05500_30.57800"; |
| | | |
| | | List<XngpAreaRTreeFbsUtil.LonLat> points1 = XngpAreaRTreeFbsUtil.parseGcl(gcl1); |
| | | List<XngpAreaRTreeFbsUtil.LonLat> points2 = XngpAreaRTreeFbsUtil.parseGcl(gcl2); |
| | | List<XngpAreaRTreeFbsUtil.LonLat> points3 = XngpAreaRTreeFbsUtil.parseGcl(gcl3); |
| | | |
| | | assertNotNull(points1); |
| | | assertNotNull(points2); |
| | | assertNotNull(points3); |
| | | assertTrue(points1.size() >= 3, "多边形1至少需要 3 个点"); |
| | | assertTrue(points2.size() >= 3, "多边形2至少需要 3 个点"); |
| | | assertTrue(points3.size() >= 3, "多边形3至少需要 3 个点"); |
| | | |
| | | String vin = "21312323333333312"; // 替换为实际测试 VIN |
| | | |
| | | List<AreaInput> areas = Arrays.asList( |
| | | AreaInput.builder().points(points1).areaId(1).build(), |
| | | AreaInput.builder().points(points2).areaId(2).build(), |
| | | AreaInput.builder().points(points3).areaId(3).build() |
| | | ); |
| | | String objectKey = adcOssHandleService.uploadOddLayerFile(areas, vin); |
| | | log.info("uploadOddLayerFile objectKey={}", objectKey); |
| | | |
| | | assertNotNull(objectKey); |
| | | assertTrue(objectKey.contains("ROBOTAXI_ODD_layer"), |
| | | "返回 objectKey 应包含路径前缀"); |
| | | |
| | | // 获取 bin 文件下载临时链接(Presigned URL) |
| | | String downloadUrl = robotaxiOssService.generatePresignedDownloadUrl(objectKey, 3600); |
| | | log.info("generatePresignedDownloadUrl bin downloadUrl={}", downloadUrl); |
| | | assertNotNull(downloadUrl); |
| | | assertTrue(downloadUrl.contains("Expires") || downloadUrl.contains("Signature"), |
| | | "下载临时链接应包含签名参数(Expires 或 Signature)"); |
| | | |
| | | // 获取 xngp_area_version.pb 下载临时链接(与 bin 同目录) |
| | | String pbObjectKey = objectKey.substring(0, objectKey.lastIndexOf('/') + 1) + "xngp_area_version.pb"; |
| | | String pbDownloadUrl = robotaxiOssService.generatePresignedDownloadUrl(pbObjectKey, 3600); |
| | | log.info("generatePresignedDownloadUrl xngp_area_version.pb downloadUrl={}", pbDownloadUrl); |
| | | assertNotNull(pbDownloadUrl); |
| | | assertTrue(pbDownloadUrl.contains("Expires") || pbDownloadUrl.contains("Signature"), |
| | | "xngp_area_version.pb 下载临时链接应包含签名参数"); |
| | | } |
| | | } |
| | | //package com.xiaopeng.map.service; |
| | | // |
| | | //import com.xiaopeng.map.dto.AreaInput; |
| | | //import com.xiaopeng.map.utils.XngpAreaRTreeFbsUtil; |
| | | //import lombok.extern.slf4j.Slf4j; |
| | | //import org.junit.jupiter.api.Assumptions; |
| | | //import org.junit.jupiter.api.Test; |
| | | //import org.springframework.beans.factory.annotation.Autowired; |
| | | //import org.springframework.boot.test.autoconfigure.actuate.metrics.AutoConfigureMetrics; |
| | | //import org.springframework.boot.test.context.SpringBootTest; |
| | | //import org.springframework.test.context.ActiveProfiles; |
| | | // |
| | | //import java.util.Arrays; |
| | | //import java.util.List; |
| | | // |
| | | //import static org.junit.jupiter.api.Assertions.assertNotNull; |
| | | //import static org.junit.jupiter.api.Assertions.assertTrue; |
| | | // |
| | | ///** |
| | | // * AdcOssHandleService 集成测试,直接调用真实 OSS 服务。 |
| | | // * 运行前需配置环境变量:ALIYUN_OSS_ACCESS_KEY_ID、ALIYUN_OSS_ACCESS_KEY_SECRET、VIN_SALT1、VIN_SALT2 |
| | | // */ |
| | | //@Slf4j |
| | | //@SpringBootTest(classes = com.xiaopeng.map.MapApplication.class) |
| | | //@ActiveProfiles("local") |
| | | //@AutoConfigureMetrics |
| | | //class AdcOssHandleServiceTest { |
| | | // |
| | | // @Autowired(required = false) |
| | | // private AdcOssHandleService adcOssHandleService; |
| | | // |
| | | // @Autowired(required = false) |
| | | // private RobotaxiOssService robotaxiOssService; |
| | | // |
| | | // @Test |
| | | // void uploadOddLayerFile() { |
| | | // if (adcOssHandleService == null || robotaxiOssService == null) { |
| | | // log.warn("OSS 未启用,测试跳过。请配置 ALIYUN_OSS_ACCESS_KEY_ID、ALIYUN_OSS_ACCESS_KEY_SECRET、VIN_SALT1、VIN_SALT2"); |
| | | // Assumptions.assumeTrue(false, "OSS 未启用,请配置环境变量"); |
| | | // } |
| | | // // 构造测试坐标点:成都区域 3 个多边形 |
| | | // String gcl1 = "104.06249_30.58322,104.06244_30.58049,104.06500_30.58100,104.06600_30.58400"; |
| | | // String gcl2 = "104.06800_30.58200,104.06900_30.58000,104.07100_30.58150,104.06800_30.58200"; |
| | | // String gcl3 = "104.05500_30.57800,104.05700_30.57600,104.06000_30.57750,104.05500_30.57800"; |
| | | // |
| | | // List<XngpAreaRTreeFbsUtil.LonLat> points1 = XngpAreaRTreeFbsUtil.parseGcl(gcl1); |
| | | // List<XngpAreaRTreeFbsUtil.LonLat> points2 = XngpAreaRTreeFbsUtil.parseGcl(gcl2); |
| | | // List<XngpAreaRTreeFbsUtil.LonLat> points3 = XngpAreaRTreeFbsUtil.parseGcl(gcl3); |
| | | // |
| | | // assertNotNull(points1); |
| | | // assertNotNull(points2); |
| | | // assertNotNull(points3); |
| | | // assertTrue(points1.size() >= 3, "多边形1至少需要 3 个点"); |
| | | // assertTrue(points2.size() >= 3, "多边形2至少需要 3 个点"); |
| | | // assertTrue(points3.size() >= 3, "多边形3至少需要 3 个点"); |
| | | // |
| | | // String vin = "21312323333333312"; // 替换为实际测试 VIN |
| | | // |
| | | // List<AreaInput> areas = Arrays.asList( |
| | | // AreaInput.builder().points(points1).areaId(1).build(), |
| | | // AreaInput.builder().points(points2).areaId(2).build(), |
| | | // AreaInput.builder().points(points3).areaId(3).build() |
| | | // ); |
| | | // String objectKey = adcOssHandleService.uploadOddLayerFile(areas, vin); |
| | | // log.info("uploadOddLayerFile objectKey={}", objectKey); |
| | | // |
| | | // assertNotNull(objectKey); |
| | | // assertTrue(objectKey.contains("ROBOTAXI_ODD_layer"), |
| | | // "返回 objectKey 应包含路径前缀"); |
| | | // |
| | | // // 获取 bin 文件下载临时链接(Presigned URL) |
| | | // String downloadUrl = robotaxiOssService.generatePresignedDownloadUrl(objectKey, 3600); |
| | | // log.info("generatePresignedDownloadUrl bin downloadUrl={}", downloadUrl); |
| | | // assertNotNull(downloadUrl); |
| | | // assertTrue(downloadUrl.contains("Expires") || downloadUrl.contains("Signature"), |
| | | // "下载临时链接应包含签名参数(Expires 或 Signature)"); |
| | | // |
| | | // // 获取 xngp_area_version.pb 下载临时链接(与 bin 同目录) |
| | | // String pbObjectKey = objectKey.substring(0, objectKey.lastIndexOf('/') + 1) + "xngp_area_version.pb"; |
| | | // String pbDownloadUrl = robotaxiOssService.generatePresignedDownloadUrl(pbObjectKey, 3600); |
| | | // log.info("generatePresignedDownloadUrl xngp_area_version.pb downloadUrl={}", pbDownloadUrl); |
| | | // assertNotNull(pbDownloadUrl); |
| | | // assertTrue(pbDownloadUrl.contains("Expires") || pbDownloadUrl.contains("Signature"), |
| | | // "xngp_area_version.pb 下载临时链接应包含签名参数"); |
| | | // } |
| | | //} |