summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
author窦凤虎 <[email protected]>2024-07-15 14:14:04 +0000
committer窦凤虎 <[email protected]>2024-07-15 14:14:04 +0000
commit3e68ae6f67eb16174807d83f1eae2a203ad235f0 (patch)
tree21eeb6684b826885824993a0cb4a2bf7cf32405b /src/test/java
parent1f8a10c9d5f1f839d22710aba953aadaba66494b (diff)
parentea9ae304972a683883515679c243dfc9c1b44a8d (diff)
Merge branch 'develop' into 'master'master
Revert "[Fix][schema] 修正dos event schema field_discovery_metric session计算方式(TSG-21222)" See merge request galaxy/platform/galaxy-qgw-service!40
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/mesalab/GalaxyQGWApplicationTests.java6
-rw-r--r--src/test/java/com/mesalab/knowledge/JsonSchemaTest.java107
-rw-r--r--src/test/java/com/mesalab/qgw/service/ApplicationAndProtocolTest.java113
-rw-r--r--src/test/java/com/mesalab/qgw/service/AutoPeriodDSLTest.java204
-rw-r--r--src/test/java/com/mesalab/qgw/service/AutoPeriodSQLTest.java227
-rw-r--r--src/test/java/com/mesalab/qgw/service/AvroSchemaFormatTest.java40
-rw-r--r--src/test/java/com/mesalab/qgw/service/ClickHouseTest.java5
-rw-r--r--src/test/java/com/mesalab/qgw/service/DruidTest.java5
-rw-r--r--src/test/java/com/mesalab/qgw/service/EngineTest.java12
-rw-r--r--src/test/java/com/mesalab/qgw/service/EntityTest.java66
-rw-r--r--src/test/java/com/mesalab/qgw/service/ExampleDataTest.java62
-rw-r--r--src/test/java/com/mesalab/qgw/service/FieldDiscoveryTest.java114
-rw-r--r--src/test/java/com/mesalab/qgw/service/HttpClientServiceTest.java24
-rw-r--r--src/test/java/com/mesalab/qgw/service/JobTest.java98
-rw-r--r--src/test/java/com/mesalab/qgw/service/JsonSchemaValidatorTest.java86
-rw-r--r--src/test/java/com/mesalab/qgw/service/KnowledgeBaseTest.java55
-rw-r--r--src/test/java/com/mesalab/qgw/service/MergeFunctionsHelperTest.java36
-rw-r--r--src/test/java/com/mesalab/qgw/service/NetworkMonitorTest.java52
-rw-r--r--src/test/java/com/mesalab/qgw/service/ProtocolTreeTest.java11
-rw-r--r--src/test/java/com/mesalab/qgw/service/RecommendTest.java48
-rw-r--r--src/test/java/com/mesalab/qgw/service/SQLAdHocTest.java123
-rw-r--r--src/test/java/com/mesalab/qgw/service/SQLSavedTest.java41
-rw-r--r--src/test/java/com/mesalab/qgw/service/SchemaDynamicTest.java (renamed from src/test/java/com/mesalab/qgw/service/AvroSchemaDynamicTest.java)6
-rw-r--r--src/test/java/com/mesalab/qgw/service/TopEntityTest.java87
-rw-r--r--src/test/java/com/mesalab/qgw/service/UnstructuredTest.java44
25 files changed, 1119 insertions, 553 deletions
diff --git a/src/test/java/com/mesalab/GalaxyQGWApplicationTests.java b/src/test/java/com/mesalab/GalaxyQGWApplicationTests.java
index 276c3fa3..fd89b068 100644
--- a/src/test/java/com/mesalab/GalaxyQGWApplicationTests.java
+++ b/src/test/java/com/mesalab/GalaxyQGWApplicationTests.java
@@ -9,6 +9,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
@@ -18,12 +19,15 @@ import java.util.Map;
import java.util.Objects;
@RunWith(SpringRunner.class)
-@SpringBootTest(classes = {GalaxyQGWApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+@SpringBootTest(classes = {GalaxyQGWApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EnableAutoConfiguration
@ActiveProfiles("test")
public class GalaxyQGWApplicationTests {
private static final Log log = LogFactory.get();
+ @LocalServerPort
+ protected int testPort;
+
static {
System.setProperty("jasypt.encryptor.password", "galaxy");
System.setProperty("JM.SNAPSHOT.PATH", "config");
diff --git a/src/test/java/com/mesalab/knowledge/JsonSchemaTest.java b/src/test/java/com/mesalab/knowledge/JsonSchemaTest.java
deleted file mode 100644
index ec78f262..00000000
--- a/src/test/java/com/mesalab/knowledge/JsonSchemaTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.mesalab.knowledge;
-
-import cn.hutool.log.Log;
-import cn.hutool.log.LogFactory;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.github.fge.jackson.JsonLoader;
-import com.github.fge.jsonschema.core.exceptions.ProcessingException;
-import com.github.fge.jsonschema.core.report.ProcessingMessage;
-import com.github.fge.jsonschema.core.report.ProcessingReport;
-import com.github.fge.jsonschema.main.JsonSchema;
-import com.github.fge.jsonschema.main.JsonSchemaFactory;
-import com.mesalab.GalaxyQGWApplicationTests;
-import org.apache.commons.lang3.Validate;
-import org.junit.Test;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-/**
- * @description:
- * @author: zhq
- * @create: 2020-07-31
- **/
-@EnableAutoConfiguration
-public class JsonSchemaTest extends GalaxyQGWApplicationTests {
- private static final Log log = LogFactory.get();
-
- @Test
- public void jsonTest() {
- //创建jsonschema工厂
- String jsonStr = "{\n" +
- " \"clientId\": null,\n" +
- " \"query\": {\n" +
- " \"queryType\": \"iplearning\",\n" +
- " \"dataSource\": \"IP_LEARNING_VIEW\",\n" +
- " \"parameters\": {\n" +
- " \"match\": [\n" +
- " {\n" +
- " \"type\": \"substring\",\n" +
- " \"fieldKey\": \"FQDN_NAME\",\n" +
- " \"fieldValues\": \n" +
- " [\"360\"]\n" +
- " \n" +
- " }\n" +
- " ],\n" +
- " \"range\": [\n" +
- " {\n" +
- " \"type\": \"ge\",\n" +
- " \"fieldKey\": \"PROTOCOL\",\n" +
- " \"fieldValues\": [\n" +
- " \"HTTP\"\n" +
- " ]\n" +
- " },\n" +
- " {\n" +
- " \"type\": \"eq\",\n" +
- " \"fieldKey\": \"DEPTH\",\n" +
- " \"fieldValues\": [\n" +
- " 1\n" +
- " ]\n" +
- " },\n" +
- " {\n" +
- " \"type\": \"ge\",\n" +
- " \"fieldKey\": \"UNIQ_CIP\",\n" +
- " \"fieldValues\": \n" +
- " [5]\n" +
- " \n" +
- " }\n" +
- " ],\n" +
- " \"intervals\": [\n" +
- " \"2020-07-01 00:00:00/2020-08-02 00:00:00\"]\n" +
- " ,\n" +
- " \"limit\": \"15\"\n" +
- " }\n" +
- " }\n" +
- "}";
- try {
- JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
- //通过jsonschemaFactory获取jsonnode对象
- JsonNode schemaNode = JsonLoader.fromResource("/dsl-validation.json");
- //通过jsonstr字符串获取对应的jsonnode对象
- JsonNode dataNode = JsonLoader.fromString(jsonStr);
- JsonSchema jsonSchema = factory.getJsonSchema(schemaNode);
- //使用json-schema-validator中的jsonschema对象的validate方法对数据进行校验
- //获取处理的报告信息
- ProcessingReport processingReport = jsonSchema.validate(dataNode);
- //获取完整的报告信息
- Iterator<ProcessingMessage> iterator = processingReport.iterator();
- StringBuffer sb = new StringBuffer();
- while (iterator.hasNext()) {
- ProcessingMessage next = iterator.next();
- JsonNode jsonNode = next.asJson();
- sb.append("pointer on ");
- sb.append(jsonNode.get("instance").get("pointer"));
- sb.append(", ");
- sb.append(next.getMessage());
- sb.append(". ");
- }
- //判断校验是否成功,如果为true成功
- Validate.isTrue(processingReport.isSuccess(), sb.toString());
- } catch (ProcessingException e) {
- log.error("ProcessingException information: ", e.getMessage());
- } catch (IOException e) {
- log.error("IOException information: ", e.getMessage());
- }
- }
-}
diff --git a/src/test/java/com/mesalab/qgw/service/ApplicationAndProtocolTest.java b/src/test/java/com/mesalab/qgw/service/ApplicationAndProtocolTest.java
new file mode 100644
index 00000000..dffa9959
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/ApplicationAndProtocolTest.java
@@ -0,0 +1,113 @@
+package com.mesalab.qgw.service;
+
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.entity.BaseResult;
+import com.mesalab.qgw.controller.QueryController;
+import com.mesalab.qgw.model.basic.DSLQueryRequestParam;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.web.context.request.async.DeferredResult;
+
+import java.util.Map;
+
+/**
+ * @Author ww
+ * @Date 2024/1/30
+ */
+@EnableAutoConfiguration
+public class ApplicationAndProtocolTest extends GalaxyQGWApplicationTests {
+
+ @Autowired
+ private QueryController queryController;
+
+ @Test
+ public void testAppAndProtocolSummary() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_summary", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatusById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testAppAndProtocolTreeComposition() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_tree_composition", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResultById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testAppAndProtocolTreeThroughput() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_tree_throughput", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResult(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testAppAndProtocolTopApp() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_top_apps", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatus(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testAppAndProtocolTreeAppSummaryOneshot() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_app_summary", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 200);
+ }
+
+ @Test
+ public void testAppAndProtocolAppRelatedInternalIpsOneshot() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_app_related_internal_ips", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 200);
+ }
+
+ @Test
+ public void testAppAndProtocolAppThroughputOneshot() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/applicationAndProtocolTest.json", "application_and_protocol_app_throughput", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 200);
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/AutoPeriodDSLTest.java b/src/test/java/com/mesalab/qgw/service/AutoPeriodDSLTest.java
new file mode 100644
index 00000000..cabe8c5a
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/AutoPeriodDSLTest.java
@@ -0,0 +1,204 @@
+package com.mesalab.qgw.service;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.google.common.collect.Lists;
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.utils.sqlparser.AutoPeriodHelper;
+import com.mesalab.qgw.model.basic.DSLQueryRequestParam;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+/**
+ * TODO
+ *
+ * @Classname AutoPeriodTest
+ * @Date 2024/6/20 09:24
+ * @Author wWei
+ */
+@EnableAutoConfiguration
+public class AutoPeriodDSLTest extends GalaxyQGWApplicationTests {
+ private static final Log log = LogFactory.get();
+ private static final DateTime now;
+
+ static {
+ now = new DateTime();
+ }
+
+ @Test
+ public void testDSLLast5Minutes() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetMinute(now, -5), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1S", granularity);
+ }
+
+ @Test
+ public void testDSLLast5MinutesISO8601() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ String startTime = DateUtil.format(DateUtil.offsetMinute(now, -5), "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1S", granularity);
+ }
+
+ @Test
+ public void testDSLLast30Minutes() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetMinute(now, -30), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT30S", granularity);
+ }
+
+ @Test
+ public void testDSLLast1Hour() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -1), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT30S", granularity);
+ }
+
+ @Test
+ public void testDSLLast6Hour() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -6), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1M", granularity);
+ }
+
+ @Test
+ public void testDSLLast12Hour() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -12), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1M", granularity);
+ }
+
+ @Test
+ public void testDSLLast1Day() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -1), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT5M", granularity);
+ }
+
+ @Test
+ public void testDSLLast2Day() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -2), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT5M", granularity);
+ }
+
+ @Test
+ public void testDSLLast3Day() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -3), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT5M", granularity);
+ }
+
+ @Test
+ public void testDSLLast1Week() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetWeek(now, -1), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1H", granularity);
+ }
+
+ @Test
+ public void testDSLLast30Day() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -30), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1H", granularity);
+ }
+
+ @Test
+ public void testDSLLast365Day() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -365), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "P1D", granularity);
+ }
+
+ @Test
+ public void testDSLConst() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_const", DSLQueryRequestParam.class);
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1S", granularity);
+ }
+
+ @Test
+ public void testDSLAutoRange() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "application_and_protocol_summary_auto_const_range", DSLQueryRequestParam.class);
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "P1D", granularity);
+ }
+
+ @Test
+ public void testDSLTrafficSpectrumNetworkThroughputTrend() {
+ DSLQueryRequestParam dslQueryRequestParam = jsonToInParameter("parameters/dslAutoGranularityTest.json", "traffic_spectrum_network_throughput_trend_auto", DSLQueryRequestParam.class);
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -1), "yyyy-MM-dd HH:mm:ss");
+ dslQueryRequestParam.setIntervals(Lists.newArrayList(startTime + "/" + endTime));
+ AutoPeriodHelper.buildDslGranularity(dslQueryRequestParam);
+ String granularity = dslQueryRequestParam.getGranularity();
+ log.info(granularity);
+ Assert.assertEquals("ERROR: don't expect period", "PT1M", granularity);
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/AutoPeriodSQLTest.java b/src/test/java/com/mesalab/qgw/service/AutoPeriodSQLTest.java
new file mode 100644
index 00000000..214d0554
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/AutoPeriodSQLTest.java
@@ -0,0 +1,227 @@
+package com.mesalab.qgw.service;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.utils.sqlparser.AutoPeriodHelper;
+import net.sf.jsqlparser.JSQLParserException;
+import net.sf.jsqlparser.parser.CCJSqlParserUtil;
+import net.sf.jsqlparser.statement.Statement;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+/**
+ * TODO
+ *
+ * @Classname AutoPeriodTest
+ * @Date 2024/6/20 09:24
+ * @Author wWei
+ */
+@EnableAutoConfiguration
+public class AutoPeriodSQLTest extends GalaxyQGWApplicationTests {
+ private static final Log log = LogFactory.get();
+ private static final DateTime now;
+
+ static {
+ now = new DateTime();
+ }
+
+ private static final String originalSQL = "SELECT\n" +
+ " FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(stat_time, CHART_GRANULARITY('${start_time}', '${end_time}'), 'zero')) AS stat_time,\n" +
+ " AVG( in_pkts_per_sec ) AS avg_in_pkts_per_sec\n" +
+ "FROM\n" +
+ " (\n" +
+ " SELECT\n" +
+ " TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time), SAMPLE_GRANULARITY('${start_time}', '${end_time}')) AS stat_time,\n" +
+ " RATE( in_pkts, SAMPLE_GRANULARITY('${start_time}', '${end_time}'), 1) AS in_pkts_per_sec\n" +
+ " FROM\n" +
+ " traffic_general_stat\n" +
+ " WHERE\n" +
+ " __time >= '${start_time}'\n" +
+ " AND __time < '${end_time}'\n" +
+ " AND vsys_id IN ( 1)\n" +
+ " AND ( 1 = 1 )\n" +
+ " GROUP BY\n" +
+ " TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time), SAMPLE_GRANULARITY('${start_time}', '${end_time}'))\n" +
+ " HAVING TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time), SAMPLE_GRANULARITY('${start_time}', '${end_time}')) >= '${start_time}'\n" +
+ " ORDER BY TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time), SAMPLE_GRANULARITY('${start_time}', '${end_time}')) DESC\n" +
+ " )\n" +
+ "GROUP BY\n" +
+ " FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(stat_time, CHART_GRANULARITY('${start_time}', '${end_time}'), 'zero'))\n" +
+ "ORDER BY\n" +
+ " stat_time ASC\n" +
+ "LIMIT 10";
+
+ @Test
+ public void testSQLLast5Minutes() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetMinute(now, -5), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: not contains PT1S", afterReplaceSQL.contains("PT1S"));
+ }
+
+ @Test
+ public void testSQLLast5MinutesISO8601() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ String startTime = DateUtil.format(DateUtil.offsetMinute(now, -5), "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: not contains PT1S", afterReplaceSQL.contains("PT1S"));
+ }
+
+ @Test
+ public void testSQLLast30Minutes() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetMinute(now, -30), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT1S") && afterReplaceSQL.contains("PT30S"));
+ }
+
+ @Test
+ public void testSQLLast1Hour() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -1), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT1S") && afterReplaceSQL.contains("PT30S"));
+ }
+
+ @Test
+ public void testSQLLast6Hour() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -6), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT30S") && afterReplaceSQL.contains("PT1M"));
+ }
+
+ @Test
+ public void testSQLLast12Hour() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -6), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT30S") && afterReplaceSQL.contains("PT1M"));
+ }
+
+ @Test
+ public void testSQLLast1Day() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -1), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT1M") && afterReplaceSQL.contains("PT5M"));
+ }
+
+ @Test
+ public void testSQLLast2Day() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -2), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT1M") && afterReplaceSQL.contains("PT5M"));
+ }
+
+ @Test
+ public void testSQLLast3Day() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -3), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT1M") && afterReplaceSQL.contains("PT5M"));
+ }
+
+ @Test
+ public void testSQLLast1Week() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetWeek(now, -1), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT5M") && afterReplaceSQL.contains("PT1H"));
+ }
+
+ @Test
+ public void testSQLLast1Month() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -30), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT5M") && afterReplaceSQL.contains("PT1H"));
+ }
+
+ @Test
+ public void testSQLLast365Day() throws JSQLParserException {
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetDay(now, -365), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = originalSQL.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT1H") && afterReplaceSQL.contains("P1D"));
+ }
+
+ @Test
+ public void testSQLDrillDown() throws JSQLParserException {
+ String sql = "SELECT FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time), CHART_GRANULARITY('${start_time}', '${end_time}'), 'zero')) AS \"Time\", device_group AS \"Device Group\", RATE(sessions, CHART_GRANULARITY('${start_time}', '${end_time}'), 1) AS \"Sessions\" FROM druid.statistics_rule WHERE __time >= '${start_time}' AND __time < '${end_time}' AND rule_id = 787368 AND template_id = 40010 AND chart_id = 44044 AND version = 1 AND device_group IN (SELECT device_group FROM statistics_rule WHERE __time >= '${start_time}' AND __time < '${end_time}' AND rule_id = 787368 AND template_id = 40010 AND chart_id = 44044 AND version = 1 AND statistics_rule.vsys_id IN (1) GROUP BY device_group ORDER BY RATE(sessions, CHART_GRANULARITY('${start_time}', '${end_time}'), 1) DESC LIMIT 10) AND statistics_rule.vsys_id IN (1) GROUP BY device_group, FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time), CHART_GRANULARITY('${start_time}', '${end_time}'), 'zero')) ORDER BY \"Time\" ASC LIMIT 65536";
+ String endTime = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+ String startTime = DateUtil.format(DateUtil.offsetHour(now, -1), "yyyy-MM-dd HH:mm:ss");
+ String afterReplaceSQL = sql.replace("${start_time}", startTime);
+ afterReplaceSQL = afterReplaceSQL.replace("${end_time}", endTime);
+ Statement statement = CCJSqlParserUtil.parse(afterReplaceSQL);
+ afterReplaceSQL = AutoPeriodHelper.buildSqlGranularity(statement).toString();
+ log.info(afterReplaceSQL);
+ Assert.assertFalse("ERROR: contains CHART/SAMPLE_GRANULARITY", afterReplaceSQL.contains("CHART_GRANULARITY") || afterReplaceSQL.contains("SAMPLE_GRANULARITY"));
+ Assert.assertTrue("ERROR: don't expect period", afterReplaceSQL.contains("PT30S"));
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/AvroSchemaFormatTest.java b/src/test/java/com/mesalab/qgw/service/AvroSchemaFormatTest.java
deleted file mode 100644
index efffa34d..00000000
--- a/src/test/java/com/mesalab/qgw/service/AvroSchemaFormatTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.mesalab.qgw.service;
-
-import cn.hutool.log.Log;
-import cn.hutool.log.LogFactory;
-import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.entity.BaseResult;
-import org.apache.http.HttpStatus;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-
-import static org.junit.Assert.assertEquals;
-
-@EnableAutoConfiguration
-public class AvroSchemaFormatTest extends GalaxyQGWApplicationTests {
- private static final Log log = LogFactory.get();
- @Autowired
- public DiagnosisService diagnosisService;
- @Before
- public void testBefore() {
- log.info("=================================================SCHEMA TEST BEGIN=================================================");
- }
-
- @After
- public void testAfter() {
- log.info("=================================================SCHEMA TEST END=================================================");
- }
-
- /**
- * 测试schema
- */
- @Test
- public void testCheckSchema() {
- BaseResult baseResult = diagnosisService.validateSchema();
- assertEquals("Schema format failure.", String.valueOf(baseResult.getStatus()), String.valueOf(HttpStatus.SC_OK));
- }
-
-}
diff --git a/src/test/java/com/mesalab/qgw/service/ClickHouseTest.java b/src/test/java/com/mesalab/qgw/service/ClickHouseTest.java
index 4e9dd11d..f6500835 100644
--- a/src/test/java/com/mesalab/qgw/service/ClickHouseTest.java
+++ b/src/test/java/com/mesalab/qgw/service/ClickHouseTest.java
@@ -8,7 +8,7 @@ import cn.hutool.log.LogFactory;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.enums.DBTypeEnum;
+import com.mesalab.common.enums.DBEngineType;
import com.mesalab.qgw.benchmark.DialectWriter;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
@@ -20,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import java.io.File;
-import java.io.IOException;
import java.util.List;
import java.util.Optional;
//clickhouse-benchmark -i 93 --host 127.0.0.1 --port 9001 --user default --password "ceiec2019" --database tsg_galaxy_v3 < /root/session_record_queries_20210113203103.sql
@@ -38,7 +37,7 @@ public class ClickHouseTest extends GalaxyQGWApplicationTests {
@Test
public void testSqlParser() {
- String pocFile = dialectWriter.buildPocSQL(Lists.newLinkedList(), DBTypeEnum.CLICKHOUSE.getValue(), null);
+ String pocFile = dialectWriter.buildPocSQL(Lists.newLinkedList(), DBEngineType.CLICKHOUSE.getValue(), null);
Optional<File> ckTestFile = Optional.of(new File(pocFile));
if (ckTestFile.isPresent()) {
if (!ckTestFile.get().isFile()) {
diff --git a/src/test/java/com/mesalab/qgw/service/DruidTest.java b/src/test/java/com/mesalab/qgw/service/DruidTest.java
index a8b4fb51..55ffd62a 100644
--- a/src/test/java/com/mesalab/qgw/service/DruidTest.java
+++ b/src/test/java/com/mesalab/qgw/service/DruidTest.java
@@ -8,7 +8,7 @@ import cn.hutool.log.LogFactory;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.enums.DBTypeEnum;
+import com.mesalab.common.enums.DBEngineType;
import com.mesalab.qgw.benchmark.DialectWriter;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
@@ -20,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import java.io.File;
-import java.io.IOException;
import java.util.List;
import java.util.Optional;
@@ -35,7 +34,7 @@ public class DruidTest extends GalaxyQGWApplicationTests {
@Test
public void testSqlParser() {
- String pocFile = dialectWriter.buildPocSQL(Lists.newLinkedList(), DBTypeEnum.DRUID.getValue(), null);
+ String pocFile = dialectWriter.buildPocSQL(Lists.newLinkedList(), DBEngineType.DRUID.getValue(), null);
Optional<File> ckTestFile = Optional.of(new File(pocFile));
if (ckTestFile.isPresent()) {
if (!ckTestFile.get().isFile()) {
diff --git a/src/test/java/com/mesalab/qgw/service/EngineTest.java b/src/test/java/com/mesalab/qgw/service/EngineTest.java
index 65629173..b69d3e8a 100644
--- a/src/test/java/com/mesalab/qgw/service/EngineTest.java
+++ b/src/test/java/com/mesalab/qgw/service/EngineTest.java
@@ -4,7 +4,6 @@ import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.mesalab.GalaxyQGWApplicationTests;
import com.mesalab.common.entity.BaseResult;
-import com.mesalab.common.enums.DiagnosisOptionEnum;
import org.apache.http.HttpStatus;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,16 +23,5 @@ public class EngineTest extends GalaxyQGWApplicationTests {
assertEquals("Schema validate failure.", String.valueOf(baseResult.getStatus()), String.valueOf(HttpStatus.SC_OK));
}
- @Test
- public void testMetadata() {
- BaseResult baseResult = diagnosisService.validateMetadata();
- assertEquals("Metadata validate failure.", String.valueOf(baseResult.getStatus()), String.valueOf(HttpStatus.SC_OK));
- }
-
- @Test
- public void testPocSql() {
- BaseResult baseResult = diagnosisService.runPocSQL(false, DiagnosisOptionEnum.PARSE.getValue(), null);
- assertEquals("POC sql parse failure.", String.valueOf(baseResult.getStatus()), String.valueOf(HttpStatus.SC_OK));
- }
}
diff --git a/src/test/java/com/mesalab/qgw/service/EntityTest.java b/src/test/java/com/mesalab/qgw/service/EntityTest.java
deleted file mode 100644
index 2c5f498d..00000000
--- a/src/test/java/com/mesalab/qgw/service/EntityTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.mesalab.qgw.service;
-
-import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.entity.BaseResult;
-import com.mesalab.services.common.dsl.ComDSLObject;
-import com.mesalab.services.service.EntityService;
-import com.mesalab.services.service.RelationService;
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-
-/**
- * @Author wxs
- * @Date 2022/9/28
- */
-@EnableAutoConfiguration
-public class EntityTest extends GalaxyQGWApplicationTests {
-
- @Autowired
- private EntityService entityService;
-
- @Autowired
- private RelationService relationService;
-
- @Test
- public void activeClientIp() {
-
- ComDSLObject dslObject = jsonToInParameter("parameters/entityTest.json", "activeClientIp", ComDSLObject.class);
- BaseResult entityInfo = entityService.getEntityInfo("activeclientip", dslObject);
- Assert.assertTrue(entityInfo.getMessage(), entityInfo.getStatus() == 200);
-
- }
-
- @Test
- public void topServerIp() {
-
- ComDSLObject dslObject = jsonToInParameter("parameters/entityTest.json", "topServerIp", ComDSLObject.class);
- BaseResult entityInfo = entityService.getEntityInfo("topserverip", dslObject);
- Assert.assertTrue(entityInfo.getMessage(), entityInfo.getStatus() == 200);
-
- }
-
- @Test
- public void topSni() {
-
- ComDSLObject dslObject = jsonToInParameter("parameters/entityTest.json", "topSni", ComDSLObject.class);
- BaseResult entityInfo = entityService.getEntityInfo("topsni", dslObject);
- Assert.assertTrue(entityInfo.getMessage(), entityInfo.getStatus() == 200);
-
- }
-
- @Test
- public void subScriberidPool() {
- ComDSLObject dslObject = jsonToInParameter("parameters/entityTest.json", "subScriberidPool", ComDSLObject.class);
- BaseResult entityInfo = relationService.getRealRelation("subscriberidpool", dslObject);
- Assert.assertTrue(entityInfo.getMessage(), entityInfo.getStatus() == 200);
- }
-
- @Test
- public void gtpc() {
- ComDSLObject dslObject = jsonToInParameter("parameters/entityTest.json", "gtpc", ComDSLObject.class);
- BaseResult entityInfo = relationService.getRealRelation("gtpc", dslObject);
- Assert.assertTrue(entityInfo.getMessage(), entityInfo.getStatus() == 200);
- }
-}
diff --git a/src/test/java/com/mesalab/qgw/service/ExampleDataTest.java b/src/test/java/com/mesalab/qgw/service/ExampleDataTest.java
new file mode 100644
index 00000000..c0f985c3
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/ExampleDataTest.java
@@ -0,0 +1,62 @@
+package com.mesalab.qgw.service;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.entity.DataTypeMapping;
+import com.mesalab.common.utils.sqlparser.ExampleDataHelper;
+import com.mesalab.common.utils.sqlparser.SelectItemHelper;
+import com.mesalab.qgw.constant.DataTypeConst;
+import com.mesalab.qgw.constant.MetaConst;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.JSQLParserException;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+import java.util.List;
+import java.util.Map;
+
+
+@Slf4j
+@EnableAutoConfiguration
+public class ExampleDataTest extends GalaxyQGWApplicationTests {
+
+ @Test
+ public void testSelectItemHelper() throws JSQLParserException {
+ String sql = "SELECT filed_1 AS \"Field A\", SUM(field_2) AS \"SUM(field_2)\", MAX(field_3) FROM table GROUP BY filed_1 ORDER BY \"Field A\" DESC LIMIT 10";
+ Map<String, SelectItemHelper.AliasObject> selectItem = SelectItemHelper.getSelectItem(sql);
+ Assert.assertEquals("ok", 3, selectItem.size());
+ }
+
+ @Test
+ public void testExampleDataHelper() {
+ List<Map<String, String>> meta = initMeta();
+ List<Object> objects = ExampleDataHelper.buildExampleData(ExampleDataHelper.QUERY_TYPE_GROUP_BY, meta, 1L, null, true);
+ Assert.assertEquals("ok", 1, objects.size());
+ }
+
+ private static List<Map<String, String>> initMeta() {
+ List<Map<String, String>> meta = Lists.newArrayList();
+ Map<String, String> item1 = Maps.newHashMap();
+ item1.put(MetaConst.META_NAME, "Field A");
+ item1.put(MetaConst.META_TYPE, DataTypeMapping.STRING);
+ item1.put(MetaConst.META_CATEGORY, MetaConst.META_CATEGORY_DIMENSION);
+ item1.put(MetaConst.META_DATA_TYPE, DataTypeConst.IP);
+ meta.add(item1);
+
+ Map<String, String> item2 = Maps.newHashMap();
+ item2.put(MetaConst.META_NAME, "SUM(field_2)");
+ item2.put(MetaConst.META_TYPE, DataTypeMapping.LONG);
+ item2.put(MetaConst.META_CATEGORY, MetaConst.META_CATEGORY_METRIC);
+ meta.add(item2);
+
+ Map<String, String> item3 = Maps.newHashMap();
+ item3.put(MetaConst.META_NAME, "MAX(field_3)");
+ item3.put(MetaConst.META_TYPE, DataTypeMapping.LONG);
+ item3.put(MetaConst.META_CATEGORY, MetaConst.META_CATEGORY_METRIC);
+ meta.add(item3);
+ return meta;
+ }
+
+}
diff --git a/src/test/java/com/mesalab/qgw/service/FieldDiscoveryTest.java b/src/test/java/com/mesalab/qgw/service/FieldDiscoveryTest.java
new file mode 100644
index 00000000..db0ba405
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/FieldDiscoveryTest.java
@@ -0,0 +1,114 @@
+package com.mesalab.qgw.service;
+
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.entity.BaseResult;
+import com.mesalab.qgw.controller.QueryController;
+import com.mesalab.qgw.model.basic.DSLQueryRequestParam;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.web.context.request.async.DeferredResult;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author ww
+ * @Date 2024/1/30
+ */
+@EnableAutoConfiguration
+public class FieldDiscoveryTest extends GalaxyQGWApplicationTests {
+
+ @Autowired
+ private QueryController queryController;
+ private static final List<String> fields = new ArrayList<>();
+
+ static {
+ fields.add("flags");
+ fields.add("security_rule_list");
+ fields.add("client_port");
+ fields.add("server_ip");
+ }
+
+ @Test
+ public void testFieldDiscoveryDefault() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/fieldDiscoveryTest.json", "field_discovery_default", DSLQueryRequestParam.class);
+ body.getCustomRequestParam().put("custom.field_discovery.fields", fields);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatusById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testFieldDiscoverySessions() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/fieldDiscoveryTest.json", "field_discovery_sessions", DSLQueryRequestParam.class);
+ body.getCustomRequestParam().put("custom.field_discovery.fields", fields);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResultById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testFieldDiscoveryBytes() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/fieldDiscoveryTest.json", "field_discovery_bytes", DSLQueryRequestParam.class);
+ body.getCustomRequestParam().put("custom.field_discovery.fields", fields);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResult(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testFieldDiscoveryIncomingBytes() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/fieldDiscoveryTest.json", "field_discovery_incoming_bytes", DSLQueryRequestParam.class);
+ body.getCustomRequestParam().put("custom.field_discovery.fields", fields);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatus(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testFieldDiscoveryOutgoingBytes() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/fieldDiscoveryTest.json", "field_discovery_outgoing_bytes", DSLQueryRequestParam.class);
+ body.getCustomRequestParam().put("custom.field_discovery.fields", fields);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/HttpClientServiceTest.java b/src/test/java/com/mesalab/qgw/service/HttpClientServiceTest.java
new file mode 100644
index 00000000..d761f4fc
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/HttpClientServiceTest.java
@@ -0,0 +1,24 @@
+package com.mesalab.qgw.service;
+
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.enums.HttpStatusCodeEnum;
+import com.mesalab.qgw.service.impl.HttpClientServiceV2;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+@EnableAutoConfiguration
+public class HttpClientServiceTest extends GalaxyQGWApplicationTests {
+
+ @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
+ @Autowired
+ private HttpClientServiceV2 httpClientServiceV2;
+
+ @Test
+ public void testHttpGet() {
+ Assert.assertTrue(httpClientServiceV2.get("https://www.baidu.com", 1000).getStatusCode()==200);
+ Assert.assertTrue(httpClientServiceV2.get("http://www.baidu.com", 1).getStatusCode() == HttpStatusCodeEnum.GATEWAY_TIMEOUT.getCode());
+ Assert.assertTrue(httpClientServiceV2.get("http://fake.www.baidu.com", 1000).getStatusCode() == HttpStatusCodeEnum.BAD_GATEWAY.getCode());
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/JobTest.java b/src/test/java/com/mesalab/qgw/service/JobTest.java
deleted file mode 100644
index 4df5e0fd..00000000
--- a/src/test/java/com/mesalab/qgw/service/JobTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.mesalab.qgw.service;
-
-import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.entity.BaseResult;
-import com.mesalab.services.controller.JobController;
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.web.context.request.async.DeferredResult;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @Author wxs
- * @Date 2022/9/28
- */
-@EnableAutoConfiguration
-public class JobTest extends GalaxyQGWApplicationTests {
-
- @Autowired
- private JobController jobController;
-
- @Test
- public void fieldDiscoveryDefault() {
- HashMap param = jsonToInParameter("parameters/jobTest.json", "field_discovery_default", HashMap.class);
- BaseResult committed = jobController.commit(param);
- Assert.assertTrue(committed.getMessage(), committed.getStatus() == 201);
- String id = ((List<Map>) committed.getData()).get(0).get("job_id").toString();
- DeferredResult<BaseResult> baseResultDeferredResult = jobController.statisticsResult(id);
- if(baseResultDeferredResult.hasResult()){
- BaseResult result = (BaseResult) baseResultDeferredResult.getResult();
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
- }
-
- @Test
- public void fieldDiscoveryBytes() {
- HashMap param = jsonToInParameter("parameters/jobTest.json", "field_discovery_bytes", HashMap.class);
- BaseResult committed = jobController.commit(param);
- Assert.assertTrue(committed.getMessage(), committed.getStatus() == 201);
- String id = ((List<Map>) committed.getData()).get(0).get("job_id").toString();
- DeferredResult<BaseResult> baseResultDeferredResult = jobController.statisticsResult(id);
- if(baseResultDeferredResult.hasResult()){
- BaseResult result = (BaseResult) baseResultDeferredResult.getResult();
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
- }
-
- @Test
- public void longTerm() {
- HashMap param = jsonToInParameter("parameters/jobTest.json", "long_term", HashMap.class);
- BaseResult committed = jobController.commit(param);
- Assert.assertTrue(committed.getMessage(), committed.getStatus() == 201);
- String id = ((List<Map>) committed.getData()).get(0).get("job_id").toString();
- DeferredResult<BaseResult> baseResultDeferredResult = jobController.statisticsResult(id);
- if(baseResultDeferredResult.hasResult()){
- BaseResult result = (BaseResult) baseResultDeferredResult.getResult();
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
-
- }
-
- @Test
- public void report() {
- HashMap param = jsonToInParameter("parameters/jobTest.json", "report", HashMap.class);
- BaseResult committed = jobController.commit(param);
- Assert.assertTrue(committed.getMessage(), committed.getStatus() == 201);
- String id = ((List<Map>) committed.getData()).get(0).get("job_id").toString();
- BaseResult result = jobController.savedQueryStatus(id);
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- BaseResult cancelled = jobController.cancelSavedQuery(id);
- Assert.assertTrue(cancelled.getMessage(), cancelled.getStatus() == 202);
-
- }
-
- @Test
- public void statistics() {
- HashMap param = jsonToInParameter("parameters/jobTest.json", "statistics_top", HashMap.class);
- BaseResult committed = jobController.commit(param);
- Assert.assertTrue(committed.getMessage(), committed.getStatus() == 201);
- String id = ((List<Map>) committed.getData()).get(0).get("job_id").toString();
- DeferredResult<BaseResult> baseResultDeferredResult = jobController.statisticsResult(id);
- if(baseResultDeferredResult.hasResult()){
- BaseResult result = (BaseResult) baseResultDeferredResult.getResult();
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
- }
-
-// @Test
-// public void getResultReport() {
-// BaseResult result = jobController.getResultReport(jobId);
-// Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
-// }
-
-}
diff --git a/src/test/java/com/mesalab/qgw/service/JsonSchemaValidatorTest.java b/src/test/java/com/mesalab/qgw/service/JsonSchemaValidatorTest.java
new file mode 100644
index 00000000..a4352c20
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/JsonSchemaValidatorTest.java
@@ -0,0 +1,86 @@
+package com.mesalab.qgw.service;
+
+
+import cn.hutool.core.io.resource.ClassPathResource;
+import cn.hutool.core.io.resource.Resource;
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.utils.JsonSchemaValidator;
+import com.mesalab.qgw.exception.QGWBusinessException;
+import org.apache.commons.io.IOUtils;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.test.context.TestPropertySource;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+
+@EnableAutoConfiguration
+@TestPropertySource("classpath:")
+public class JsonSchemaValidatorTest extends GalaxyQGWApplicationTests {
+ @Autowired
+ DatabaseService databaseService;
+
+ @Test
+ public void testJsonSchema() {
+ try {
+ JsonSchemaValidator jsonSchemaValidator = JsonSchemaValidator.getInstance();
+ Map<String, Object> schemaMap = databaseService.getSchemaInfo("fields", "session_record", false);
+ boolean isValidSuccess = jsonSchemaValidator
+ .addRule("schema-syntax-validation.json", "schema")
+ .validateSchema(com.alibaba.fastjson2.JSON.toJSONString(schemaMap));
+ Assert.assertTrue(isValidSuccess);
+ } catch (QGWBusinessException e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testInvalidJsonSchema() {
+ boolean isValidError = true;
+ try {
+ JsonSchemaValidator jsonSchemaValidator = JsonSchemaValidator.getInstance();
+ Resource resource = new ClassPathResource("examples/invalidSessionRecordTest.json");
+ String jsonStr = new String(IOUtils.toByteArray(resource.getStream()), StandardCharsets.UTF_8);
+ jsonSchemaValidator
+ .addRule("schema-syntax-validation.json", "schema")
+ .validateSchema(jsonStr);
+ } catch (Exception e) {
+ isValidError = false;
+ }
+ Assert.assertFalse(isValidError);
+ }
+
+ @Test
+ public void testDSLRequest() {
+ try {
+ JsonSchemaValidator jsonSchemaValidator = JsonSchemaValidator.getInstance();
+ Resource resource = new ClassPathResource("examples/validDSLRequestTest.json");
+ String jsonStr = new String(IOUtils.toByteArray(resource.getStream()), StandardCharsets.UTF_8);
+ boolean isValidSuccess = jsonSchemaValidator
+ .addRule("dsl-validation.json", "dsl")
+ .validateDSL(jsonStr);
+ Assert.assertTrue(isValidSuccess);
+ } catch (QGWBusinessException | IOException e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testInvalidDSLRequest() {
+ boolean isValidError = true;
+ try {
+ JsonSchemaValidator jsonSchemaValidator = JsonSchemaValidator.getInstance();
+ Resource resource = new ClassPathResource("examples/invalidDSLRequestTest.json");
+ String jsonStr = new String(IOUtils.toByteArray(resource.getStream()), StandardCharsets.UTF_8);
+ jsonSchemaValidator
+ .addRule("dsl-validation.json", "dsl")
+ .validateDSL(jsonStr);
+ } catch (Exception e) {
+ isValidError = false;
+ }
+ Assert.assertFalse(isValidError);
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/KnowledgeBaseTest.java b/src/test/java/com/mesalab/qgw/service/KnowledgeBaseTest.java
index 583f2e6f..2164e03b 100644
--- a/src/test/java/com/mesalab/qgw/service/KnowledgeBaseTest.java
+++ b/src/test/java/com/mesalab/qgw/service/KnowledgeBaseTest.java
@@ -2,10 +2,9 @@ package com.mesalab.qgw.service;
import com.mesalab.GalaxyQGWApplicationTests;
import com.mesalab.common.entity.BaseResult;
-import com.mesalab.services.common.entity.KnowledgeBase;
+import com.mesalab.services.common.entity.KnowledgeBaseRequest;
import com.mesalab.services.common.entity.KnowledgeConstant;
-import com.mesalab.services.service.KnowledgeBaseService;
-import org.apache.http.entity.ContentType;
+import com.mesalab.services.service.KBService;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,7 +14,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
-import java.util.Map;
/**
* @Author wxs
@@ -23,58 +21,53 @@ import java.util.Map;
*/
@EnableAutoConfiguration
public class KnowledgeBaseTest extends GalaxyQGWApplicationTests {
+
@Autowired
- private KnowledgeBaseService knowledgeService;
+ private KBService kbService;
+
- private String id;
@Test
public void query() {
- BaseResult result = knowledgeService.queryKnowledge();
+ BaseResult result = kbService.getList(null, null);
Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
}
@Test
public void cycle() throws Exception {
publish();
- update();
- toggle();
+ updateFile();
+ updateStatus();
delete();
+
}
private void publish() throws Exception {
- KnowledgeBase knowledgeBase = jsonToInParameter("parameters/knowledgeBase.json", "publishTest", KnowledgeBase.class);
- File file = new File(KnowledgeConstant.DAT + File.separator + KnowledgeConstant.IP_BUILTIN + KnowledgeConstant.MMDB);
+ KnowledgeBaseRequest knowledgeBase = jsonToInParameter("parameters/knowledgeBase.json", "publish", KnowledgeBaseRequest.class);
+ File file = new File(KnowledgeConstant.DAT + File.separator + KnowledgeConstant.ASN_BUILTIN + KnowledgeConstant.MMDB);
FileInputStream inputStream = new FileInputStream(file);
- MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
- ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
- BaseResult result = knowledgeService.publishKnowledge(multipartFile, knowledgeBase);
+ MultipartFile multipartFile = new MockMultipartFile(file.getName(), inputStream);
+ BaseResult result = kbService.publishKnowledge(multipartFile, knowledgeBase);
Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- id = ((Map) result.getData()).get("id").toString();
}
- private void update() throws Exception {
- File file = new File(KnowledgeConstant.DAT + File.separator + KnowledgeConstant.IP_BUILTIN + KnowledgeConstant.MMDB);
+ private void updateFile() throws Exception {
+ KnowledgeBaseRequest knowledgeBase = jsonToInParameter("parameters/knowledgeBase.json", "update", KnowledgeBaseRequest.class);
+ File file = new File(KnowledgeConstant.DAT + File.separator + KnowledgeConstant.ASN_BUILTIN + KnowledgeConstant.MMDB);
FileInputStream inputStream = new FileInputStream(file);
- MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
- ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
- KnowledgeBase knowledgeBase = new KnowledgeBase();
- knowledgeBase.setId(id);
- BaseResult result = knowledgeService.updateKnowledge(multipartFile, knowledgeBase);
+ MultipartFile multipartFile = new MockMultipartFile(file.getName(), inputStream);
+ BaseResult result = kbService.updateKnowledge(multipartFile, knowledgeBase);
Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
}
- private void toggle() throws Exception{
- KnowledgeBase knowledgeBase = new KnowledgeBase();
- knowledgeBase.setId(id);
- knowledgeBase.setIsValid(KnowledgeConstant.VALID);
- BaseResult result = knowledgeService.toggleKnowledge(knowledgeBase);
+ private void updateStatus() {
+ KnowledgeBaseRequest knowledgeBase = jsonToInParameter("parameters/knowledgeBase.json", "update_status", KnowledgeBaseRequest.class);
+ BaseResult result = kbService.updateStatus(knowledgeBase);
Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
}
- private void delete() throws Exception {
- KnowledgeBase knowledgeBase = new KnowledgeBase();
- knowledgeBase.setId(id);
- BaseResult result = knowledgeService.deleteKnowledge(id);
+ private void delete() {
+ KnowledgeBaseRequest knowledgeBase = jsonToInParameter("parameters/knowledgeBase.json", "delete", KnowledgeBaseRequest.class);
+ BaseResult result = kbService.deleteKnowledge(knowledgeBase);
Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
}
}
diff --git a/src/test/java/com/mesalab/qgw/service/MergeFunctionsHelperTest.java b/src/test/java/com/mesalab/qgw/service/MergeFunctionsHelperTest.java
new file mode 100644
index 00000000..02a6ff6a
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/MergeFunctionsHelperTest.java
@@ -0,0 +1,36 @@
+package com.mesalab.qgw.service;
+
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.utils.sqlparser.FunctionsMergeHelper;
+import net.sf.jsqlparser.JSQLParserException;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+/**
+ * TODO
+ *
+ * @Classname MergeFunctionsHelperTest
+ * @Date 2024/2/24 14:22
+ * @Author wWei
+ */
+@EnableAutoConfiguration
+public class MergeFunctionsHelperTest extends GalaxyQGWApplicationTests {
+ private static final Log log = LogFactory.get();
+
+ @Test
+ public void testPlainSelectSQL() throws JSQLParserException {
+ String originalSQL = "SELECT FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(column), 'PT5M', 'zero')) as a ,TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(column), 'PT5M', 'zero') as b ,TIME_FLOOR_WITH_FILL(long_column, 'PT5M', 'zero') as c, SUM(bytes) AS bytes FROM table GROUP BY FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(column), 'PT5M', 'zero')) ,TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(column), 'PT5M', 'zero'),TIME_FLOOR_WITH_FILL(long_column, 'PT5M', 'zero') order by FROM_UNIXTIME(TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(column), 'PT5M', 'zero')) asc ,TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(column), 'PT5M', 'zero') desc ,TIME_FLOOR_WITH_FILL(long_column, 'PT5M', 'zero') desc, bytes asc, a desc limit 1";
+ String build = FunctionsMergeHelper.build(originalSQL);
+ Assert.assertTrue(build.equals("SELECT TIME_FORMAT(TIME_FLOOR(column, 'PT5M'), 'yyyy-MM-dd HH:mm:ss') AS a, TIMESTAMP_TO_MILLIS(TIME_FLOOR(column, 'PT5M')) / 1000 AS b, TIMESTAMP_TO_MILLIS(TIME_FLOOR(MILLIS_TO_TIMESTAMP(long_column * 1000), 'PT5M')) / 1000 AS c, SUM(bytes) AS bytes FROM table GROUP BY TIME_FLOOR(column, 'PT5M'), TIME_FLOOR(column, 'PT5M'), TIME_FLOOR(MILLIS_TO_TIMESTAMP(long_column * 1000), 'PT5M') ORDER BY TIME_FLOOR(column, 'PT5M') ASC, TIME_FLOOR(column, 'PT5M') DESC, TIME_FLOOR(MILLIS_TO_TIMESTAMP(long_column * 1000), 'PT5M') DESC, bytes ASC, TIME_FLOOR(column, 'PT5M') DESC LIMIT 1"));
+ }
+
+ @Test
+ public void testNestedSQL() throws JSQLParserException {
+ String originalSQL = "SELECT FROM_UNIXTIME(TIME_FLOOR_WITH_FILL( stat_time, 'PT5S','zero' )) AS stat_time, SUM(bytes) AS bytes FROM ( SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time),'PT1S') AS stat_time, SUM(in_bytes + out_bytes) AS bytes FROM statistics_rule WHERE __time >= '2024-02-01 00:00:00' and __time < '2024-02-02 00:00:00' and rule_id = 301 GROUP BY TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time),'PT1S') ORDER BY TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(__time),'PT1S') ASC ) GROUP BY FROM_UNIXTIME(TIME_FLOOR_WITH_FILL( stat_time,'PT5S','zero' )) ORDER BY stat_time ASC, bytes DESC LIMIT 10";
+ String build = FunctionsMergeHelper.build(originalSQL);
+ Assert.assertTrue(build.equals("SELECT TIME_FORMAT(TIME_FLOOR(MILLIS_TO_TIMESTAMP(stat_time * 1000), 'PT5S'), 'yyyy-MM-dd HH:mm:ss') AS stat_time, SUM(bytes) AS bytes FROM (SELECT TIMESTAMP_TO_MILLIS(TIME_FLOOR(__time, 'PT1S')) / 1000 AS stat_time, SUM(in_bytes + out_bytes) AS bytes FROM statistics_rule WHERE __time >= '2024-02-01 00:00:00' AND __time < '2024-02-02 00:00:00' AND rule_id = 301 GROUP BY TIME_FLOOR(__time, 'PT1S') ORDER BY TIME_FLOOR(__time, 'PT1S') ASC) GROUP BY TIME_FLOOR(MILLIS_TO_TIMESTAMP(stat_time * 1000), 'PT5S') ORDER BY TIME_FLOOR(MILLIS_TO_TIMESTAMP(stat_time * 1000), 'PT5S') ASC, bytes DESC LIMIT 10"));
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/NetworkMonitorTest.java b/src/test/java/com/mesalab/qgw/service/NetworkMonitorTest.java
deleted file mode 100644
index e74a4f9d..00000000
--- a/src/test/java/com/mesalab/qgw/service/NetworkMonitorTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.mesalab.qgw.service;
-
-import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.entity.BaseResult;
-import com.mesalab.network.dsl.DSLObject;
-import com.mesalab.network.service.NetworkMonitorService;
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-
-/**
- * TODO
- *
- * @Classname NetworkMonitorTest
- * @Date 2022/12/7 09:45
- * @Author wWei
- */
-@EnableAutoConfiguration
-public class NetworkMonitorTest extends GalaxyQGWApplicationTests {
-
- @Autowired
- NetworkMonitorService networkMonitorService;
-
- @Test
- public void appDataSummary() {
- DSLObject dslObject = jsonToInParameter("parameters/networkMonitorTest.json", "appDataSummary", DSLObject.class);
- BaseResult result = networkMonitorService.buildAppData(dslObject);
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
-
- @Test
- public void internalIPDataSummary() {
- DSLObject dslObject = jsonToInParameter("parameters/networkMonitorTest.json", "internalIPDataSummary", DSLObject.class);
- BaseResult result = networkMonitorService.buildInternalIPData(dslObject);
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
-
- @Test
- public void appDataRateSummary() {
- DSLObject dslObject = jsonToInParameter("parameters/networkMonitorTest.json", "appDataRateSummary", DSLObject.class);
- BaseResult result = networkMonitorService.buildAppDataRate(dslObject);
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
-
- @Test
- public void appTrafficSummary() {
- DSLObject dslObject = jsonToInParameter("parameters/networkMonitorTest.json", "appTrafficSummary", DSLObject.class);
- BaseResult result = networkMonitorService.buildAppTraffic(dslObject);
- Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
- }
-}
diff --git a/src/test/java/com/mesalab/qgw/service/ProtocolTreeTest.java b/src/test/java/com/mesalab/qgw/service/ProtocolTreeTest.java
index 4121e9b5..76ed3ba8 100644
--- a/src/test/java/com/mesalab/qgw/service/ProtocolTreeTest.java
+++ b/src/test/java/com/mesalab/qgw/service/ProtocolTreeTest.java
@@ -6,7 +6,6 @@ import cn.hutool.log.LogFactory;
import com.alibaba.fastjson2.JSON;
import com.google.common.base.Stopwatch;
import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.network.service.NetworkMonitorService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -20,7 +19,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
public class ProtocolTreeTest extends GalaxyQGWApplicationTests {
private static final Log log = LogFactory.get();
@Autowired
- public NetworkMonitorService networkMonitorService;
+ public DSLService dslService;
private List<Map> getLiveChartsData(String fileName) {
File file = new File("benchmark" + File.separator + "live_traffic_chart" + File.separator + fileName);
@@ -32,7 +31,7 @@ public class ProtocolTreeTest extends GalaxyQGWApplicationTests {
@Test
public void test5MinuteTreeOutput() {
Stopwatch stopwatch = Stopwatch.createStarted();
- networkMonitorService.buildHierarchicalStructure(networkMonitorService.buildFlatStructure(getLiveChartsData("livecharts-5min.txt")));
+ dslService.buildHierarchicalStructure(dslService.buildFlatStructure(getLiveChartsData("livecharts-5min.txt")));
stopwatch.stop();
long millis = stopwatch.elapsed(MILLISECONDS);
log.info("time:{} ms", millis);
@@ -41,7 +40,7 @@ public class ProtocolTreeTest extends GalaxyQGWApplicationTests {
@Test
public void test10MinuteTreeOutput() {
Stopwatch stopwatch = Stopwatch.createStarted();
- networkMonitorService.buildHierarchicalStructure(networkMonitorService.buildFlatStructure(getLiveChartsData("livecharts-10min.txt")));
+ dslService.buildHierarchicalStructure(dslService.buildFlatStructure(getLiveChartsData("livecharts-10min.txt")));
stopwatch.stop();
long millis = stopwatch.elapsed(MILLISECONDS);
log.info("time:{} ms", millis);
@@ -49,7 +48,7 @@ public class ProtocolTreeTest extends GalaxyQGWApplicationTests {
@Test
public void test30MinuteTreeOutput() {
Stopwatch stopwatch = Stopwatch.createStarted();
- networkMonitorService.buildHierarchicalStructure(networkMonitorService.buildFlatStructure(getLiveChartsData("livecharts-30min.txt")));
+ dslService.buildHierarchicalStructure(dslService.buildFlatStructure(getLiveChartsData("livecharts-30min.txt")));
stopwatch.stop();
long millis = stopwatch.elapsed(MILLISECONDS);
log.info("time:{} ms", millis);
@@ -57,7 +56,7 @@ public class ProtocolTreeTest extends GalaxyQGWApplicationTests {
@Test
public void test1HourTreeOutput() {
Stopwatch stopwatch = Stopwatch.createStarted();
- networkMonitorService.buildHierarchicalStructure(networkMonitorService.buildFlatStructure(getLiveChartsData("livecharts-1h.txt")));
+ dslService.buildHierarchicalStructure(dslService.buildFlatStructure(getLiveChartsData("livecharts-1h.txt")));
stopwatch.stop();
long millis = stopwatch.elapsed(MILLISECONDS);
log.info("time:{} ms", millis);
diff --git a/src/test/java/com/mesalab/qgw/service/RecommendTest.java b/src/test/java/com/mesalab/qgw/service/RecommendTest.java
new file mode 100644
index 00000000..497e71e2
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/RecommendTest.java
@@ -0,0 +1,48 @@
+package com.mesalab.qgw.service;
+
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.entity.BaseResult;
+import com.mesalab.qgw.controller.QueryController;
+import com.mesalab.qgw.model.basic.DSLQueryRequestParam;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.web.context.request.async.DeferredResult;
+
+import java.util.Map;
+
+/**
+ * @Author ww
+ * @Date 2024/1/30
+ */
+@EnableAutoConfiguration
+public class RecommendTest extends GalaxyQGWApplicationTests {
+
+ @Autowired
+ private QueryController queryController;
+
+ @Test
+ public void testIpLearningFqdnRelateIp() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/recommendTest.json", "ip_learning_fqdn_relate_ip", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatusById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testIpLearningActiveIpOneshot() {
+ DSLQueryRequestParam body = jsonToInParameter("parameters/recommendTest.json", "ip_learning_active_ip", DSLQueryRequestParam.class);
+ BaseResult commitResult = queryController.createDSLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 200);
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/SQLAdHocTest.java b/src/test/java/com/mesalab/qgw/service/SQLAdHocTest.java
new file mode 100644
index 00000000..5f9083d9
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/SQLAdHocTest.java
@@ -0,0 +1,123 @@
+package com.mesalab.qgw.service;
+
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.entity.BaseResult;
+import com.mesalab.qgw.controller.QueryController;
+import com.mesalab.qgw.model.basic.SqlQueryRequestParam;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.web.context.request.async.DeferredResult;
+
+import java.util.Map;
+
+/**
+ * @Author ww
+ * @Date 2024/1/30
+ */
+@EnableAutoConfiguration
+public class SQLAdHocTest extends GalaxyQGWApplicationTests {
+
+ @Autowired
+ private QueryController queryController;
+
+ @Test
+ public void testQuerySqlDefault() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_default", SqlQueryRequestParam.class);
+ BaseResult commitResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatusById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testQuerySqlOneshot() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_oneshot", SqlQueryRequestParam.class);
+ BaseResult baseResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(baseResult.getMessage(), baseResult.getStatus() == 200);
+ }
+
+ @Test
+ public void testQuerySqlNormal() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_normal", SqlQueryRequestParam.class);
+ BaseResult commitResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobStatus(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testQuerySqlBlocking() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_blocking", SqlQueryRequestParam.class);
+ BaseResult commitResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResultById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testQuerySqlJson() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_json", SqlQueryRequestParam.class);
+ BaseResult commitResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResult(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testQuerySqlCsv() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_csv", SqlQueryRequestParam.class);
+ BaseResult commitResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+ DeferredResult<BaseResult> getResult = new DeferredResult<>();
+ while (true) {
+ if (getResult.isSetOrExpired()) {
+ break;
+ }
+ getResult = queryController.getJobResultById(id, 0);
+ }
+ BaseResult result = (BaseResult) getResult.getResult();
+ Assert.assertTrue(result.getMessage(), result.getStatus() == 200);
+ }
+
+ @Test
+ public void testQueryNoneSubQuery() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlAdHocTest.json", "query_sql_oneshot_error_trigger_sub_query", SqlQueryRequestParam.class);
+ BaseResult baseResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(baseResult.getMessage(), baseResult.getStatus() == 200);
+ }
+}
diff --git a/src/test/java/com/mesalab/qgw/service/SQLSavedTest.java b/src/test/java/com/mesalab/qgw/service/SQLSavedTest.java
new file mode 100644
index 00000000..c6048642
--- /dev/null
+++ b/src/test/java/com/mesalab/qgw/service/SQLSavedTest.java
@@ -0,0 +1,41 @@
+package com.mesalab.qgw.service;
+
+import com.mesalab.GalaxyQGWApplicationTests;
+import com.mesalab.common.entity.BaseResult;
+import com.mesalab.qgw.controller.QueryController;
+import com.mesalab.qgw.model.basic.SqlQueryRequestParam;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+import java.util.Map;
+
+/**
+ * @Author ww
+ * @Date 2024/1/30
+ */
+@EnableAutoConfiguration
+public class SQLSavedTest extends GalaxyQGWApplicationTests {
+
+ @Autowired
+ private QueryController queryController;
+ @Autowired
+ private QueryJobService queryJobService;
+
+ @Test
+ public void testWholeProcess() {
+ SqlQueryRequestParam body = jsonToInParameter("parameters/sqlSavedTest.json", "default", SqlQueryRequestParam.class);
+
+ BaseResult commitResult = queryController.createSQLQuery(body);
+ Assert.assertTrue(commitResult.getMessage(), commitResult.getStatus() == 201);
+ String id = ((Map<String, Object>) commitResult.getJob()).get("job_id").toString();
+
+ BaseResult statusResult = queryJobService.getSavedQueryStatusById(id);
+ Assert.assertTrue(statusResult.getMessage(), statusResult.getStatus() == 200);
+
+ BaseResult deletedResult = queryController.deleteJobById(id, 1);
+ Assert.assertTrue(deletedResult.getMessage(), deletedResult.getStatus() == 202);
+
+ }
+} \ No newline at end of file
diff --git a/src/test/java/com/mesalab/qgw/service/AvroSchemaDynamicTest.java b/src/test/java/com/mesalab/qgw/service/SchemaDynamicTest.java
index 274e9487..1c7fb876 100644
--- a/src/test/java/com/mesalab/qgw/service/AvroSchemaDynamicTest.java
+++ b/src/test/java/com/mesalab/qgw/service/SchemaDynamicTest.java
@@ -14,14 +14,14 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import static org.junit.Assert.assertEquals;
@EnableAutoConfiguration
-public class AvroSchemaDynamicTest extends GalaxyQGWApplicationTests {
+public class SchemaDynamicTest extends GalaxyQGWApplicationTests {
private static final Log log = LogFactory.get();
@Autowired
public DiagnosisService diagnosisService;
@Test
public void testValidateMetadata(){
- BaseResult baseResult = diagnosisService.validateMetadata();
- assertEquals("Validate metadata failure.", String.valueOf(baseResult.getStatus()), String.valueOf(HttpStatus.SC_OK));
+ BaseResult baseResult = diagnosisService.validateSchema();
+ assertEquals("Validate schema failure.", String.valueOf(baseResult.getStatus()), String.valueOf(HttpStatus.SC_OK));
}
diff --git a/src/test/java/com/mesalab/qgw/service/TopEntityTest.java b/src/test/java/com/mesalab/qgw/service/TopEntityTest.java
deleted file mode 100644
index 318cf863..00000000
--- a/src/test/java/com/mesalab/qgw/service/TopEntityTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.mesalab.qgw.service;
-
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.CharsetUtil;
-import cn.hutool.core.util.NumberUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.log.Log;
-import cn.hutool.log.LogFactory;
-import com.google.common.base.Stopwatch;
-import com.google.common.collect.Lists;
-import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.services.service.EntityService;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-
-@EnableAutoConfiguration
-public class TopEntityTest extends GalaxyQGWApplicationTests {
- private static final Log log = LogFactory.get();
-
- @Autowired
- EntityService entityService;
-
- private List<Map<String, Object>> getEntityData(String fileName) {
- File file = new File("benchmark" + File.separator + "entity_dataset" + File.separator + fileName);
- List<String> list = FileUtil.readLines(file, CharsetUtil.UTF_8);
- List<Map<String, Object>> data = Lists.newArrayList();
- for (String s : list) {
- String[] split = StrUtil.split(s, "\t");
- Map<String, Object> map = new HashMap<>(16);
- if (split.length >= 2) {
- map.put("sessions", NumberUtil.isLong(split[1]) ? split[1] : "0");
- }
- if (split.length >= 1) {
- map.put("ssl_sni", split[0]);
- data.add(map);
- }
- }
- return data;
- }
-
- @Test
- public void testCUCCSNIOutput() {
- Stopwatch stopwatch = Stopwatch.createStarted();
- entityService.mergeSNI(getEntityData("XJ-CUCC-SNI-Top200w.txt"));
- stopwatch.stop();
- long millis = stopwatch.elapsed(MILLISECONDS);
- log.info("time:{} ms", millis);
- }
-
- @Test
- public void testE21SNIOutput() {
- Stopwatch stopwatch = Stopwatch.createStarted();
- entityService.mergeSNI(getEntityData("E21-SNI-Top200w.txt"));
- stopwatch.stop();
- long millis = stopwatch.elapsed(MILLISECONDS);
- log.info("time:{} ms", millis);
- }
-
- @Test
- public void testE21SNI20221011Output() {
- Stopwatch stopwatch = Stopwatch.createStarted();
- entityService.mergeSNI(getEntityData("E21-SNI-Top3W-20221011.txt"));
- stopwatch.stop();
- long millis = stopwatch.elapsed(MILLISECONDS);
- log.info("time:{} ms", millis);
- }
-
- @Test
- public void testE21SNI20221020Output() {
- Stopwatch stopwatch = Stopwatch.createStarted();
- entityService.mergeSNI(getEntityData("E21-SNI-Top120W-20221020.txt"));
- stopwatch.stop();
- long millis = stopwatch.elapsed(MILLISECONDS);
- log.info("time:{} ms", millis);
- }
-
-
-
-}
diff --git a/src/test/java/com/mesalab/qgw/service/UnstructuredTest.java b/src/test/java/com/mesalab/qgw/service/UnstructuredTest.java
deleted file mode 100644
index 4285bc5a..00000000
--- a/src/test/java/com/mesalab/qgw/service/UnstructuredTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.mesalab.qgw.service;
-
-import com.mesalab.GalaxyQGWApplicationTests;
-import com.mesalab.common.entity.BaseResult;
-import com.mesalab.services.common.dsl.ComDSLObject;
-import com.mesalab.services.service.UnstructuredService;
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-
-@EnableAutoConfiguration
-public class UnstructuredTest extends GalaxyQGWApplicationTests {
- @Autowired
- UnstructuredService unstructuredService;
-
- @Test
- public void allFilePath(){
- ComDSLObject dslObject = jsonToInParameter("parameters/unstructuredTest.json", "all", ComDSLObject.class);
- BaseResult UnstructuredData = unstructuredService.getUnstructuredData("all", dslObject);
- Assert.assertTrue(UnstructuredData.getMessage(), UnstructuredData.getStatus() == 200);
- }
-
- @Test
- public void mailFilePath(){
- ComDSLObject dslObject = jsonToInParameter("parameters/unstructuredTest.json", "mail", ComDSLObject.class);
- BaseResult UnstructuredData = unstructuredService.getUnstructuredData("mail", dslObject);
- Assert.assertTrue(UnstructuredData.getMessage(), UnstructuredData.getStatus() == 200);
- }
-
- @Test
- public void pcapFilePath(){
- ComDSLObject dslObject = jsonToInParameter("parameters/unstructuredTest.json", "pcap", ComDSLObject.class);
- BaseResult UnstructuredData = unstructuredService.getUnstructuredData("pcap", dslObject);
- Assert.assertTrue(UnstructuredData.getMessage(), UnstructuredData.getStatus() == 200);
- }
-
- @Test
- public void httpFilePath(){
- ComDSLObject dslObject = jsonToInParameter("parameters/unstructuredTest.json", "http", ComDSLObject.class);
- BaseResult UnstructuredData = unstructuredService.getUnstructuredData("http", dslObject);
- Assert.assertTrue(UnstructuredData.getMessage(), UnstructuredData.getStatus() == 200);
- }
-}