diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..2959ffc
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,47 @@
+image: 192.168.40.153:9080/common/maven:3.8.1-openjdk-11-slim-with-git
+
+variables:
+ MAVEN_CLI_OPTS: "--batch-mode --errors --show-version"
+
+stages:
+ - check
+ - test
+ - build
+
+snapshot-version:
+ stage: check
+ script:
+ - mvn $MAVEN_CLI_OPTS enforcer:enforce@snapshot-version-check
+ rules:
+ - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" && $CI_PIPELINE_SOURCE == "merge_request_event"
+
+non-snapshot-version:
+ stage: check
+ script:
+ - mvn $MAVEN_CLI_OPTS enforcer:enforce@release-version-check
+ - |-
+ if `mvn $MAVEN_CLI_OPTS dependency:get@release-deploy-check > /dev/null 2>&1`; then
+ echo "The current version has been deployed."
+ exit 1
+ else
+ echo "The current version has not been deployed."
+ fi
+ rules:
+ - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /(^master$|^release\/)/ && $CI_PIPELINE_SOURCE == "merge_request_event"
+
+test:
+ stage: test
+ script:
+ - mvn $MAVEN_CLI_OPTS clean test
+ only:
+ - merge_requests
+
+# Used for building snapshot versions on the develop branch.
+build:
+ stage: build
+ script:
+ - echo "$MAVEN_SETTINGS_XML" > /usr/share/maven/conf/settings.xml
+ - mvn clean site deploy -DskipTests
+ only:
+ - master
+ - /^release\//
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 04639d7..c922d1e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,9 +5,9 @@
4.0.0
- com.zdjizhi
+ com.geedgenetworks.application
sip-rtp-correlation
- 2.0
+ 2.0-SNAPSHOT
Flink : SIP-RTP : Correlation
@@ -25,6 +25,24 @@
5.8.0
+
+
+ platform-releases
+ http://192.168.40.153:8099/content/repositories/platform-release
+ true
+
+
+ platform-snapshots
+ http://192.168.40.153:8099/content/repositories/platform-snapshot
+
+
+ platform-site
+
+ dav:http://192.168.40.153:8099/content/sites/platform-site/platform/application/sip-rtp-correlate-${project.version}
+
+
+
+
central
@@ -39,18 +57,6 @@
-
-
- platform-releases
- http://192.168.40.153:8099/content/repositories/platform-release
- true
-
-
- platform-snapshots
- http://192.168.40.153:8099/content/repositories/platform-snapshot
-
-
-
org.slf4j
@@ -131,6 +137,11 @@
easy-stream-socket-connector
${easy.stream.version}
+
+ com.geedgenetworks.flink
+ easy-stream-console-connector
+ ${easy.stream.version}
+
com.geedgenetworks.flink
@@ -178,6 +189,12 @@
org.apache.flink
flink-table-runtime-blink_${scala.binary.version}
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
@@ -444,6 +461,39 @@
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.0.0-M3
+
+
+ release-version-check
+
+ enforce
+
+
+
+
+ SNAPSHOT versions ${project.version} are not allowed.
+
+
+
+
+
+ snapshot-version-check
+
+ enforce
+
+
+
+
+ Non-SNAPSHOT versions ${project.version} are not allowed.
+
+
+
+
+
+
org.apache.maven.plugins
maven-compiler-plugin
@@ -486,11 +536,115 @@
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.0.0
+
+
+ jobs-copy-resources
+ pre-site
+
+ copy-resources
+
+
+ ${project.build.directory}/site/jobs
+
+
+ src/main/resources/jobs
+
+ *.yml
+
+
+
+
+
+
+ site-resources
+ pre-site
+
+ resources
+
+
+
+
+ src/site
+ true
+
+ **
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+
+ false
+
+
+
+ default-site
+
+ site
+
+ site
+
+ ${project.build.outputDirectory}
+
+
+
+ site-deploy
+
+ stage-deploy
+
+ deploy
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.9.1
+
+ ${project.build.directory}/site
+ false
+
+
+
+ org.apache.maven.wagon
+ wagon-webdav-jackrabbit
+ 2.8
+
+
+ org.apache.maven.doxia
+ doxia-module-markdown
+ 1.9.1
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ 3.1.1
+
+
+
\ No newline at end of file
diff --git a/src/main/java/Application.java b/src/main/java/Application.java
deleted file mode 100644
index 237c2b7..0000000
--- a/src/main/java/Application.java
+++ /dev/null
@@ -1,9 +0,0 @@
-import com.geedgenetworks.flink.easy.core.Runners;
-
-public class Application {
-
- public static void main(String[] args) throws Exception {
-
- Runners.run("E:\\java-workspace\\sip-rtp-correlation\\feature\\easy-refactor\\src\\main\\resources\\job.yml");
- }
-}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
deleted file mode 100644
index 7cc9d25..0000000
--- a/src/main/resources/application.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-sink.kafka.topic=VOIP-CONVERSATION-RECORD
-sink.kafka.props.bootstrap.servers=localhost:9292
-
-
-source.kafka.topic=VOIP-RECORD
-source.kafka.props.bootstrap.servers=localhost:9292
-source.kafka.props.group.id=flink-voip-fusion
\ No newline at end of file
diff --git a/src/main/resources/job.yml b/src/main/resources/jobs/job.yml
similarity index 99%
rename from src/main/resources/job.yml
rename to src/main/resources/jobs/job.yml
index e777f17..52aba5e 100644
--- a/src/main/resources/job.yml
+++ b/src/main/resources/jobs/job.yml
@@ -1,6 +1,6 @@
job:
name: correlation_sip_rtp_session
- parallelism: 10
+ parallelism: 1
active-pipeline:
- only-voip-records
- fusion-fail-records
@@ -1077,6 +1077,7 @@ pipeline:
data-type: INT
- name: rtp
type: LIST
+ ttl: 6 minute
schema:
## General
- name: recv_time
@@ -1350,10 +1351,8 @@ pipeline:
key-by: vsys_id, SORT_ADDRESS( sip_originator_sdp_connect_ip, sip_originator_sdp_media_port, sip_responder_sdp_connect_ip, sip_responder_sdp_media_port )
# SIP
process:
- - if: '@sip.isNull'
- then:
- - SET sip FROM withColumns(recv_time to rtp_originator_dir)
- - if: '@sip.isNotNull && @rtp.isNotNull && @rtp.cardinality() > 0'
+ - SET sip FROM withColumns(recv_time to rtp_originator_dir)
+ - if: '@rtp.isNotNull'
then:
- |-
FLAT OUTPUT ok FOR i IN rtp FROM
@@ -1436,9 +1435,7 @@ pipeline:
- on: rtp-records
key-by: vsys_id, SORT_ADDRESS( client_ip, client_port, server_ip, server_port )
process:
- - if: '@sip.isNull'
- then:
- - APPEND rtp FROM withColumns(recv_time to rtp_originator_dir)
+ - APPEND rtp FROM withColumns(recv_time to rtp_originator_dir)
- if: '@sip.isNotNull'
then:
- |-
diff --git a/CHANGELOG.md b/src/site/markdown/changelogs.md
similarity index 80%
rename from CHANGELOG.md
rename to src/site/markdown/changelogs.md
index 73e84e8..aab7b60 100644
--- a/CHANGELOG.md
+++ b/src/site/markdown/changelogs.md
@@ -1,5 +1,5 @@
-# Changelog
+## Changelog
-### Feature
+### 2.0
- [GAL-602](https://jira.geedge.net/browse/GAL-602) 基于 Easy Stream 框架的配置化改造。
\ No newline at end of file
diff --git a/src/site/markdown/deploy.md b/src/site/markdown/deploy.md
new file mode 100644
index 0000000..5114e9e
--- /dev/null
+++ b/src/site/markdown/deploy.md
@@ -0,0 +1,13 @@
+## Deploy
+
+- 准备 JDK ${java.version} 的环境
+
+- 准备 Flink ${flink.version} 的环境
+
+- [下载](./download.html) 对应版本 UDF 依赖 Jar
+
+- [下载](./download.html) 对应版本 Job 配置 (一个 yml 文件)
+
+- 执行命令 `flink run -Dflink.rest.bind-port=8081 -c com.geedgenetworks.flink.easy.core.Runner path/to/sip-rtp-correlation-.jar job.yml`
+
+- 您将在控制台看到启动日志,同时您可以在 `http://:8081` 看到任务 UI。
\ No newline at end of file
diff --git a/src/site/markdown/download.md b/src/site/markdown/download.md
new file mode 100644
index 0000000..d85bc18
--- /dev/null
+++ b/src/site/markdown/download.md
@@ -0,0 +1,8 @@
+## Download
+
+### Easy Stream ${project.version}
+
+| UDF Jar | Job |
+|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --------------- |
+| [JAR](${project.distributionManagement.repository.url}/com/geedgenetworks/application/sip-rtp-correlation/${project.version}/${project.artifactId}-${project.version}.jar) ( [MD5](${project.distributionManagement.repository.url}/com/geedgenetworks/application/sip-rtp-correlation/${project.version}/${project.artifactId}-${project.version}.jar.md5) [SHA1](${project.distributionManagement.repository.url}/com/geedgenetworks/application/sip-rtp-correlation/${project.version}/${project.artifactId}-${project.version}.jar.sha1) ) | [YAML](./jobs/job.yml) |
+
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
new file mode 100644
index 0000000..2bf785c
--- /dev/null
+++ b/src/site/markdown/index.md
@@ -0,0 +1,10 @@
+## SIP RTP Correlation
+
+SIP RTP Correlation 项目是一个使用 Apache Flink 实现的实时数据处理项目,旨在从 Kafka 中读取 SIP(Session Initiation Protocol)和 RTP(Real-time Transport Protocol)数据,将它们融合成完整的 VoIP(Voice over Internet Protocol)通话数据。
+
+SIP RTP Correlation 项目可以用于实时监控和分析 VoIP 通话数据,提取关键指标,以及进行实时报警和诊断。
+
+
+
+
+You can download the latest release from [Job Yml](./jobs/job.yml). And you can changelog from [CHANGELOG.md](./changelogs.html).
\ No newline at end of file
diff --git a/src/site/resources/css/site.css b/src/site/resources/css/site.css
new file mode 100644
index 0000000..11a3d99
--- /dev/null
+++ b/src/site/resources/css/site.css
@@ -0,0 +1,13 @@
+#banner {
+ height: 108px;
+ background: none;
+}
+
+#bannerLeft img {
+ margin-left: 18px;
+ margin-top: 10px;
+}
+
+div.well {
+ display: none;
+}
\ No newline at end of file
diff --git a/src/site/resources/images/logo.png b/src/site/resources/images/logo.png
new file mode 100644
index 0000000..da2277a
Binary files /dev/null and b/src/site/resources/images/logo.png differ
diff --git a/src/site/site.xml b/src/site/site.xml
new file mode 100644
index 0000000..497fe49
--- /dev/null
+++ b/src/site/site.xml
@@ -0,0 +1,56 @@
+
+
+
+
+ Easy Stream
+ images/logo.png
+ #
+
+
+
+
+
+
+ org.apache.maven.skins
+ maven-fluido-skin
+ 1.10.0
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/test/java/com/geedgenetworks/flink/easy/application/ApplicationTest.java b/src/test/java/com/geedgenetworks/flink/easy/application/ApplicationTest.java
new file mode 100644
index 0000000..c9eac46
--- /dev/null
+++ b/src/test/java/com/geedgenetworks/flink/easy/application/ApplicationTest.java
@@ -0,0 +1,33 @@
+package com.geedgenetworks.flink.easy.application;
+
+import com.geedgenetworks.flink.easy.core.Runners;
+import org.junit.jupiter.api.Test;
+
+public class ApplicationTest {
+
+ static {
+// System.setProperty("easy.execute.mode", "validate");
+ System.setProperty("flink.rest.bind-port", "8081");
+// System.setProperty("flink.rest.flamegraph.enabled", "true");
+ System.setProperty("flink.heartbeat.timeout", "1800000");
+ }
+
+ public static String discoverConfiguration(final String name) throws Exception {
+ var path = String.format("/jobs/%s.yml", name);
+ var resource = ApplicationTest.class.getResource(path);
+ if (resource == null) {
+ // maven
+ resource = ApplicationTest.class.getResource(String.format("../classes/%s", path));
+ }
+ if (resource == null) {
+ throw new IllegalArgumentException(
+ String.format("Not found job '%s' in path [%s].", name, path));
+ }
+ return resource.getPath();
+ }
+
+ @Test
+ public void testJob() throws Exception {
+ Runners.run(discoverConfiguration("job"));
+ }
+}
diff --git a/src/test/resources/data/session-records.txt b/src/test/resources/data/session-records.txt
new file mode 100644
index 0000000..821e859
--- /dev/null
+++ b/src/test/resources/data/session-records.txt
@@ -0,0 +1,4 @@
+{"log_id": 438322402985248769,"recv_time":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":1715830004000,"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"}
+{"log_id": 438322402985248769,"recv_time":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":1025,"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":1715830000100,"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":8192,"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.85","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}
+{"log_id": 438322402985248769,"recv_time":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":1715830000000,"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"}
+{"log_id": 438322402985248769,"recv_time":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":1715830000000,"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}
\ No newline at end of file
diff --git a/src/test/resources/data/session.json b/src/test/resources/data/session.json
new file mode 100644
index 0000000..683609c
--- /dev/null
+++ b/src/test/resources/data/session.json
@@ -0,0 +1,43 @@
+{
+ "device_id": "9800165603247024",
+ "sled_ip": "92.168.40.26",
+ "tcp_handshake_latency_ms": 1034,
+ "out_link_id": 41612,
+ "in_link_id": 60995,
+ "address_type": 4,
+ "vsys_id": 2048,
+ "flags": 91784,
+ "device_group": "OLAP-MOCK-DG-3",
+ "data_center": "OLAP-MOCK-DC-2",
+ "direction": "Inbound",
+ "client_ip": "16.176.21.112",
+ "server_ip": "103.144.108.239",
+ "c2s_ttl": 46,
+ "s2c_ttl": 128,
+ "client_port": 57690,
+ "server_port": 443,
+ "subscriber_id": "Abdul Kunze",
+ "phone_number": "+1 424-760-9979 x1322",
+ "decoded_as": "SSL",
+ "ssl_sni": "schumm.name",
+ "app": "ssl",
+ "ip_protocol": "udp",
+ "sent_pkts": 101,
+ "received_pkts": 18,
+ "sent_bytes": 2838,
+ "received_bytes": 23465,
+ "start_timestamp_ms": 1719400532424,
+ "end_timestamp_ms": 1719400532424,
+ "duration_ms": 5624,
+ "tcp_rtt_ms": 12,
+ "log_id": 438322402985248769,
+ "recv_time": 1719400532,
+ "session_id": 438322402985773057,
+ "ingestion_time": 1719400532,
+ "server_domain": "schumm.name",
+ "server_asn": "139742",
+ "client_administrative_area": "Unknown",
+ "client_country": "United States",
+ "client_super_administrative_area": "Unknown",
+ "processing_time": 1719400532
+}
\ No newline at end of file
diff --git a/tools/maven/checkstyle.xml b/tools/maven/checkstyle.xml
index ae5a148..78f2137 100644
--- a/tools/maven/checkstyle.xml
+++ b/tools/maven/checkstyle.xml
@@ -143,10 +143,6 @@ page at http://checkstyle.sourceforge.net/config.html.
-
-
-
-