diff --git a/24.05/tsg_olap_e2e_test/README.md b/24.05/tsg_olap_e2e_test/README.md
new file mode 100644
index 0000000..56cfe94
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/README.md
@@ -0,0 +1,105 @@
+# TSG OLAP End-to-End Test
+
+## 概述
+
+TSG OLAP的数据摄入分为三种类型:Logs、Metrics 和 File Chunks。为确保能够正确处理并写入相应存储系统,需要支持端到端业务自检。
+
+
+## 环境依赖
+
+- Logs和Metric生成工具 `kafka-operation.sh` ,详细参考[帮助文档](https://docs.geedge.net/pages/viewpage.action?pageId=8029767)
+- File Chunks生成工具 `file-chunk-generator.jar`
+- 安装`Newman`,详细参考[帮助文档](https://learning.postman.com/docs/collections/using-newman-cli/newman-options/)
+
+## 使用方法
+
+### 配置QGW API
+
+- 修改 `enviroment.json`,配置QGW的IP地址和端口 (首次安装)
+```json
+ {
+ "key": "qgw_ip",
+ "value": "192.168.44.30",
+ "type": "default",
+ "enabled": true
+},
+{
+ "key": "qgw_port",
+ "value": "9999",
+ "type": "default",
+ "enabled": true
+}
+```
+### 配置File Chunks 生成工具
+
+- 修改`config.properties`, 增加Kafka Topic名称和连接地址
+```props
+kafka.server=192.168.41.29:9092
+kafka.topic=TRAFFIC-FILE-STREAM-RECORD
+```
+
+### 写入测试集至Kafka
+- Logs
+```shell
+cd tsg_olap_e2e_test/
+
+kafka-operation.sh producer SESSION-RECORD < ./datasets/logs/session_record.dat
+
+kafka-operation.sh producer VOIP-RECORD < ./datasets/logs/voip_record.dat
+
+kafka-operation.sh producer PROXY-EVENT < ./datasets/logs/proxy_event.dat
+```
+- Metrics
+
+```shell
+cd tsg_olap_e2e_test/
+
+kafka-operation.sh producer NETWORK-TRAFFIC-METRIC < ./datasets/metrics/network_traffic_metric.dat
+
+kafka-operation.sh producer POLICY-RULE-METRIC < ./datasets/metrics/policy_rule_metric.dat
+
+kafka-operation.sh producer OBJECT-STATISTICS-METRIC < ./datasets/metrics/object_statistics_metric.dat
+
+kafka-operation.sh producer STATISTICS-RULE-METRIC < ./datasets/metrics/statistics_rule_metric.dat
+```
+
+- Files(与日志路径对应)
+
+```shell
+cd file-chunk-generator/
+
+java -jar file-chunk-generator.jar -n 123e4567-e89b-12d3-a456-426614174001 --file_type pcapng
+
+java -jar file-chunk-generator.jar -n 123e4567-e89b-12d3-a456-426614174002 --file_type html
+
+java -jar file-chunk-generator.jar -n 123e4567-e89b-12d3-a456-426614174003 --file_type html
+
+java -jar file-chunk-generator.jar -n 123e4567-e89b-12d3-a456-426614174004 --file_type eml
+
+java -jar file-chunk-generator.jar -n 123e4567-e89b-12d3-a456-426614174005 --file_type pcapng
+
+```
+
+### 输出故障诊断报告(等待3-5分钟)
+
+```shell
+# -n 执行次数 --folder 测试目录,logs,metrics,files;不指定将对所有模块进行自检
+# Logs进行故障诊断,输出诊断明细
+newman run ./collection.json -n 1 -e ./environment.json --delay-request 500 --timeout-script 10000 --timeout-request 300000 --timeout 3600000 --insecure --verbose --ignore-redirects --folder logs
+
+#Logs进行故障诊断,通过表情形式输出测试结果
+newman run ./collection.json -n 1 --delay-request 500 -e ./environment.json --ignore-redirects --folder logs -r emojitrain
+
+#Logs进行故障诊断,输出报告json格式,自动存储newman目录
+newman run ./collection.json -n 1 --delay-request 500 -e ./environment.json --ignore-redirects --folder logs -r cli,json
+
+#清除测试数据(暂支持文件删除)
+newman run ./collection.json -n 1 --delay-request 500 -e ./environment.json --ignore-redirects --folder clear_test_data -r emojitrain
+
+
+```
+
+
+
+
+
diff --git a/24.05/tsg_olap_e2e_test/collection.json b/24.05/tsg_olap_e2e_test/collection.json
new file mode 100644
index 0000000..8730f2b
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/collection.json
@@ -0,0 +1,1409 @@
+{
+ "info": {
+ "_postman_id": "8d632c51-8d7b-426a-ae7d-baaf5d41dca3",
+ "name": "tsg-olap-e2e-test",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
+ "_exporter_id": "8105037"
+ },
+ "item": [
+ {
+ "name": "logs",
+ "item": [
+ {
+ "name": "proxy_event_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from proxy_event where vsys_id=1024 and recv_time >={{Last 10 Minutes Start}} group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "voip_record_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from voip_record where vsys_id=1024 and decoded_as='VoIP' and recv_time >={{Last 10 Minutes Start}} group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "monitor_event_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(7);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from monitor_event where vsys_id=1024 and recv_time >={{Last 10 Minutes Start}} group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\":\"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "security_event_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(7);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from security_event where vsys_id=1024 and recv_time >={{Last 10 Minutes Start}} group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\":\"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "session_record_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(7);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from session_record where vsys_id=1024 and recv_time >={{Last 10 Minutes Start}} group by data_center order by cnt asc\",\n \"output_mode\":\"json\",\n \"exec_mode\":\"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+ },
+ {
+ "name": "metrics",
+ "item": [
+ {
+ "name": "traffic_general_stat_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from traffic_general_stat where __time = {{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "application_protocol_stat_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from application_protocol_stat where __time = {{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "statistics_rule_hits_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center,count(*) as cnt from statistics_rule_hits where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "security_rule_hits_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "followOriginalHttpMethod": false,
+ "followRedirects": false
+ },
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from security_rule_hits where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "monitor_rule_hits_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from monitor_rule_hits where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "proxy_rule_hits_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center,count(*) as cnt from proxy_rule_hits where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "service_chaining_rule_hits_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from service_chaining_rule_hits where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "object_statistics_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from object_statistics where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "statistics_rule_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(Number(responseJson.data[0].cnt)).to.at.least(1);",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"statement\" : \"select data_center, count(*) as cnt from statistics_rule where __time ={{metric_fixed_time}} and vsys_id=1024 group by data_center order by cnt asc\" ,\n \"output_mode\":\"json\",\n \"exec_mode\": \"oneshot\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/query/sql",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "query",
+ "sql"
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+ },
+ {
+ "name": "files",
+ "item": [
+ {
+ "name": "monitor_packet_capture_file_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "HEAD",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{hos_ip}}:{{hos_port}}/hos/traffic_file_bucket/123e4567-e89b-12d3-a456-426614174001",
+ "protocol": "http",
+ "host": [
+ "{{hos_ip}}"
+ ],
+ "port": "{{hos_port}}",
+ "path": [
+ "hos",
+ "traffic_file_bucket",
+ "123e4567-e89b-12d3-a456-426614174001"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "http_request_body_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "HEAD",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{hos_ip}}:{{hos_port}}/hos/traffic_file_bucket/123e4567-e89b-12d3-a456-426614174002",
+ "protocol": "http",
+ "host": [
+ "{{hos_ip}}"
+ ],
+ "port": "{{hos_port}}",
+ "path": [
+ "hos",
+ "traffic_file_bucket",
+ "123e4567-e89b-12d3-a456-426614174002"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "http_response_body_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "HEAD",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{hos_ip}}:{{hos_port}}/hos/traffic_file_bucket/123e4567-e89b-12d3-a456-426614174003",
+ "protocol": "http",
+ "host": [
+ "{{hos_ip}}"
+ ],
+ "port": "{{hos_port}}",
+ "path": [
+ "hos",
+ "traffic_file_bucket",
+ "123e4567-e89b-12d3-a456-426614174003"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "mail_eml_file_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "HEAD",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{hos_ip}}:{{hos_port}}/hos/traffic_file_bucket/123e4567-e89b-12d3-a456-426614174004",
+ "protocol": "http",
+ "host": [
+ "{{hos_ip}}"
+ ],
+ "port": "{{hos_port}}",
+ "path": [
+ "hos",
+ "traffic_file_bucket",
+ "123e4567-e89b-12d3-a456-426614174004"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "rtp_pcap_path_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "HEAD",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{hos_ip}}:{{hos_port}}/hos/traffic_file_bucket/123e4567-e89b-12d3-a456-426614174005",
+ "protocol": "http",
+ "host": [
+ "{{hos_ip}}"
+ ],
+ "port": "{{hos_port}}",
+ "path": [
+ "hos",
+ "traffic_file_bucket",
+ "123e4567-e89b-12d3-a456-426614174005"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "trouble_shooting_pcap_capture_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ " const responseJson = pm.response.json();",
+ " pm.expect(responseJson.data[0].fileName).to.be.not.null;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/hos/troubleshooting_file_bucket/123e4567-e89b-12d3-a456-426614174006",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "hos",
+ "troubleshooting_file_bucket",
+ "123e4567-e89b-12d3-a456-426614174006"
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+ },
+ {
+ "name": "clear_test_data",
+ "item": [
+ {
+ "name": "delete_traffic_files_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "token",
+ "value": "{{hos_token}}",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "\n true\n \n \n \n \n \n",
+ "options": {
+ "raw": {
+ "language": "xml"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{hos_ip}}:{{hos_port}}/hos/traffic_file_bucket?delete",
+ "protocol": "http",
+ "host": [
+ "{{hos_ip}}"
+ ],
+ "port": "{{hos_port}}",
+ "path": [
+ "hos",
+ "traffic_file_bucket"
+ ],
+ "query": [
+ {
+ "key": "delete",
+ "value": null
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "delete_troubleshooting_pcap_files_test",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"Status code is 200\", function () {",
+ " pm.response.to.not.be.error;",
+ " pm.response.to.be.json;",
+ "});",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ ""
+ ],
+ "type": "text/javascript",
+ "packages": {}
+ }
+ }
+ ],
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/x-www-form-urlencoded",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "urlencoded",
+ "urlencoded": []
+ },
+ "url": {
+ "raw": "http://{{qgw_ip}}:{{qgw_port}}/v1/hos/traffic_file_bucket?file_names=123e4567-e89b-12d3-a456-426614174006",
+ "protocol": "http",
+ "host": [
+ "{{qgw_ip}}"
+ ],
+ "port": "{{qgw_port}}",
+ "path": [
+ "v1",
+ "hos",
+ "traffic_file_bucket"
+ ],
+ "query": [
+ {
+ "key": "file_names",
+ "value": "123e4567-e89b-12d3-a456-426614174006"
+ }
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/24.05/tsg_olap_e2e_test/datasets/logs/proxy_event.dat b/24.05/tsg_olap_e2e_test/datasets/logs/proxy_event.dat
new file mode 100644
index 0000000..c487511
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/logs/proxy_event.dat
@@ -0,0 +1 @@
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240001,"decoded_as":"HTTP","ip_protocol":"tcp","address_type":4,"client_ip":"10.0.0.1","server_ip":"192.0.2.1","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.TCP.HTTP","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"http_version":"http1","http_request_line":"GET www.google.com/ HTTP/1.1","http_response_line":"HTTP/1.1 200 OK","http_status_code":200,"http_url":"www.google.com/","http_host":"www.google.com","http_cookie":"NID=513","http_user_agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; WOW64; Trident/5.0)","http_response_content_type":"text/html; charset=UTF-8","proxy_rule_list":[4450],"proxy_action":"insert","http_action_file_size":35}
diff --git a/24.05/tsg_olap_e2e_test/datasets/logs/session_record.dat b/24.05/tsg_olap_e2e_test/datasets/logs/session_record.dat
new file mode 100644
index 0000000..1821406
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/logs/session_record.dat
@@ -0,0 +1,12 @@
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240001,"decoded_as":"BASE","ip_protocol":"tcp","address_type":4,"client_ip":"10.0.0.1","server_ip":"192.0.2.1","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.TCP","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]"}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240002,"decoded_as":"HTTP","ip_protocol":"tcp","address_type":4,"client_ip":"10.0.0.2","server_ip":"192.0.2.2","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.TCP.HTTP","server_fqdn":"static-pcs-sdk-server.test.com","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","packet_capture_file":"123e4567-e89b-12d3-a456-426614174001","http_request_body":"123e4567-e89b-12d3-a456-426614174002","http_response_body":"123e4567-e89b-12d3-a456-426614174003","http_version":"http1","http_request_line":"POST /a HTTP/1.1","http_user_agent":"WinHttpClient","http_request_content_length":0,"http_host":"static-pcs-sdk-server.test.com","http_url":"static-pcs-sdk-server.test.com/a","http_status_code":200,"http_response_line":"HTTP/1.1 200 OK","http_response_content_type":"application/json;charset=UTF-8","http_response_content_length":0,"http_response_latency_ms":0,"http_session_duration_ms":0,"http_sequence":1}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240003,"decoded_as":"SSL","ip_protocol":"tcp","address_type":4,"client_ip":"10.0.0.3","server_ip":"192.0.2.3","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.TCP.ssl","server_fqdn":"storeedgefd.dsx.mp.microsoft.com","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","ssl_ja3_hash":"","ssl_esni_flag":0,"ssl_ech_flag":0,"ssl_sni":"storeedgefd.dsx.mp.microsoft.com","ssl_ja3s_hash":"","ssl_version":"v3","ssl_cn":"sfdataservice.microsoft.com","ssl_cert_issuer":"","ssl_cert_subject":"","ssl_san":"","ssl_handshake_latency_ms":0}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240004,"decoded_as":"DNS","ip_protocol":"udp","address_type":4,"client_ip":"10.0.0.4","server_ip":"192.0.2.4","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.UDP.dns","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","dns_response_latency_ms":0,"dns_qr":1,"dns_aa":0,"dns_message_id":47610,"dns_opcode":0,"dns_ra":1,"dns_rcode":0,"dns_rd":1,"dns_tc":0,"dns_qdcount":1,"dns_ancount":1,"dns_nscount":6,"dns_arcount":13,"dns_qname":"","dns_qtype":1,"dns_qclass":1}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240005,"decoded_as":"QUIC","ip_protocol":"udp","address_type":4,"client_ip":"10.0.0.5","server_ip":"192.0.2.5","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.UDP.quic","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","quic_version":"IETF QUIC RFC9000"}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240006,"decoded_as":"MAIL","ip_protocol":"tcp","address_type":4,"client_ip":"10.0.0.6","server_ip":"192.0.2.6","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.TCP.mail.imap","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","mail_protocol_type":"IMAP","mail_eml_file":"123e4567-e89b-12d3-a456-426614174004"}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240007,"decoded_as":"SSH","ip_protocol":"tcp","address_type":4,"client_ip":"10.0.0.7","server_ip":"192.0.2.7","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.TCP.ssh","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":0,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","ssh_server_version":"SSH-2.0-OpenSSH_7.4","ssh_client_version":"SSH-2.0-OpenSSH_9.0","ssh_version":2,"ssh_hassh":"0","ssh_kex_alg":"curve25519-sha256","ssh_host_key_alg":"ssh-ed25519","ssh_cipher_alg":"chacha20-poly1305@openssh.com","ssh_mac_alg":"umac-64-etm@openssh.com","ssh_compression_alg":"none","ssh_host_key":"0"}
+
+
+
+
+
diff --git a/24.05/tsg_olap_e2e_test/datasets/logs/voip_record.dat b/24.05/tsg_olap_e2e_test/datasets/logs/voip_record.dat
new file mode 100644
index 0000000..72b9aba
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/logs/voip_record.dat
@@ -0,0 +1,4 @@
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240001,"decoded_as":"RTP","ip_protocol":"udp","address_type":4,"client_ip":"192.168.64.8","server_ip":"192.168.39.62","client_port":25524,"server_port":4580,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.UDP.rtp","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":57620,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","rtp_pcap_path":"123e4567-e89b-12d3-a456-426614174005"}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240002,"decoded_as":"SIP","ip_protocol":"udp","address_type":4,"client_ip":"10.0.0.1","server_ip":"192.0.2.1","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.UDP.sip","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":24584,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","sip_call_id":"NGMxZWY3Y2NmMzNlNGE3NzJhODgyZDAwM2YyMzQ4NGI.","sip_originator_description":"\"lina\";tag=1837055d","sip_responder_description":"\"1075\"","sip_originator_sdp_connect_ip":"192.168.64.8","sip_originator_sdp_media_port":25524,"sip_originator_sdp_media_type":"application/sdp","sip_server":"OpenSIPS (2.4.11 (x86_64/linux))","sip_responder_sdp_connect_ip":"192.168.39.62","sip_responder_sdp_media_port":4580,"sip_responder_sdp_media_type":"application/sdp","sip_duration_s":590,"sip_bye":"responder","sip_cseq":"2 BYE","sip_via":"SIP/2.0/UDP 192.0.2.1:5060;branch=z9hG4bKbe7c.392190f1.0","sip_user_agent":"eyeBeam release 1011d stamp 40820","sip_is_request":0}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240003,"decoded_as":"RTP","ip_protocol":"udp","address_type":4,"client_ip":"192.168.164.18","server_ip":"192.168.39.162","client_port":65121,"server_port":4670,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.UDP.rtp","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":57620,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","rtp_pcap_path":"123e4567-e89b-12d3-a456-426614174005"}
+{"__timestamp":946681200,"__inputid":"tsg_olap","session_id":10240004,"decoded_as":"SIP","ip_protocol":"udp","address_type":4,"client_ip":"10.0.0.2","server_ip":"192.0.2.2","client_port":1000,"server_port":60000,"t_vsys_id":0,"vsys_id":1024,"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","sled_ip":"127.0.0.1","app":"unknown","app_transition":"","client_geolocation":"unknown","server_geolocation":"unknown","decoded_path":"ETHERNET.IPv4.UDP.sip","server_fqdn":"","out_src_mac":"00:1A:2B:3C:4D:5E","out_dest_mac":"5E:4D:3C:2B:1A:00","start_timestamp_ms":946681200000,"end_timestamp_ms":946681200000,"tcp_rtt_ms":0,"tcp_client_isn":0,"tcp_server_isn":0,"tcp_handshake_latency_ms":0,"in_link_id":0,"out_link_id":0,"duration_ms":0,"sent_pkts":0,"sent_bytes":0,"received_pkts":0,"received_bytes":0,"tcp_c2s_ip_fragments":0,"tcp_s2c_ip_fragments":0,"tcp_c2s_rtx_pkts":0,"tcp_c2s_rtx_bytes":0,"tcp_s2c_rtx_pkts":0,"tcp_s2c_rtx_bytes":0,"tcp_c2s_o3_pkts":0,"tcp_s2c_o3_pkts":0,"tcp_c2s_lost_bytes":0,"tcp_s2c_lost_bytes":0,"flags":24584,"flags_identify_info":[1,1],"fqdn_category_list":[0],"monitor_rule_list":[0],"security_rule_list":[0],"sc_rule_list":[0],"shaping_rule_list":[0],"proxy_rule_list":[0],"statistics_rule_list":[0],"monitor_mirrored_pkts":0,"monitor_mirrored_bytes":0,"client_os_desc":"Windows","server_os_desc":"Linux","device_tag":"{\"tags\":[{\"tag\":\"data_center\",\"value\":\"tsg_olap\"},{\"tag\":\"device_group\",\"value\":\"tsg_olap\"}]}","dup_traffic_flag":0,"sc_rsp_raw":[0],"encapsulation":"[{\"tunnels_schema_type\":\"ETHERNET\",\"source_mac\":\"00:1A:2B:3C:4D:5E\",\"destination_mac\":\"5E:4D:3C:2B:1A:00\"}]","sip_call_id":"IUMxZWY3Y2NmMzNlNGE3NzJhODgyZDAwM2YyMzQ4NGI.","sip_originator_description":"\"lina\";tag=1837055d","sip_responder_description":"\"1075\"","sip_originator_sdp_connect_ip":"192.68.64.8","sip_originator_sdp_media_port":25524,"sip_originator_sdp_media_type":"application/sdp","sip_server":"OpenSIPS (2.4.11 (x86_64/linux))","sip_responder_sdp_connect_ip":"192.18.39.62","sip_responder_sdp_media_port":4580,"sip_responder_sdp_media_type":"application/sdp","sip_duration_s":590,"sip_bye":"responder","sip_cseq":"2 BYE","sip_via":"SIP/2.0/UDP 192.0.2.1:5060;branch=z9hG4bKbe7c.392190f1.0","sip_user_agent":"eyeBeam release 1011d stamp 40820","sip_is_request":0}
diff --git a/24.05/tsg_olap_e2e_test/datasets/metrics/network_traffic_metric.dat b/24.05/tsg_olap_e2e_test/datasets/metrics/network_traffic_metric.dat
new file mode 100644
index 0000000..2b1a500
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/metrics/network_traffic_metric.dat
@@ -0,0 +1,3 @@
+{"fields":{"sessions":0,"in_bytes":0,"out_bytes":0,"in_pkts":0,"out_pkts":0,"c2s_pkts":0,"s2c_pkts":0,"c2s_bytes":0,"s2c_bytes":0,"c2s_fragments":0,"s2c_fragments":0,"c2s_tcp_lost_bytes":0,"s2c_tcp_lost_bytes":0,"c2s_tcp_ooorder_pkts":0,"s2c_tcp_ooorder_pkts":0,"c2s_tcp_retransmitted_pkts":0,"s2c_tcp_retransmitted_pkts":0,"c2s_tcp_retransmitted_bytes":0,"s2c_tcp_retransmitted_bytes":0},"name":"traffic_application_protocol_stat","tags":{"decoded_path":"ETHERNET.IPv4.TCP.ssl","app":"ssl","data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap"},"timestamp_ms":946681200000}
+{"fields":{"c2s_bytes":0,"c2s_fragments":0,"c2s_pkts":0,"c2s_tcp_lost_bytes":0,"c2s_tcp_ooorder_pkts":0,"c2s_tcp_retransmitted_bytes":0,"c2s_tcp_retransmitted_pkts":0,"in_bytes":0,"in_pkts":0,"out_bytes":0,"out_pkts":0,"s2c_bytes":0,"s2c_fragments":0,"s2c_pkts":0,"s2c_tcp_lost_bytes":0,"s2c_tcp_ooorder_pkts":0,"s2c_tcp_retransmitted_bytes":0,"s2c_tcp_retransmitted_pkts":0,"sessions":0},"name":"application_protocol_stat","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","protocol_stack_id":"","vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap"},"timestamp_ms":946681200000}
+{"name":"traffic_general_stat","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","vsys_id":1024},"fields":{"sessions":0,"active_sessions":0,"closed_sessions":0,"in_bytes":0,"out_bytes":0,"in_pkts":0,"out_pkts":0,"asymmetric_c2s_flows":0,"asymmetric_s2c_flows":0,"tcp_syn_pkts":0,"tcp_ack_pkts":0,"tcp_fin_pkts":0,"tcp_rst_pkts":0,"__timestamp":946681200,"__inputid":"tsg_olap"},"timestamp_ms":946681200000}
diff --git a/24.05/tsg_olap_e2e_test/datasets/metrics/object_statistics_metric.dat b/24.05/tsg_olap_e2e_test/datasets/metrics/object_statistics_metric.dat
new file mode 100644
index 0000000..fb57b91
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/metrics/object_statistics_metric.dat
@@ -0,0 +1 @@
+{"name":"object_statistics","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","action":0,"vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap","object_type":"application","object_id":0,"chart_id":0,"version":1,"template_id":0},"fields":{"in_bytes":0,"out_bytes":0,"bytes":0},"timestamp_ms":946681200000}
diff --git a/24.05/tsg_olap_e2e_test/datasets/metrics/policy_rule_metric.dat b/24.05/tsg_olap_e2e_test/datasets/metrics/policy_rule_metric.dat
new file mode 100644
index 0000000..e3286e5
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/metrics/policy_rule_metric.dat
@@ -0,0 +1,6 @@
+{"fields":{"recv_bytes":0,"recv_pkts":0,"sent_bytes":0,"sent_pkts":0},"name":"service_chaining_rule_hits","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","rule_id":"-1","sf_profile_id":"-1","sff_profile_id":"-1","vsys_id":"1024","__timestamp":946681200,"__inputid":"tsg_olap"},"timestamp_ms":946681200000}
+{"name":"monitor_rule_hits","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","rule_id":"-1","action":0,"vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap"},"fields":{"hit_count":0,"in_bytes":0,"out_bytes":0,"in_pkts":0,"out_pkts":0},"timestamp_ms":946681200000}
+{"name":"statistics_rule_hits","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","rule_id":"-1","action":0,"vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap"},"fields":{"hit_count":0,"in_bytes":0,"out_bytes":0,"in_pkts":0,"out_pkts":0},"timestamp_ms":946681200000}
+{"name":"security_rule_hits","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","rule_id":"-1","action":0,"vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap"},"fields":{"hit_count":0,"in_bytes":0,"out_bytes":0,"in_pkts":0,"out_pkts":0},"timestamp_ms":946681200000}
+{"fields":{"hit_count":1,"in_bytes":0,"in_pkts":0,"out_bytes":603,"out_pkts":1},"name":"proxy_rule_hits","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","rule_id":"-1","action":0,"sub_action":"","vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap","pinning_status":0},"timestamp_ms":946681200000}
+
diff --git a/24.05/tsg_olap_e2e_test/datasets/metrics/statistics_rule_metric.dat b/24.05/tsg_olap_e2e_test/datasets/metrics/statistics_rule_metric.dat
new file mode 100644
index 0000000..81aee11
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/datasets/metrics/statistics_rule_metric.dat
@@ -0,0 +1 @@
+{"name":"statistics_rule","tags":{"data_center":"tsg_olap","device_group":"tsg_olap","device_id":"0000000000000000","rule_id":"-1","action":0,"vsys_id":1024,"__timestamp":946681200,"__inputid":"tsg_olap","chart_id":0,"version":1,"template_id":0},"fields":{"in_bytes":0,"out_bytes":0},"timestamp_ms":946681200000}
diff --git a/24.05/tsg_olap_e2e_test/environment.json b/24.05/tsg_olap_e2e_test/environment.json
new file mode 100644
index 0000000..4255a8f
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/environment.json
@@ -0,0 +1,51 @@
+{
+ "id": "a42e7855-52e8-49e6-9a35-a6af2130f899",
+ "name": "tsg_olap_e2e_test",
+ "values": [
+ {
+ "key": "qgw_ip",
+ "value": "192.168.44.30",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "qgw_port",
+ "value": "9999",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "hos_ip",
+ "value": "192.168.44.30",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "hos_port",
+ "value": "9098",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "hos_token",
+ "value": "fea0ee76be8147bd9b53ad995b7ef603",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "Last 10 Minutes Start",
+ "value": "FROM_UNIXTIME(UNIX_TIMESTAMP(now())-600)",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "metric_fixed_time",
+ "value": "FROM_UNIXTIME(946681200)",
+ "type": "default",
+ "enabled": true
+ }
+ ],
+ "_postman_variable_scope": "environment",
+ "_postman_exported_at": "2024-04-23T09:59:24.045Z",
+ "_postman_exported_using": "Postman/10.24.22"
+}
\ No newline at end of file
diff --git a/24.05/tsg_olap_e2e_test/file-chunk-generator/config.properties b/24.05/tsg_olap_e2e_test/file-chunk-generator/config.properties
new file mode 100644
index 0000000..e973053
--- /dev/null
+++ b/24.05/tsg_olap_e2e_test/file-chunk-generator/config.properties
@@ -0,0 +1,6 @@
+#####9092-Plaintext 9094-SASL
+kafka.server=192.168.44.11:9092
+kafka.topic=TRAFFIC-FILE-STREAM-RECORD
+#####kafka SASL username/password
+#kafka.user=admin
+#kafka.pin=galaxy2019
diff --git a/24.05/tsg_olap_e2e_test/file-chunk-generator/file-chunk-generator.jar b/24.05/tsg_olap_e2e_test/file-chunk-generator/file-chunk-generator.jar
new file mode 100755
index 0000000..b4244f6
Binary files /dev/null and b/24.05/tsg_olap_e2e_test/file-chunk-generator/file-chunk-generator.jar differ
diff --git a/24.05/tsg_olap_e2e_test/images/e2e-test-flow-figure.png b/24.05/tsg_olap_e2e_test/images/e2e-test-flow-figure.png
new file mode 100644
index 0000000..add9104
Binary files /dev/null and b/24.05/tsg_olap_e2e_test/images/e2e-test-flow-figure.png differ