From 39fd16b918e305760220f13a08608b5063e0b22a Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Sat, 15 Jun 2024 22:03:56 +0800 Subject: [PATCH] (improvement)(test) Fixed the intermittent failure of QueryByStructTest on Windows. (#1159) --- .../api/pojo/response/SemanticQueryResp.java | 1 + .../server/service/impl/QueryServiceImpl.java | 4 ++- .../supersonic/headless/QueryBySqlTest.java | 13 +++---- .../headless/QueryByStructTest.java | 36 ++++++++++--------- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/SemanticQueryResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/SemanticQueryResp.java index 462601604..d8888279b 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/SemanticQueryResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/SemanticQueryResp.java @@ -19,6 +19,7 @@ public class SemanticQueryResp extends QueryResult> { List columns = Lists.newArrayList(); String sql; QueryAuthorization queryAuthorization; + boolean useCache; public List getMetricColumns() { return columns.stream() diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/QueryServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/QueryServiceImpl.java index 7865eef42..23dd714a8 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/QueryServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/QueryServiceImpl.java @@ -97,7 +97,9 @@ public class QueryServiceImpl implements QueryService { String cacheKey = queryCache.getCacheKey(queryReq); Object query = queryCache.query(queryReq, cacheKey); if (Objects.nonNull(query)) { - return (SemanticQueryResp) query; + SemanticQueryResp queryResp = (SemanticQueryResp) query; + queryResp.setUseCache(true); + return queryResp; } StatUtils.get().setUseResultCache(false); //3 query diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java index 6e0d71294..aa7beac5b 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java @@ -1,5 +1,10 @@ package com.tencent.supersonic.headless; +import static java.time.LocalDate.now; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; + import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException; @@ -8,10 +13,6 @@ import com.tencent.supersonic.util.DataUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import static java.time.LocalDate.now; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; public class QueryBySqlTest extends BaseTest { @Test @@ -74,9 +75,9 @@ public class QueryBySqlTest extends BaseTest { @Test public void testCacheQuery() throws Exception { - SemanticQueryResp result1 = queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 "); + queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 "); SemanticQueryResp result2 = queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 "); - assertTrue(result1 == result2); + assertTrue(result2.isUseCache()); } @Test diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByStructTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByStructTest.java index 18238bed6..780ba6629 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByStructTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByStructTest.java @@ -1,5 +1,10 @@ package com.tencent.supersonic.headless; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; + import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Filter; @@ -11,19 +16,27 @@ import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.util.DataUtils; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +@Slf4j public class QueryByStructTest extends BaseTest { + @Test + @Order(1) + public void testCacheQuery() throws Exception { + QueryStructReq queryStructReq1 = buildQueryStructReq(Arrays.asList("department")); + QueryStructReq queryStructReq2 = buildQueryStructReq(Arrays.asList("department")); + queryService.queryByReq(queryStructReq1, User.getFakeUser()); + SemanticQueryResp result2 = queryService.queryByReq(queryStructReq2, User.getFakeUser()); + assertTrue(result2.isUseCache()); + } + @Test public void testDetailQuery() throws Exception { QueryStructReq queryStructReq = buildQueryStructReq(Arrays.asList("user_name", "department"), @@ -83,15 +96,6 @@ public class QueryByStructTest extends BaseTest { assertEquals("HR", result.getResultList().get(0).get("department").toString()); } - @Test - public void testCacheQuery() throws Exception { - QueryStructReq queryStructReq1 = buildQueryStructReq(Arrays.asList("department")); - QueryStructReq queryStructReq2 = buildQueryStructReq(Arrays.asList("department")); - SemanticQueryResp result1 = queryService.queryByReq(queryStructReq1, User.getFakeUser()); - SemanticQueryResp result2 = queryService.queryByReq(queryStructReq2, User.getFakeUser()); - assertTrue(result1 == result2); - } - @Test public void testAuthorization_model() { User alice = new User(2L, "alice", "alice", "alice@email", 0);