//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 points1 = XngpAreaRTreeFbsUtil.parseGcl(gcl1); // List points2 = XngpAreaRTreeFbsUtil.parseGcl(gcl2); // List 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 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 下载临时链接应包含签名参数"); // } //}