mirror of
https://github.com/tencentmusic/supersonic.git
synced 2026-04-21 14:14:19 +08:00
(improvement)(build) Add spotless during the build process. (#1639)
This commit is contained in:
@@ -3,6 +3,4 @@ package com.tencent.supersonic;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest(classes = {StandaloneLauncher.class})
|
||||
public class BaseApplication {
|
||||
|
||||
}
|
||||
public class BaseApplication {}
|
||||
|
||||
@@ -3,12 +3,12 @@ package com.tencent.supersonic.chat;
|
||||
import com.tencent.supersonic.BaseApplication;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatExecuteReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatParseReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.chat.server.service.AgentService;
|
||||
import com.tencent.supersonic.chat.server.service.ChatQueryService;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ParseResp;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.QueryState;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -26,23 +26,23 @@ public class BaseTest extends BaseApplication {
|
||||
protected final String endDay = LocalDate.now().plusDays(-1).toString();
|
||||
protected final String period = "DAY";
|
||||
|
||||
@Autowired
|
||||
protected ChatQueryService chatQueryService;
|
||||
@Autowired
|
||||
protected AgentService agentService;
|
||||
@Autowired protected ChatQueryService chatQueryService;
|
||||
@Autowired protected AgentService agentService;
|
||||
|
||||
protected QueryResult submitMultiTurnChat(String queryText, Integer agentId, Integer chatId) throws Exception {
|
||||
protected QueryResult submitMultiTurnChat(String queryText, Integer agentId, Integer chatId)
|
||||
throws Exception {
|
||||
ParseResp parseResp = submitParse(queryText, agentId, chatId);
|
||||
|
||||
SemanticParseInfo semanticParseInfo = parseResp.getSelectedParses().get(0);
|
||||
ChatExecuteReq request = ChatExecuteReq.builder()
|
||||
.queryText(parseResp.getQueryText())
|
||||
.user(DataUtils.getUser())
|
||||
.parseId(semanticParseInfo.getId())
|
||||
.queryId(parseResp.getQueryId())
|
||||
.chatId(chatId)
|
||||
.saveAnswer(true)
|
||||
.build();
|
||||
ChatExecuteReq request =
|
||||
ChatExecuteReq.builder()
|
||||
.queryText(parseResp.getQueryText())
|
||||
.user(DataUtils.getUser())
|
||||
.parseId(semanticParseInfo.getId())
|
||||
.queryId(parseResp.getQueryId())
|
||||
.chatId(chatId)
|
||||
.saveAnswer(true)
|
||||
.build();
|
||||
QueryResult queryResult = chatQueryService.performExecution(request);
|
||||
queryResult.setChatContext(semanticParseInfo);
|
||||
return queryResult;
|
||||
@@ -53,15 +53,16 @@ public class BaseTest extends BaseApplication {
|
||||
ParseResp parseResp = submitParse(queryText, agentId, chatId);
|
||||
|
||||
SemanticParseInfo parseInfo = parseResp.getSelectedParses().get(0);
|
||||
ChatExecuteReq request = ChatExecuteReq.builder()
|
||||
.queryText(parseResp.getQueryText())
|
||||
.user(DataUtils.getUser())
|
||||
.parseId(parseInfo.getId())
|
||||
.agentId(agentId)
|
||||
.chatId(chatId)
|
||||
.queryId(parseResp.getQueryId())
|
||||
.saveAnswer(false)
|
||||
.build();
|
||||
ChatExecuteReq request =
|
||||
ChatExecuteReq.builder()
|
||||
.queryText(parseResp.getQueryText())
|
||||
.user(DataUtils.getUser())
|
||||
.parseId(parseInfo.getId())
|
||||
.agentId(agentId)
|
||||
.chatId(chatId)
|
||||
.queryId(parseResp.getQueryId())
|
||||
.saveAnswer(false)
|
||||
.build();
|
||||
|
||||
QueryResult result = chatQueryService.performExecution(request);
|
||||
result.setChatContext(parseInfo);
|
||||
@@ -75,10 +76,16 @@ public class BaseTest extends BaseApplication {
|
||||
}
|
||||
|
||||
protected void assertSchemaElements(Set<SchemaElement> expected, Set<SchemaElement> actual) {
|
||||
Set<String> expectedNames = expected.stream().map(s -> s.getName())
|
||||
.filter(s -> s != null).collect(Collectors.toSet());
|
||||
Set<String> actualNames = actual.stream().map(s -> s.getName())
|
||||
.filter(s -> s != null).collect(Collectors.toSet());
|
||||
Set<String> expectedNames =
|
||||
expected.stream()
|
||||
.map(s -> s.getName())
|
||||
.filter(s -> s != null)
|
||||
.collect(Collectors.toSet());
|
||||
Set<String> actualNames =
|
||||
actual.stream()
|
||||
.map(s -> s.getName())
|
||||
.filter(s -> s != null)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
assertEquals(expectedNames, actualNames);
|
||||
}
|
||||
@@ -94,10 +101,10 @@ public class BaseTest extends BaseApplication {
|
||||
assertSchemaElements(expectedParseInfo.getMetrics(), actualParseInfo.getMetrics());
|
||||
assertSchemaElements(expectedParseInfo.getDimensions(), actualParseInfo.getDimensions());
|
||||
|
||||
assertEquals(expectedParseInfo.getDimensionFilters(), actualParseInfo.getDimensionFilters());
|
||||
assertEquals(
|
||||
expectedParseInfo.getDimensionFilters(), actualParseInfo.getDimensionFilters());
|
||||
assertEquals(expectedParseInfo.getMetricFilters(), actualParseInfo.getMetricFilters());
|
||||
|
||||
assertEquals(expectedParseInfo.getDateInfo(), actualParseInfo.getDateInfo());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,13 +32,16 @@ public class DetailTest extends BaseTest {
|
||||
expectedParseInfo.setQueryType(QueryType.DETAIL);
|
||||
expectedParseInfo.setAggType(AggregateTypeEnum.NONE);
|
||||
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("singer_name", FilterOperatorEnum.EQUALS,
|
||||
"周杰伦", "歌手名", 8L);
|
||||
QueryFilter dimensionFilter =
|
||||
DataUtils.getFilter("singer_name", FilterOperatorEnum.EQUALS, "周杰伦", "歌手名", 8L);
|
||||
expectedParseInfo.getDimensionFilters().add(dimensionFilter);
|
||||
|
||||
expectedParseInfo.getDimensions().addAll(Lists.newArrayList(
|
||||
SchemaElement.builder().name("流派").build(),
|
||||
SchemaElement.builder().name("代表作").build()));
|
||||
expectedParseInfo
|
||||
.getDimensions()
|
||||
.addAll(
|
||||
Lists.newArrayList(
|
||||
SchemaElement.builder().name("流派").build(),
|
||||
SchemaElement.builder().name("代表作").build()));
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
}
|
||||
@@ -55,17 +58,19 @@ public class DetailTest extends BaseTest {
|
||||
expectedParseInfo.setQueryType(QueryType.DETAIL);
|
||||
expectedParseInfo.setAggType(AggregateTypeEnum.NONE);
|
||||
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("singer_name", FilterOperatorEnum.EQUALS,
|
||||
"周杰伦", "歌手名", 8L);
|
||||
QueryFilter dimensionFilter =
|
||||
DataUtils.getFilter("singer_name", FilterOperatorEnum.EQUALS, "周杰伦", "歌手名", 8L);
|
||||
expectedParseInfo.getDimensionFilters().add(dimensionFilter);
|
||||
|
||||
expectedParseInfo.getMetrics().add(SchemaElement.builder().name("播放量").build());
|
||||
expectedParseInfo.getDimensions().addAll(Lists.newArrayList(
|
||||
SchemaElement.builder().name("歌手名").build(),
|
||||
SchemaElement.builder().name("活跃区域").build(),
|
||||
SchemaElement.builder().name("流派").build(),
|
||||
SchemaElement.builder().name("代表作").build()
|
||||
));
|
||||
expectedParseInfo
|
||||
.getDimensions()
|
||||
.addAll(
|
||||
Lists.newArrayList(
|
||||
SchemaElement.builder().name("歌手名").build(),
|
||||
SchemaElement.builder().name("活跃区域").build(),
|
||||
SchemaElement.builder().name("流派").build(),
|
||||
SchemaElement.builder().name("代表作").build()));
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
}
|
||||
@@ -82,19 +87,20 @@ public class DetailTest extends BaseTest {
|
||||
expectedParseInfo.setQueryType(QueryType.DETAIL);
|
||||
expectedParseInfo.setAggType(AggregateTypeEnum.NONE);
|
||||
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("genre", FilterOperatorEnum.EQUALS,
|
||||
"国风", "流派", 7L);
|
||||
QueryFilter dimensionFilter =
|
||||
DataUtils.getFilter("genre", FilterOperatorEnum.EQUALS, "国风", "流派", 7L);
|
||||
expectedParseInfo.getDimensionFilters().add(dimensionFilter);
|
||||
|
||||
expectedParseInfo.getMetrics().add(SchemaElement.builder().name("播放量").build());
|
||||
expectedParseInfo.getDimensions().addAll(Lists.newArrayList(
|
||||
SchemaElement.builder().name("歌手名").build(),
|
||||
SchemaElement.builder().name("活跃区域").build(),
|
||||
SchemaElement.builder().name("流派").build(),
|
||||
SchemaElement.builder().name("代表作").build()
|
||||
));
|
||||
expectedParseInfo
|
||||
.getDimensions()
|
||||
.addAll(
|
||||
Lists.newArrayList(
|
||||
SchemaElement.builder().name("歌手名").build(),
|
||||
SchemaElement.builder().name("活跃区域").build(),
|
||||
SchemaElement.builder().name("流派").build(),
|
||||
SchemaElement.builder().name("代表作").build()));
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.tencent.supersonic.chat;
|
||||
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryFilter;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.headless.chat.query.rule.metric.MetricFilterQuery;
|
||||
import com.tencent.supersonic.headless.chat.query.rule.metric.MetricGroupByQuery;
|
||||
import com.tencent.supersonic.headless.chat.query.rule.metric.MetricModelQuery;
|
||||
@@ -38,16 +38,20 @@ public class MetricTest extends BaseTest {
|
||||
expectedParseInfo.setAggType(NONE);
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
expectedParseInfo
|
||||
.getDimensionFilters()
|
||||
.add(
|
||||
DataUtils.getFilter(
|
||||
"user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
}
|
||||
|
||||
//@Test
|
||||
// @Test
|
||||
public void testMetricDomain() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("超音数总访问次数", DataUtils.metricAgentId);
|
||||
|
||||
@@ -58,7 +62,8 @@ public class MetricTest extends BaseTest {
|
||||
expectedResult.setQueryMode(MetricModelQuery.QUERY_MODE);
|
||||
expectedParseInfo.setAggType(NONE);
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
@@ -78,7 +83,8 @@ public class MetricTest extends BaseTest {
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("部门"));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
@@ -99,10 +105,12 @@ public class MetricTest extends BaseTest {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("alice");
|
||||
list.add("lucy");
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("user_name", FilterOperatorEnum.IN, list, "用户", 2L);
|
||||
QueryFilter dimensionFilter =
|
||||
DataUtils.getFilter("user_name", FilterOperatorEnum.IN, list, "用户", 2L);
|
||||
expectedParseInfo.getDimensionFilters().add(dimensionFilter);
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
@@ -142,7 +150,8 @@ public class MetricTest extends BaseTest {
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("部门"));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
@@ -154,7 +163,8 @@ public class MetricTest extends BaseTest {
|
||||
DateFormat textFormat = new SimpleDateFormat("yyyy年mm月dd日");
|
||||
String dateStr = textFormat.format(format.parse(startDay));
|
||||
|
||||
QueryResult actualResult = submitNewChat(String.format("想知道%salice的访问次数", dateStr), DataUtils.metricAgentId);
|
||||
QueryResult actualResult =
|
||||
submitNewChat(String.format("想知道%salice的访问次数", dateStr), DataUtils.metricAgentId);
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -164,13 +174,16 @@ public class MetricTest extends BaseTest {
|
||||
expectedParseInfo.setAggType(NONE);
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
expectedParseInfo
|
||||
.getDimensionFilters()
|
||||
.add(
|
||||
DataUtils.getFilter(
|
||||
"user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.BETWEEN, 1, period, startDay, startDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.BETWEEN, 1, period, startDay, startDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.tencent.supersonic.chat;
|
||||
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.headless.chat.query.rule.metric.MetricFilterQuery;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.junit.jupiter.api.Order;
|
||||
@@ -17,8 +17,9 @@ public class MultiTurnsTest extends BaseTest {
|
||||
@Test
|
||||
@Order(1)
|
||||
public void queryTest_01() throws Exception {
|
||||
QueryResult actualResult = submitMultiTurnChat("alice的访问次数",
|
||||
DataUtils.metricAgentId, DataUtils.MULTI_TURNS_CHAT_ID);
|
||||
QueryResult actualResult =
|
||||
submitMultiTurnChat(
|
||||
"alice的访问次数", DataUtils.metricAgentId, DataUtils.MULTI_TURNS_CHAT_ID);
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -29,10 +30,14 @@ public class MultiTurnsTest extends BaseTest {
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
expectedParseInfo
|
||||
.getDimensionFilters()
|
||||
.add(
|
||||
DataUtils.getFilter(
|
||||
"user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
@@ -41,8 +46,9 @@ public class MultiTurnsTest extends BaseTest {
|
||||
@Test
|
||||
@Order(2)
|
||||
public void queryTest_02() throws Exception {
|
||||
QueryResult actualResult = submitMultiTurnChat("停留时长呢", DataUtils.metricAgentId,
|
||||
DataUtils.MULTI_TURNS_CHAT_ID);
|
||||
QueryResult actualResult =
|
||||
submitMultiTurnChat(
|
||||
"停留时长呢", DataUtils.metricAgentId, DataUtils.MULTI_TURNS_CHAT_ID);
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -53,10 +59,14 @@ public class MultiTurnsTest extends BaseTest {
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("停留时长"));
|
||||
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
expectedParseInfo
|
||||
.getDimensionFilters()
|
||||
.add(
|
||||
DataUtils.getFilter(
|
||||
"user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
@@ -65,8 +75,9 @@ public class MultiTurnsTest extends BaseTest {
|
||||
@Test
|
||||
@Order(3)
|
||||
public void queryTest_03() throws Exception {
|
||||
QueryResult actualResult = submitMultiTurnChat("lucy的如何", DataUtils.metricAgentId,
|
||||
DataUtils.MULTI_TURNS_CHAT_ID);
|
||||
QueryResult actualResult =
|
||||
submitMultiTurnChat(
|
||||
"lucy的如何", DataUtils.metricAgentId, DataUtils.MULTI_TURNS_CHAT_ID);
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -77,13 +88,14 @@ public class MultiTurnsTest extends BaseTest {
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("停留时长"));
|
||||
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
FilterOperatorEnum.EQUALS, "lucy", "用户", 2L));
|
||||
expectedParseInfo
|
||||
.getDimensionFilters()
|
||||
.add(DataUtils.getFilter("user_name", FilterOperatorEnum.EQUALS, "lucy", "用户", 2L));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setDateInfo(
|
||||
DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.METRIC);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -95,7 +95,10 @@ public class Text2SQLEval extends BaseTest {
|
||||
QueryResult result = submitNewChat("过去半个月核心用户的总停留时长", agentId);
|
||||
assert result.getQueryColumns().size() >= 1;
|
||||
assert result.getQueryColumns().stream()
|
||||
.filter(c -> c.getName().contains("停留时长")).collect(Collectors.toList()).size() == 1;
|
||||
.filter(c -> c.getName().contains("停留时长"))
|
||||
.collect(Collectors.toList())
|
||||
.size()
|
||||
== 1;
|
||||
assert result.getQueryResults().size() >= 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,9 +12,9 @@ import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
|
||||
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.DomainDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.DomainRepository;
|
||||
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -27,11 +27,9 @@ import static java.time.LocalDate.now;
|
||||
|
||||
public class BaseTest extends BaseApplication {
|
||||
|
||||
@Autowired
|
||||
protected SemanticLayerService semanticLayerService;
|
||||
@Autowired protected SemanticLayerService semanticLayerService;
|
||||
|
||||
@Autowired
|
||||
private DomainRepository domainRepository;
|
||||
@Autowired private DomainRepository domainRepository;
|
||||
|
||||
protected SemanticQueryResp queryBySql(String sql) throws Exception {
|
||||
return queryBySql(sql, User.getFakeUser());
|
||||
@@ -81,8 +79,7 @@ public class BaseTest extends BaseApplication {
|
||||
return queryStructReq;
|
||||
}
|
||||
|
||||
protected QueryStructReq buildQueryStructReq(List<String> groups,
|
||||
Aggregator aggregator) {
|
||||
protected QueryStructReq buildQueryStructReq(List<String> groups, Aggregator aggregator) {
|
||||
QueryStructReq queryStructReq = new QueryStructReq();
|
||||
for (Long modelId : DataUtils.getMetricAgentIModelIds()) {
|
||||
queryStructReq.addModelId(modelId);
|
||||
@@ -108,5 +105,4 @@ public class BaseTest extends BaseApplication {
|
||||
domainDO.setIsOpen(0);
|
||||
domainRepository.updateDomain(domainDO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,13 +18,10 @@ import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class DictTest extends BaseTest {
|
||||
@Autowired
|
||||
private DictConfMapper confMapper;
|
||||
@Autowired private DictConfMapper confMapper;
|
||||
|
||||
@Autowired
|
||||
private DictTaskService taskService;
|
||||
@Autowired private DictTaskService taskService;
|
||||
|
||||
@Test
|
||||
public void insertConf() {
|
||||
@@ -83,12 +80,15 @@ public class DictTest extends BaseTest {
|
||||
void testAddTask() {
|
||||
editConf();
|
||||
DictConfDO confDODb = confMapper.selectById(1L);
|
||||
DictSingleTaskReq dictTask = DictSingleTaskReq.builder().itemId(confDODb.getItemId())
|
||||
.type(TypeEnums.DIMENSION).build();
|
||||
DictSingleTaskReq dictTask =
|
||||
DictSingleTaskReq.builder()
|
||||
.itemId(confDODb.getItemId())
|
||||
.type(TypeEnums.DIMENSION)
|
||||
.build();
|
||||
taskService.addDictTask(dictTask, null);
|
||||
DictSingleTaskReq taskReq = DictSingleTaskReq.builder().itemId(3L).type(TypeEnums.DIMENSION).build();
|
||||
DictSingleTaskReq taskReq =
|
||||
DictSingleTaskReq.builder().itemId(3L).type(TypeEnums.DIMENSION).build();
|
||||
taskService.deleteDictTask(taskReq, null);
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
package com.tencent.supersonic.headless;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||
import com.tencent.supersonic.auth.authentication.strategy.FakeUserStrategy;
|
||||
import com.tencent.supersonic.headless.server.task.FlightServerInitTask;
|
||||
@@ -19,36 +16,37 @@ import org.apache.arrow.memory.RootAllocator;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
@Slf4j
|
||||
public class FlightSqlTest extends BaseTest {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FlightServerInitTask flightSqlListener;
|
||||
@Autowired
|
||||
private FakeUserStrategy fakeUserStrategy;
|
||||
@Autowired private FlightServerInitTask flightSqlListener;
|
||||
@Autowired private FakeUserStrategy fakeUserStrategy;
|
||||
|
||||
@Test
|
||||
void test01() throws Exception {
|
||||
startServer();
|
||||
String host = flightSqlListener.getHost();
|
||||
Integer port = flightSqlListener.getPort();
|
||||
FlightSqlClient sqlClient = new FlightSqlClient(
|
||||
FlightClient.builder(new RootAllocator(Integer.MAX_VALUE), Location.forGrpcInsecure(host, port))
|
||||
.build());
|
||||
FlightSqlClient sqlClient =
|
||||
new FlightSqlClient(
|
||||
FlightClient.builder(
|
||||
new RootAllocator(Integer.MAX_VALUE),
|
||||
Location.forGrpcInsecure(host, port))
|
||||
.build());
|
||||
|
||||
CallHeaders headers = new FlightCallHeaders();
|
||||
headers.insert("dataSetId", "1");
|
||||
headers.insert("name", "admin");
|
||||
headers.insert("password", "admin");
|
||||
HeaderCallOption headerOption = new HeaderCallOption(headers);
|
||||
try (final FlightSqlClient.PreparedStatement preparedStatement = sqlClient.prepare(
|
||||
"SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门",
|
||||
headerOption)) {
|
||||
try (final FlightSqlClient.PreparedStatement preparedStatement =
|
||||
sqlClient.prepare(
|
||||
"SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门", headerOption)) {
|
||||
final FlightInfo info = preparedStatement.execute();
|
||||
FlightStream stream = sqlClient.getStream(info
|
||||
.getEndpoints()
|
||||
.get(0).getTicket());
|
||||
FlightStream stream = sqlClient.getStream(info.getEndpoints().get(0).getTicket());
|
||||
int rowCnt = 0;
|
||||
int colCnt = 0;
|
||||
while (stream.next()) {
|
||||
@@ -69,9 +67,12 @@ public class FlightSqlTest extends BaseTest {
|
||||
startServer();
|
||||
String host = flightSqlListener.getHost();
|
||||
Integer port = flightSqlListener.getPort();
|
||||
FlightSqlClient sqlClient = new FlightSqlClient(
|
||||
FlightClient.builder(new RootAllocator(Integer.MAX_VALUE), Location.forGrpcInsecure(host, port))
|
||||
.build());
|
||||
FlightSqlClient sqlClient =
|
||||
new FlightSqlClient(
|
||||
FlightClient.builder(
|
||||
new RootAllocator(Integer.MAX_VALUE),
|
||||
Location.forGrpcInsecure(host, port))
|
||||
.build());
|
||||
|
||||
CallHeaders headers = new FlightCallHeaders();
|
||||
headers.insert("dataSetId", "1");
|
||||
@@ -79,12 +80,11 @@ public class FlightSqlTest extends BaseTest {
|
||||
headers.insert("password", "admin");
|
||||
HeaderCallOption headerOption = new HeaderCallOption(headers);
|
||||
try {
|
||||
FlightInfo flightInfo = sqlClient.execute(
|
||||
"SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门",
|
||||
headerOption);
|
||||
FlightStream stream = sqlClient.getStream(flightInfo
|
||||
.getEndpoints()
|
||||
.get(0).getTicket());
|
||||
FlightInfo flightInfo =
|
||||
sqlClient.execute(
|
||||
"SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门",
|
||||
headerOption);
|
||||
FlightStream stream = sqlClient.getStream(flightInfo.getEndpoints().get(0).getTicket());
|
||||
int rowCnt = 0;
|
||||
int colCnt = 0;
|
||||
while (stream.next()) {
|
||||
|
||||
@@ -14,8 +14,7 @@ import java.util.Collections;
|
||||
|
||||
public class MetaDiscoveryTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
protected ChatLayerService chatLayerService;
|
||||
@Autowired protected ChatLayerService chatLayerService;
|
||||
|
||||
@Test
|
||||
public void testGetMapMeta() throws Exception {
|
||||
|
||||
@@ -15,8 +15,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class ModelSchemaTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
private ModelService modelService;
|
||||
@Autowired private ModelService modelService;
|
||||
|
||||
@Test
|
||||
void testGetUnAvailableItem() {
|
||||
@@ -25,9 +24,11 @@ public class ModelSchemaTest extends BaseTest {
|
||||
fieldRemovedReq.setFields(Lists.newArrayList("pv"));
|
||||
UnAvailableItemResp unAvailableItemResp = modelService.getUnAvailableItem(fieldRemovedReq);
|
||||
List<Long> expectedUnAvailableMetricId = Lists.newArrayList(1L, 4L);
|
||||
List<Long> actualUnAvailableMetricId = unAvailableItemResp.getMetricResps()
|
||||
.stream().map(MetricResp::getId).sorted(Comparator.naturalOrder()).collect(Collectors.toList());
|
||||
List<Long> actualUnAvailableMetricId =
|
||||
unAvailableItemResp.getMetricResps().stream()
|
||||
.map(MetricResp::getId)
|
||||
.sorted(Comparator.naturalOrder())
|
||||
.collect(Collectors.toList());
|
||||
Assertions.assertEquals(expectedUnAvailableMetricId, actualUnAvailableMetricId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,8 +15,7 @@ import static org.junit.Assert.assertThrows;
|
||||
|
||||
public class QueryByMetricTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
protected MetricService metricService;
|
||||
@Autowired protected MetricService metricService;
|
||||
|
||||
@Test
|
||||
public void testWithMetricAndDimensionBizNames() throws Exception {
|
||||
@@ -51,7 +50,8 @@ public class QueryByMetricTest extends BaseTest {
|
||||
queryMetricReq.setDomainId(2L);
|
||||
queryMetricReq.setMetricNames(Arrays.asList("stay_hours", "pv"));
|
||||
queryMetricReq.setDimensionNames(Arrays.asList("user_name", "department"));
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
assertThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> queryByMetric(queryMetricReq, User.getFakeUser()));
|
||||
}
|
||||
|
||||
@@ -66,7 +66,8 @@ public class QueryByMetricTest extends BaseTest {
|
||||
Assert.assertEquals(6, queryResp.getResultList().size());
|
||||
}
|
||||
|
||||
private SemanticQueryResp queryByMetric(QueryMetricReq queryMetricReq, User user) throws Exception {
|
||||
private SemanticQueryResp queryByMetric(QueryMetricReq queryMetricReq, User user)
|
||||
throws Exception {
|
||||
QueryStructReq convert = metricService.convert(queryMetricReq);
|
||||
return semanticLayerService.queryByReq(convert.convert(), user);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ public class QueryBySqlTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testDetailQuery() throws Exception {
|
||||
SemanticQueryResp semanticQueryResp = queryBySql("SELECT 用户,访问次数 FROM 超音数PVUV统计 WHERE 用户='alice' ");
|
||||
SemanticQueryResp semanticQueryResp =
|
||||
queryBySql("SELECT 用户,访问次数 FROM 超音数PVUV统计 WHERE 用户='alice' ");
|
||||
|
||||
assertEquals(2, semanticQueryResp.getColumns().size());
|
||||
QueryColumn firstColumn = semanticQueryResp.getColumns().get(0);
|
||||
@@ -29,7 +30,8 @@ public class QueryBySqlTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testSumQuery() throws Exception {
|
||||
SemanticQueryResp semanticQueryResp = queryBySql("SELECT SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 ");
|
||||
SemanticQueryResp semanticQueryResp =
|
||||
queryBySql("SELECT SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 ");
|
||||
|
||||
assertEquals(1, semanticQueryResp.getColumns().size());
|
||||
QueryColumn queryColumn = semanticQueryResp.getColumns().get(0);
|
||||
@@ -39,7 +41,8 @@ public class QueryBySqlTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testGroupByQuery() throws Exception {
|
||||
SemanticQueryResp result = queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ");
|
||||
SemanticQueryResp result =
|
||||
queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ");
|
||||
assertEquals(2, result.getColumns().size());
|
||||
QueryColumn firstColumn = result.getColumns().get(0);
|
||||
QueryColumn secondColumn = result.getColumns().get(1);
|
||||
@@ -50,8 +53,9 @@ public class QueryBySqlTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testFilterQuery() throws Exception {
|
||||
SemanticQueryResp result = queryBySql(
|
||||
"SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 WHERE 部门 ='HR' GROUP BY 部门 ");
|
||||
SemanticQueryResp result =
|
||||
queryBySql(
|
||||
"SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 WHERE 部门 ='HR' GROUP BY 部门 ");
|
||||
assertEquals(2, result.getColumns().size());
|
||||
QueryColumn firstColumn = result.getColumns().get(0);
|
||||
QueryColumn secondColumn = result.getColumns().get(1);
|
||||
@@ -76,13 +80,15 @@ public class QueryBySqlTest extends BaseTest {
|
||||
@Test
|
||||
public void testCacheQuery() throws Exception {
|
||||
queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ");
|
||||
SemanticQueryResp result2 = queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ");
|
||||
SemanticQueryResp result2 =
|
||||
queryBySql("SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ");
|
||||
assertTrue(result2.isUseCache());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBizNameQuery() throws Exception {
|
||||
SemanticQueryResp result1 = queryBySql("SELECT SUM(pv) FROM 超音数PVUV统计 WHERE department ='HR'");
|
||||
SemanticQueryResp result1 =
|
||||
queryBySql("SELECT SUM(pv) FROM 超音数PVUV统计 WHERE department ='HR'");
|
||||
SemanticQueryResp result2 = queryBySql("SELECT SUM(访问次数) FROM 超音数PVUV统计 WHERE 部门 ='HR'");
|
||||
assertEquals(1, result1.getColumns().size());
|
||||
assertEquals(1, result2.getColumns().size());
|
||||
@@ -94,15 +100,19 @@ public class QueryBySqlTest extends BaseTest {
|
||||
public void testAuthorization_model() {
|
||||
User alice = DataUtils.getUserAlice();
|
||||
setDomainNotOpenToAll();
|
||||
assertThrows(InvalidPermissionException.class,
|
||||
assertThrows(
|
||||
InvalidPermissionException.class,
|
||||
() -> queryBySql("SELECT SUM(pv) FROM 超音数PVUV统计 WHERE department ='HR'", alice));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAuthorization_sensitive_metric() throws Exception {
|
||||
User tom = DataUtils.getUserTom();
|
||||
assertThrows(InvalidPermissionException.class,
|
||||
() -> queryBySql("SELECT SUM(stay_hours) FROM 停留时长统计 WHERE department ='HR'", tom));
|
||||
assertThrows(
|
||||
InvalidPermissionException.class,
|
||||
() ->
|
||||
queryBySql(
|
||||
"SELECT SUM(stay_hours) FROM 停留时长统计 WHERE department ='HR'", tom));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -121,5 +131,4 @@ public class QueryBySqlTest extends BaseTest {
|
||||
Assertions.assertNotNull(semanticQueryResp.getQueryAuthorization().getMessage());
|
||||
Assertions.assertTrue(semanticQueryResp.getSql().contains("user_name = 'tom'"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,9 +19,11 @@ import org.junit.jupiter.api.MethodOrderer;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestMethodOrder;
|
||||
|
||||
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;
|
||||
@@ -44,9 +46,10 @@ public class QueryByStructTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testDetailQuery() throws Exception {
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(Arrays.asList("user_name", "department"),
|
||||
QueryType.DETAIL);
|
||||
SemanticQueryResp semanticQueryResp = semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
QueryStructReq queryStructReq =
|
||||
buildQueryStructReq(Arrays.asList("user_name", "department"), QueryType.DETAIL);
|
||||
SemanticQueryResp semanticQueryResp =
|
||||
semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
assertEquals(3, semanticQueryResp.getColumns().size());
|
||||
QueryColumn firstColumn = semanticQueryResp.getColumns().get(0);
|
||||
assertEquals("用户", firstColumn.getName());
|
||||
@@ -60,7 +63,8 @@ public class QueryByStructTest extends BaseTest {
|
||||
@Test
|
||||
public void testSumQuery() throws Exception {
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(null);
|
||||
SemanticQueryResp semanticQueryResp = semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
SemanticQueryResp semanticQueryResp =
|
||||
semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
assertEquals(1, semanticQueryResp.getColumns().size());
|
||||
QueryColumn queryColumn = semanticQueryResp.getColumns().get(0);
|
||||
assertEquals("访问次数", queryColumn.getName());
|
||||
@@ -70,7 +74,8 @@ public class QueryByStructTest extends BaseTest {
|
||||
@Test
|
||||
public void testGroupByQuery() throws Exception {
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(Arrays.asList("department"));
|
||||
SemanticQueryResp result = semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
SemanticQueryResp result =
|
||||
semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
assertEquals(2, result.getColumns().size());
|
||||
QueryColumn firstColumn = result.getColumns().get(0);
|
||||
QueryColumn secondColumn = result.getColumns().get(1);
|
||||
@@ -91,7 +96,8 @@ public class QueryByStructTest extends BaseTest {
|
||||
dimensionFilters.add(filter);
|
||||
queryStructReq.setDimensionFilters(dimensionFilters);
|
||||
|
||||
SemanticQueryResp result = semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
SemanticQueryResp result =
|
||||
semanticLayerService.queryByReq(queryStructReq, User.getFakeUser());
|
||||
assertEquals(2, result.getColumns().size());
|
||||
QueryColumn firstColumn = result.getColumns().get(0);
|
||||
QueryColumn secondColumn = result.getColumns().get(1);
|
||||
@@ -106,7 +112,8 @@ public class QueryByStructTest extends BaseTest {
|
||||
User alice = DataUtils.getUserAlice();
|
||||
setDomainNotOpenToAll();
|
||||
QueryStructReq queryStructReq1 = buildQueryStructReq(Arrays.asList("department"));
|
||||
assertThrows(InvalidPermissionException.class,
|
||||
assertThrows(
|
||||
InvalidPermissionException.class,
|
||||
() -> semanticLayerService.queryByReq(queryStructReq1, alice));
|
||||
}
|
||||
|
||||
@@ -116,8 +123,10 @@ public class QueryByStructTest extends BaseTest {
|
||||
Aggregator aggregator = new Aggregator();
|
||||
aggregator.setFunc(AggOperatorEnum.SUM);
|
||||
aggregator.setColumn("stay_hours");
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(Arrays.asList("department"), aggregator);
|
||||
assertThrows(InvalidPermissionException.class,
|
||||
QueryStructReq queryStructReq =
|
||||
buildQueryStructReq(Arrays.asList("department"), aggregator);
|
||||
assertThrows(
|
||||
InvalidPermissionException.class,
|
||||
() -> semanticLayerService.queryByReq(queryStructReq, tom));
|
||||
}
|
||||
|
||||
@@ -127,10 +136,10 @@ public class QueryByStructTest extends BaseTest {
|
||||
Aggregator aggregator = new Aggregator();
|
||||
aggregator.setFunc(AggOperatorEnum.SUM);
|
||||
aggregator.setColumn("pv");
|
||||
QueryStructReq queryStructReq1 = buildQueryStructReq(Arrays.asList("department"), aggregator);
|
||||
QueryStructReq queryStructReq1 =
|
||||
buildQueryStructReq(Arrays.asList("department"), aggregator);
|
||||
SemanticQueryResp semanticQueryResp = semanticLayerService.queryByReq(queryStructReq1, tom);
|
||||
Assertions.assertNotNull(semanticQueryResp.getQueryAuthorization().getMessage());
|
||||
Assertions.assertTrue(semanticQueryResp.getSql().contains("`user_name` = 'tom'"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@ public class QueryDimensionTest extends BaseTest {
|
||||
queryDimValueReq.setModelId(1L);
|
||||
queryDimValueReq.setBizName("department");
|
||||
|
||||
SemanticQueryResp queryResp = semanticLayerService.queryDimensionValue(queryDimValueReq, User.getFakeUser());
|
||||
SemanticQueryResp queryResp =
|
||||
semanticLayerService.queryDimensionValue(queryDimValueReq, User.getFakeUser());
|
||||
Assert.assertNotNull(queryResp.getResultList());
|
||||
Assert.assertEquals(4, queryResp.getResultList().size());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,8 +19,7 @@ import java.util.List;
|
||||
|
||||
public class QueryRuleTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
private QueryRuleService queryRuleService;
|
||||
@Autowired private QueryRuleService queryRuleService;
|
||||
|
||||
private User user = User.getFakeUser();
|
||||
|
||||
@@ -93,7 +92,8 @@ public class QueryRuleTest extends BaseTest {
|
||||
queryRuleService.addQueryRule(queryRuleReq2, user);
|
||||
|
||||
QueryRuleFilter queryRuleFilter = new QueryRuleFilter();
|
||||
List<QueryRuleResp> queryRuleList = queryRuleService.getQueryRuleList(queryRuleFilter, user);
|
||||
List<QueryRuleResp> queryRuleList =
|
||||
queryRuleService.getQueryRuleList(queryRuleFilter, user);
|
||||
queryRuleList.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,29 +3,27 @@ package com.tencent.supersonic.headless;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
|
||||
import com.tencent.supersonic.headless.server.service.DataSetService;
|
||||
import com.tencent.supersonic.headless.server.service.DomainService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import com.tencent.supersonic.headless.server.service.DataSetService;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SchemaAuthTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
private DomainService domainService;
|
||||
@Autowired private DomainService domainService;
|
||||
|
||||
@Autowired
|
||||
private DataSetService dataSetService;
|
||||
@Autowired private DataSetService dataSetService;
|
||||
|
||||
@Autowired
|
||||
private ModelService modelService;
|
||||
@Autowired private ModelService modelService;
|
||||
|
||||
@Test
|
||||
public void test_getDomainList_alice() {
|
||||
@@ -33,7 +31,8 @@ public class SchemaAuthTest extends BaseTest {
|
||||
setDomainNotOpenToAll();
|
||||
List<DomainResp> domainResps = domainService.getDomainListWithAdminAuth(user);
|
||||
List<String> expectedDomainBizNames = Lists.newArrayList("supersonic", "singer");
|
||||
Assertions.assertEquals(expectedDomainBizNames,
|
||||
Assertions.assertEquals(
|
||||
expectedDomainBizNames,
|
||||
domainResps.stream().map(DomainResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@@ -42,16 +41,19 @@ public class SchemaAuthTest extends BaseTest {
|
||||
User user = DataUtils.getUserAlice();
|
||||
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN);
|
||||
List<String> expectedModelBizNames = Lists.newArrayList("user_department", "singer");
|
||||
Assertions.assertEquals(expectedModelBizNames,
|
||||
Assertions.assertEquals(
|
||||
expectedModelBizNames,
|
||||
modelResps.stream().map(ModelResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_getVisibleModelList_alice() {
|
||||
User user = DataUtils.getUserAlice();
|
||||
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.VISIBLE);
|
||||
List<ModelResp> modelResps =
|
||||
modelService.getModelListWithAuth(user, null, AuthType.VISIBLE);
|
||||
List<String> expectedModelBizNames = Lists.newArrayList("user_department", "singer");
|
||||
Assertions.assertEquals(expectedModelBizNames,
|
||||
Assertions.assertEquals(
|
||||
expectedModelBizNames,
|
||||
modelResps.stream().map(ModelResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@@ -60,7 +62,8 @@ public class SchemaAuthTest extends BaseTest {
|
||||
User user = DataUtils.getUserAlice();
|
||||
List<DataSetResp> dataSetResps = dataSetService.getDataSetsInheritAuth(user, 0L);
|
||||
List<String> expectedDataSetBizNames = Lists.newArrayList("singer");
|
||||
Assertions.assertEquals(expectedDataSetBizNames,
|
||||
Assertions.assertEquals(
|
||||
expectedDataSetBizNames,
|
||||
dataSetResps.stream().map(DataSetResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@@ -69,7 +72,8 @@ public class SchemaAuthTest extends BaseTest {
|
||||
User user = DataUtils.getUserJack();
|
||||
List<DomainResp> domainResps = domainService.getDomainListWithAdminAuth(user);
|
||||
List<String> expectedDomainBizNames = Lists.newArrayList("supersonic");
|
||||
Assertions.assertEquals(expectedDomainBizNames,
|
||||
Assertions.assertEquals(
|
||||
expectedDomainBizNames,
|
||||
domainResps.stream().map(DomainResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@@ -77,9 +81,10 @@ public class SchemaAuthTest extends BaseTest {
|
||||
public void test_getModelList_jack() {
|
||||
User user = DataUtils.getUserJack();
|
||||
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN);
|
||||
List<String> expectedModelBizNames = Lists.newArrayList("user_department",
|
||||
"s2_pv_uv_statis", "s2_stay_time_statis");
|
||||
Assertions.assertEquals(expectedModelBizNames,
|
||||
List<String> expectedModelBizNames =
|
||||
Lists.newArrayList("user_department", "s2_pv_uv_statis", "s2_stay_time_statis");
|
||||
Assertions.assertEquals(
|
||||
expectedModelBizNames,
|
||||
modelResps.stream().map(ModelResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@@ -88,8 +93,8 @@ public class SchemaAuthTest extends BaseTest {
|
||||
User user = DataUtils.getUserJack();
|
||||
List<DataSetResp> dataSetResps = dataSetService.getDataSetsInheritAuth(user, 0L);
|
||||
List<String> expectedDataSetBizNames = Lists.newArrayList("s2", "singer");
|
||||
Assertions.assertEquals(expectedDataSetBizNames,
|
||||
Assertions.assertEquals(
|
||||
expectedDataSetBizNames,
|
||||
dataSetResps.stream().map(DataSetResp::getBizName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,8 +13,7 @@ import java.util.List;
|
||||
|
||||
public class TagObjectTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
private TagObjectService tagObjectService;
|
||||
@Autowired private TagObjectService tagObjectService;
|
||||
|
||||
@Test
|
||||
void testCreateTagObject() throws Exception {
|
||||
@@ -32,7 +31,8 @@ public class TagObjectTest extends BaseTest {
|
||||
BeanUtils.copyProperties(tagObjectResp, tagObjectReqUpdate);
|
||||
tagObjectReqUpdate.setName("艺人1");
|
||||
tagObjectService.update(tagObjectReqUpdate, User.getFakeUser());
|
||||
TagObjectResp tagObject = tagObjectService.getTagObject(tagObjectReqUpdate.getId(), User.getFakeUser());
|
||||
TagObjectResp tagObject =
|
||||
tagObjectService.getTagObject(tagObjectReqUpdate.getId(), User.getFakeUser());
|
||||
tagObjectService.delete(tagObject.getId(), User.getFakeUser(), false);
|
||||
}
|
||||
|
||||
@@ -53,5 +53,4 @@ public class TagObjectTest extends BaseTest {
|
||||
tagObjectReq.setBizName("new_singer");
|
||||
return tagObjectReq;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,15 +13,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||
public class TagTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
private TagQueryService tagQueryService;
|
||||
@Autowired private TagQueryService tagQueryService;
|
||||
|
||||
@Test
|
||||
public void testQueryTagValue() throws Exception {
|
||||
ItemValueReq itemValueReq = new ItemValueReq();
|
||||
itemValueReq.setId(1L);
|
||||
ItemValueResp itemValueResp = tagQueryService.queryTagValue(itemValueReq, User.getFakeUser());
|
||||
ItemValueResp itemValueResp =
|
||||
tagQueryService.queryTagValue(itemValueReq, User.getFakeUser());
|
||||
Assertions.assertNotNull(itemValueResp);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.tencent.supersonic.headless;
|
||||
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticTranslateResp;
|
||||
@@ -18,8 +17,10 @@ public class TranslateTest extends BaseTest {
|
||||
@Test
|
||||
public void testSqlExplain() throws Exception {
|
||||
String sql = "SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ";
|
||||
SemanticTranslateResp explain = semanticLayerService.translate(QueryReqBuilder.buildS2SQLReq(sql,
|
||||
DataUtils.getMetricAgentView()), User.getFakeUser());
|
||||
SemanticTranslateResp explain =
|
||||
semanticLayerService.translate(
|
||||
QueryReqBuilder.buildS2SQLReq(sql, DataUtils.getMetricAgentView()),
|
||||
User.getFakeUser());
|
||||
assertNotNull(explain);
|
||||
assertNotNull(explain.getQuerySQL());
|
||||
assertTrue(explain.getQuerySQL().contains("department"));
|
||||
@@ -29,11 +30,11 @@ public class TranslateTest extends BaseTest {
|
||||
@Test
|
||||
public void testStructExplain() throws Exception {
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(Arrays.asList("department"));
|
||||
SemanticTranslateResp explain = semanticLayerService.translate(queryStructReq, User.getFakeUser());
|
||||
SemanticTranslateResp explain =
|
||||
semanticLayerService.translate(queryStructReq, User.getFakeUser());
|
||||
assertNotNull(explain);
|
||||
assertNotNull(explain.getQuerySQL());
|
||||
assertTrue(explain.getQuerySQL().contains("department"));
|
||||
assertTrue(explain.getQuerySQL().contains("pv"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -51,9 +51,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setEndpoint(QianfanModelFactory.DEFAULT_ENDPOINT);
|
||||
|
||||
ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -65,9 +67,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setApiKey("e2724491714b3b2a0274e987905f1001.5JyHgf4vbZVJ7gC5");
|
||||
|
||||
ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -80,9 +84,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setApiKey(ParameterConfig.DEMO);
|
||||
|
||||
ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -94,9 +100,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setApiKey(ParameterConfig.DEMO);
|
||||
|
||||
ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
chatModel.generate("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -132,9 +140,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setApiKey(ParameterConfig.DEMO);
|
||||
|
||||
EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -146,9 +156,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setApiKey(ParameterConfig.DEMO);
|
||||
|
||||
EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -161,9 +173,11 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setSecretKey(ParameterConfig.DEMO);
|
||||
|
||||
EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -175,8 +189,10 @@ public class ModelProviderTest extends BaseApplication {
|
||||
modelConfig.setApiKey("e2724491714b3b2a0274e987905f1001.5JyHgf4vbZVJ7gC5");
|
||||
|
||||
EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
|
||||
assertThrows(RuntimeException.class, () -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
assertThrows(
|
||||
RuntimeException.class,
|
||||
() -> {
|
||||
embeddingModel.embed("hi");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,5 @@ public class AESEncryptionUtilTest {
|
||||
System.out.println("after AES/ECB encrypt:" + encryptStr);
|
||||
String decryptStr = AESEncryptionUtil.aesDecryptECB(encryptStr);
|
||||
System.out.println("after AES/ECB decrypt:" + decryptStr);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,13 +61,15 @@ public class DataUtils {
|
||||
}
|
||||
|
||||
public static SchemaElement getSchemaElement(String name) {
|
||||
return SchemaElement.builder()
|
||||
.name(name)
|
||||
.build();
|
||||
return SchemaElement.builder().name(name).build();
|
||||
}
|
||||
|
||||
public static QueryFilter getFilter(String bizName, FilterOperatorEnum filterOperatorEnum,
|
||||
Object value, String name, Long elementId) {
|
||||
public static QueryFilter getFilter(
|
||||
String bizName,
|
||||
FilterOperatorEnum filterOperatorEnum,
|
||||
Object value,
|
||||
String name,
|
||||
Long elementId) {
|
||||
QueryFilter filter = new QueryFilter();
|
||||
filter.setBizName(bizName);
|
||||
filter.setOperator(filterOperatorEnum);
|
||||
@@ -87,8 +89,12 @@ public class DataUtils {
|
||||
return dateInfo;
|
||||
}
|
||||
|
||||
public static DateConf getDateConf(DateConf.DateMode dateMode, Integer unit,
|
||||
String period, String startDate, String endDate) {
|
||||
public static DateConf getDateConf(
|
||||
DateConf.DateMode dateMode,
|
||||
Integer unit,
|
||||
String period,
|
||||
String startDate,
|
||||
String endDate) {
|
||||
DateConf dateInfo = new DateConf();
|
||||
dateInfo.setUnit(unit);
|
||||
dateInfo.setDateMode(dateMode);
|
||||
@@ -98,7 +104,8 @@ public class DataUtils {
|
||||
return dateInfo;
|
||||
}
|
||||
|
||||
public static DateConf getDateConf(DateConf.DateMode dateMode, String startDate, String endDate) {
|
||||
public static DateConf getDateConf(
|
||||
DateConf.DateMode dateMode, String startDate, String endDate) {
|
||||
DateConf dateInfo = new DateConf();
|
||||
dateInfo.setDateMode(dateMode);
|
||||
dateInfo.setStartDate(startDate);
|
||||
@@ -106,7 +113,8 @@ public class DataUtils {
|
||||
return dateInfo;
|
||||
}
|
||||
|
||||
public static DateConf getDateConf(DateConf.DateMode dateMode, String startDate, String endDate, int unit) {
|
||||
public static DateConf getDateConf(
|
||||
DateConf.DateMode dateMode, String startDate, String endDate, int unit) {
|
||||
DateConf dateInfo = new DateConf();
|
||||
dateInfo.setDateMode(dateMode);
|
||||
dateInfo.setStartDate(startDate);
|
||||
@@ -141,8 +149,14 @@ public class DataUtils {
|
||||
RuleParserTool ruleQueryTool = new RuleParserTool();
|
||||
ruleQueryTool.setType(AgentToolType.NL2SQL_RULE);
|
||||
ruleQueryTool.setDataSetIds(Lists.newArrayList(-1L));
|
||||
ruleQueryTool.setQueryModes(Lists.newArrayList("METRIC_ID", "METRIC_FILTER", "METRIC_MODEL",
|
||||
"TAG_DETAIL", "TAG_LIST_FILTER", "TAG_ID"));
|
||||
ruleQueryTool.setQueryModes(
|
||||
Lists.newArrayList(
|
||||
"METRIC_ID",
|
||||
"METRIC_FILTER",
|
||||
"METRIC_MODEL",
|
||||
"TAG_DETAIL",
|
||||
"TAG_LIST_FILTER",
|
||||
"TAG_ID"));
|
||||
return ruleQueryTool;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,11 +6,12 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.chat.knowledge.DatabaseMapResult;
|
||||
import com.tencent.supersonic.headless.chat.knowledge.MapResult;
|
||||
import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class HanlpTest {
|
||||
|
||||
@Test
|
||||
@@ -36,4 +37,4 @@ public class HanlpTest {
|
||||
HanlpHelper.transLetterOriginal(mapResults);
|
||||
Assert.assertEquals(mapResults.size(), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user