summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2024-11-08 15:30:28 +0800
committerluwenpeng <[email protected]>2024-11-08 17:20:14 +0800
commit6aa82aeea6bdf4ded2f2523868199d7da3131dd5 (patch)
treea91f8b187eef21d98dd26ea188597465c1a7dab3
parent043f9cbad7bd2be51b655067b274c31ffdeefde0 (diff)
TSG-23386 SCE移除FieldStat2,为适配AArch64做准备
-rw-r--r--ci/travis.sh4
-rw-r--r--conf/sce.conf9
-rw-r--r--platform/CMakeLists.txt1
-rw-r--r--platform/include/global_metrics.h14
-rw-r--r--platform/src/global_metrics.cpp620
-rw-r--r--platform/src/main.cpp4
-rw-r--r--test/CMakeLists.txt2
-rw-r--r--test/gtest_utils.h15
-rw-r--r--test/test_data/conf/sce.conf9
-rw-r--r--test/test_data/log/test_ctr_pkt_active_expect.fs4155
-rw-r--r--test/test_data/log/test_ctr_pkt_active_ok.fs229
-rw-r--r--test/test_data/log/test_ctr_pkt_opening_expect.fs4155
-rw-r--r--test/test_data/log/test_ctr_pkt_opening_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_error_bypass_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_error_bypass_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_mirr_block_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_mirr_block_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_mirr_bypass_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_mirr_bypass_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_mirr_forward_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_mirr_forward_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_mirr_rx_drop_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_mirr_rx_drop_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_stee_block_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_stee_block_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_stee_bypass_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_stee_bypass_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_stee_forward_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_stee_forward_ok.fs229
-rw-r--r--test/test_data/log/test_data_pkt_stee_rx_egress_expect.fs4155
-rw-r--r--test/test_data/log/test_data_pkt_stee_rx_egress_ok.fs229
-rw-r--r--test/test_data/log/test_mix_pkt_stee_forward_expect.fs4155
-rw-r--r--test/test_data/log/test_mix_pkt_stee_forward_ok.fs229
-rw-r--r--vendor/CMakeLists.txt4
34 files changed, 2029 insertions, 861 deletions
diff --git a/ci/travis.sh b/ci/travis.sh
index aceff23..163f398 100644
--- a/ci/travis.sh
+++ b/ci/travis.sh
@@ -38,7 +38,6 @@ yum install -y mrzcpd-corei7-4.*
yum install -y libmaatframe-devel
yum install -y libMESA_handle_logger-devel
yum install -y libMESA_prof_load-devel
-yum install -y libMESA_field_stat2-devel
yum install -y libfieldstat4-devel
yum install -y numactl-libs # required by mrzcpd
yum install -y libibverbs # required by mrzcpd
@@ -46,6 +45,7 @@ yum install -y libbreakpad_mini-devel
yum install -y librdkafka-1.2.2.1218b3c
yum install -y librdkafka-devel-1.2.2.1218b3c
yum install -y libuuid-devel
+yum install -y jq
if [ $ASAN_OPTION ] && [ -f "/opt/rh/devtoolset-7/enable" ]; then
source /opt/rh/devtoolset-7/enable
@@ -61,7 +61,7 @@ cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS \
-DVERSION_DAILY_BUILD=$TESTING_VERSION_BUILD \
..
make -j 4
-make test
+ctest -V
if [ -n "${PACKAGE}" ]; then
make package
diff --git a/conf/sce.conf b/conf/sce.conf
index 9130cf2..6b21efe 100644
--- a/conf/sce.conf
+++ b/conf/sce.conf
@@ -58,15 +58,8 @@ dev_endpoint_l3_ip=192.168.100.1
# dev_endpoint_l3_mac=aa:aa:aa:aa:aa:aa
[stat]
-output_file=log/sce.fs2
-statsd_server=127.0.0.1
-statsd_port=8100
-# 1 : FS_OUTPUT_STATSD
-# 2 : FS_OUTPUT_INFLUX_LINE
-statsd_format=1
+output_file=log/sce.fs4
statsd_cycle=2
-prometheus_listen_port=9001
-prometheus_listen_url=/sce_prometheus
[metrics]
output_fs_interval_ms=500
diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt
index 46055ca..f4cc0b6 100644
--- a/platform/CMakeLists.txt
+++ b/platform/CMakeLists.txt
@@ -2,7 +2,6 @@ add_library(platform src/policy.cpp src/health_check.cpp src/sce.cpp src/packet_
target_link_libraries(platform PUBLIC common)
target_link_libraries(platform PUBLIC pthread)
target_link_libraries(platform PUBLIC MESA_prof_load)
-target_link_libraries(platform PUBLIC MESA_field_stat)
target_link_libraries(platform PUBLIC fieldstat4)
target_link_libraries(platform PUBLIC breakpad_mini)
target_link_libraries(platform PUBLIC maatframe)
diff --git a/platform/include/global_metrics.h b/platform/include/global_metrics.h
index d208d47..61e08c0 100644
--- a/platform/include/global_metrics.h
+++ b/platform/include/global_metrics.h
@@ -7,7 +7,7 @@ extern "C"
#endif
#include "utils.h"
-#include <MESA/field_stat2.h>
+#include <fieldstat/fieldstat_easy.h>
struct throughput_metrics
{
@@ -92,13 +92,7 @@ struct thread_metrics
struct metrics_config
{
char output_file[256];
- char statsd_server[32];
- int statsd_port;
- int statsd_format;
int statsd_cycle;
-
- int prometheus_listen_port;
- char prometheus_listen_url[256];
};
struct global_metrics
@@ -106,7 +100,7 @@ struct global_metrics
struct thread_metrics sum;
struct metrics_config config;
- screen_stat_handle_t fs_handle;
+ struct fieldstat_easy *fs_handle;
int fs_id[128];
int thread_num;
@@ -116,8 +110,8 @@ struct global_metrics
struct global_metrics *global_metrics_create(const char *profile, int thread_num);
void global_metrics_destory(struct global_metrics *global_metrics);
-void global_metrics_update(struct global_metrics *global_metrics, struct thread_metrics *thread_metrics, int thread_id);
-void global_metrics_dump(struct global_metrics *global_metrics);
+void global_metrics_sync(struct global_metrics *global_metrics, struct thread_metrics *thread_metrics, int thread_id);
+void global_metrics_flush(struct global_metrics *global_metrics);
#ifdef __cplusplus
}
diff --git a/platform/src/global_metrics.cpp b/platform/src/global_metrics.cpp
index 3aa7a94..38892af 100644
--- a/platform/src/global_metrics.cpp
+++ b/platform/src/global_metrics.cpp
@@ -1,275 +1,145 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
-#include <MESA/field_stat2.h>
#include <MESA/MESA_prof_load.h>
#include "log.h"
#include "global_metrics.h"
-enum SCE_STAT_FIELD
+// type, name, value
+#define STAT_MAP(XX) \
+ /* device_nf */ \
+ XX(STAT_DEVICE_NF_RX_PKT, dev_nf_rx_P, nf_rx.n_pkts) \
+ XX(STAT_DEVICE_NF_RX_B, dev_nf_rx_B, nf_rx.n_bytes) \
+ XX(STAT_DEVICE_NF_TX_PKT, dev_nf_tx_P, nf_tx.n_pkts) \
+ XX(STAT_DEVICE_NF_TX_B, dev_nf_tx_B, nf_tx.n_bytes) \
+ XX(STAT_KEE_PKT_DOWN_RX_PKT, kee_d_rx_P, downlink_rx.n_pkts) \
+ XX(STAT_KEE_PKT_DOWN_RX_B, kee_d_rx_B, downlink_rx.n_bytes) \
+ XX(STAT_KEE_PKT_DOWN_TX_PKT, kee_d_tx_P, downlink_tx.n_pkts) \
+ XX(STAT_KEE_PKT_DOWN_TX_B, kee_d_tx_B, downlink_tx.n_bytes) \
+ /* raw traffic */ \
+ XX(STAT_RAW_TRAFFIC_RX_PKT, raw_rx_P, raw_rx.n_pkts) \
+ XX(STAT_RAW_TRAFFIC_RX_B, raw_rx_B, raw_rx.n_bytes) \
+ XX(STAT_RAW_TRAFFIC_TX_PKT, raw_tx_P, raw_tx.n_pkts) \
+ XX(STAT_RAW_TRAFFIC_TX_B, raw_tx_B, raw_tx.n_bytes) \
+ /* decrypted traffic */ \
+ XX(STAT_DECRYPTED_TRAFFIC_RX_PKT, dec_rx_P, dec_rx.n_pkts) \
+ XX(STAT_DECRYPTED_TRAFFIC_RX_B, dec_rx_B, dec_rx.n_bytes) \
+ XX(STAT_DECRYPTED_TRAFFIC_TX_PKT, dec_tx_P, dec_tx.n_pkts) \
+ XX(STAT_DECRYPTED_TRAFFIC_TX_B, dec_tx_B, dec_tx.n_bytes) \
+ /* device_endpoint_vxlan */ \
+ XX(STAT_DEVICE_ENDPOINT_VXLAN_RX_PKT, dev_l3_rx_P, endpoint_vxlan_rx.n_pkts) \
+ XX(STAT_DEVICE_ENDPOINT_VXLAN_RX_B, dev_l3_rx_B, endpoint_vxlan_rx.n_bytes) \
+ XX(STAT_DEVICE_ENDPOINT_VXLAN_TX_PKT, dev_l3_tx_P, endpoint_vxlan_tx.n_pkts) \
+ XX(STAT_DEVICE_ENDPOINT_VXLAN_TX_B, dev_l3_tx_B, endpoint_vxlan_tx.n_bytes) \
+ XX(STAT_DEVICE_ENDPOINT_VXLAN_DROP_PKT, dev_l3_dop_P, endpoint_vxlan_drop.n_pkts) \
+ XX(STAT_DEVICE_ENDPOINT_VXLAN_DROP_B, dev_l3_dop_B, endpoint_vxlan_drop.n_bytes) \
+ XX(STAT_KEE_PKT_UP_RX_PKT, kee_u_rx_P, uplink_rx.n_pkts) \
+ XX(STAT_KEE_PKT_UP_RX_B, kee_u_rx_B, uplink_rx.n_bytes) \
+ XX(STAT_KEE_PKT_UP_TX_DROP_PKT, kee_u_rxdop_P, uplink_tx_drop.n_pkts) \
+ XX(STAT_KEE_PKT_UP_TX_DROP_B, kee_u_rxdop_B, uplink_tx_drop.n_bytes) \
+ /* device_endpoint_vlan */ \
+ XX(STAT_DEVICE_ENDPOINT_VLAN_RX_PKT, dev_l2_rx_P, endpoint_vlan_rx.n_pkts) \
+ XX(STAT_DEVICE_ENDPOINT_VLAN_RX_B, dev_l2_rx_B, endpoint_vlan_rx.n_bytes) \
+ XX(STAT_DEVICE_ENDPOINT_VLAN_TX_PKT, dev_l2_tx_P, endpoint_vlan_tx.n_pkts) \
+ XX(STAT_DEVICE_ENDPOINT_VLAN_TX_B, dev_l2_tx_B, endpoint_vlan_tx.n_bytes) \
+ XX(STAT_DEVICE_ENDPOINT_VLAN_DROP_PKT, dev_l2_dop_P, endpoint_vlan_drop.n_pkts) \
+ XX(STAT_DEVICE_ENDPOINT_VLAN_DROP_B, dev_l2_dop_B, endpoint_vlan_drop.n_bytes) \
+ /* data_pkt_metrics */ \
+ XX(STAT_DATA_PKT_MIRR_BYPASS_PKT, mirr_bypass_P, mirr_bypass.n_pkts) \
+ XX(STAT_DATA_PKT_MIRR_BYPASS_B, mirr_bypass_B, mirr_bypass.n_bytes) \
+ XX(STAT_DATA_PKT_MIRR_BLOCK_PKT, mirr_block_P, mirr_block.n_pkts) \
+ XX(STAT_DATA_PKT_MIRR_BLOCK_B, mirr_block_B, mirr_block.n_bytes) \
+ XX(STAT_DATA_PKT_MIRR_RX_DROP_PKT, mirr_rxdop_P, mirr_rx_drop.n_pkts) \
+ XX(STAT_DATA_PKT_MIRR_RX_DROP_B, mirr_rxdop_B, mirr_rx_drop.n_bytes) \
+ XX(STAT_DATA_PKT_MIRR_TX_PKT, mirr_tx_P, mirr_tx.n_pkts) \
+ XX(STAT_DATA_PKT_MIRR_TX_B, mirr_tx_B, mirr_tx.n_bytes) \
+ XX(STAT_DATA_PKT_STEE_BYPASS_PKT, stee_bypass_P, stee_bypass.n_pkts) \
+ XX(STAT_DATA_PKT_STEE_BYPASS_B, stee_bypass_B, stee_bypass.n_bytes) \
+ XX(STAT_DATA_PKT_STEE_BLOCK_PKT, stee_block_P, stee_block.n_pkts) \
+ XX(STAT_DATA_PKT_STEE_BLOCK_B, stee_block_B, stee_block.n_bytes) \
+ XX(STAT_DATA_PKT_STEE_RX_PKT, stee_rx_P, stee_rx.n_pkts) \
+ XX(STAT_DATA_PKT_STEE_RX_B, stee_rx_B, stee_rx.n_bytes) \
+ XX(STAT_DATA_PKT_STEE_TX_PKT, stee_tx_P, stee_tx.n_pkts) \
+ XX(STAT_DATA_PKT_STEE_TX_B, stee_tx_B, stee_tx.n_bytes) \
+ XX(STAT_DATA_PKT_MISS_SESS_PKT, miss_sess_P, miss_sess.n_pkts) \
+ XX(STAT_DATA_PKT_MISS_SESS_B, miss_sess_B, miss_sess.n_bytes) \
+ XX(STAT_DATA_PKT_ERROR_BYPASS_PKT, err_bypass_P, error_bypass.n_pkts) \
+ XX(STAT_DATA_PKT_ERROR_BYPASS_B, err_bypass_B, error_bypass.n_bytes) \
+ XX(STAT_DATA_PKT_ERROR_BLOCK_PKT, err_block_P, error_block.n_pkts) \
+ XX(STAT_DATA_PKT_ERROR_BLOCK_B, err_block_B, error_block.n_bytes) \
+ /* sf_status_metrics */ \
+ XX(STAT_SF_STATUS_ACTIVE, sf_active, sf_active) \
+ XX(STAT_SF_STATUS_INACTIVE, sf_inactive, sf_inactive) \
+ /* ctrl_pkt_metrics */ \
+ XX(STAT_CTRL_PKT_RX_PKT, ctrl_rx_P, ctrl_rx.n_pkts) \
+ XX(STAT_CTRL_PKT_RX_B, ctrl_rx_B, ctrl_rx.n_bytes) \
+ XX(STAT_CTRL_PKT_TX_PKT, ctrl_tx_P, ctrl_tx.n_pkts) \
+ XX(STAT_CTRL_PKT_TX_B, ctrl_tx_B, ctrl_tx.n_bytes) \
+ XX(STAT_CTRL_PKT_OPENING, ctrl_opening, ctrl_opening) \
+ XX(STAT_CTRL_PKT_ACTIVE, ctrl_active, ctrl_active) \
+ XX(STAT_CTRL_PKT_CLOSING, ctrl_closing, ctrl_closing) \
+ XX(STAT_CTRL_PKT_RESETALL, ctrl_resetall, ctrl_resetall) \
+ XX(STAT_CTRL_PKT_ERROR, ctrl_error, ctrl_error) \
+ /* sf_session_metrics */ \
+ XX(STAT_SF_SESSION_NUM, curr_sessions, session_num) \
+ XX(STAT_SF_SESSION_LOG, session_logs, session_log) \
+ XX(STAT_SESSION_NEW, session_new, session_new) \
+ XX(STAT_SESSION_FREE, session_free, session_free) \
+ /* stateless inject */ \
+ XX(STAT_STATELESS_INJECT_PKT, stateless_inject_P, stateless_inject.n_pkts) \
+ XX(STAT_STATELESS_INJECT_B, stateless_inject_B, stateless_inject.n_bytes)
+
+enum stat_type
{
- // device_nf
- STAT_DEVICE_NF_RX_PKT,
- STAT_DEVICE_NF_RX_B,
-
- STAT_DEVICE_NF_TX_PKT,
- STAT_DEVICE_NF_TX_B,
-
- STAT_KEE_PKT_DOWN_RX_PKT,
- STAT_KEE_PKT_DOWN_RX_B,
-
- STAT_KEE_PKT_DOWN_TX_PKT,
- STAT_KEE_PKT_DOWN_TX_B,
-
- // raw traffic
- STAT_RAW_TRAFFIC_RX_PKT,
- STAT_RAW_TRAFFIC_RX_B,
-
- STAT_RAW_TRAFFIC_TX_PKT,
- STAT_RAW_TRAFFIC_TX_B,
-
- // decrypted traffic
- STAT_DECRYPTED_TRAFFIC_RX_PKT,
- STAT_DECRYPTED_TRAFFIC_RX_B,
-
- STAT_DECRYPTED_TRAFFIC_TX_PKT,
- STAT_DECRYPTED_TRAFFIC_TX_B,
-
- // device_endpoint_vxlan
- STAT_DEVICE_ENDPOINT_VXLAN_RX_PKT,
- STAT_DEVICE_ENDPOINT_VXLAN_RX_B,
-
- STAT_DEVICE_ENDPOINT_VXLAN_TX_PKT,
- STAT_DEVICE_ENDPOINT_VXLAN_TX_B,
-
- STAT_KEE_PKT_UP_RX_PKT,
- STAT_KEE_PKT_UP_RX_B,
-
- STAT_KEE_PKT_UP_TX_DROP_PKT,
- STAT_KEE_PKT_UP_TX_DROP_B,
-
- // device_endpoint_vlan
- STAT_DEVICE_ENDPOINT_VLAN_RX_PKT,
- STAT_DEVICE_ENDPOINT_VLAN_RX_B,
-
- STAT_DEVICE_ENDPOINT_VLAN_TX_PKT,
- STAT_DEVICE_ENDPOINT_VLAN_TX_B,
-
- STAT_DEVICE_ENDPOINT_VXLAN_DROP_PKT,
- STAT_DEVICE_ENDPOINT_VXLAN_DROP_B,
-
- STAT_DEVICE_ENDPOINT_VLAN_DROP_PKT,
- STAT_DEVICE_ENDPOINT_VLAN_DROP_B,
-
- // data_pkt_metrics
- STAT_DATA_PKT_MIRR_BYPASS_PKT,
- STAT_DATA_PKT_MIRR_BYPASS_B,
-
- STAT_DATA_PKT_MIRR_BLOCK_PKT,
- STAT_DATA_PKT_MIRR_BLOCK_B,
-
- STAT_DATA_PKT_MIRR_RX_DROP_PKT,
- STAT_DATA_PKT_MIRR_RX_DROP_B,
-
- STAT_DATA_PKT_MIRR_TX_PKT,
- STAT_DATA_PKT_MIRR_TX_B,
-
- STAT_DATA_PKT_STEE_BYPASS_PKT,
- STAT_DATA_PKT_STEE_BYPASS_B,
-
- STAT_DATA_PKT_STEE_BLOCK_PKT,
- STAT_DATA_PKT_STEE_BLOCK_B,
-
- STAT_DATA_PKT_STEE_RX_PKT,
- STAT_DATA_PKT_STEE_RX_B,
-
- STAT_DATA_PKT_STEE_TX_PKT,
- STAT_DATA_PKT_STEE_TX_B,
-
- STAT_DATA_PKT_MISS_SESS_PKT,
- STAT_DATA_PKT_MISS_SESS_B,
-
- STAT_DATA_PKT_ERROR_BYPASS_PKT,
- STAT_DATA_PKT_ERROR_BYPASS_B,
-
- STAT_DATA_PKT_ERROR_BLOCK_PKT,
- STAT_DATA_PKT_ERROR_BLOCK_B,
-
- // sf_status_metrics
- STAT_SF_STATUS_ACTIVE,
- STAT_SF_STATUS_INACTIVE,
-
- // ctrl_pkt_metrics
- STAT_CTRL_PKT_RX_PKT,
- STAT_CTRL_PKT_RX_B,
-
- STAT_CTRL_PKT_TX_PKT,
- STAT_CTRL_PKT_TX_B,
-
- STAT_CTRL_PKT_OPENING,
- STAT_CTRL_PKT_ACTIVE,
- STAT_CTRL_PKT_CLOSING,
- STAT_CTRL_PKT_RESETALL,
- STAT_CTRL_PKT_ERROR,
-
- // sf_session_metrics
- STAT_SF_SESSION_NUM,
- STAT_SF_SESSION_LOG,
-
- STAT_SESSION_NEW,
- STAT_SESSION_FREE,
-
- // stateless inject
- STAT_STATELESS_INJECT_PKT,
- STAT_STATELESS_INJECT_B,
-
- // max
- STAT_MAX,
+#define XX(_type, _name, _value) _type,
+ STAT_MAP(XX)
+#undef XX
+ STAT_MAX
};
-
-static const char *stat_map[] =
+static const char *stat_str[] =
{
- // device_nf
- [STAT_DEVICE_NF_RX_PKT] = "dev_nf_rx_P",
- [STAT_DEVICE_NF_RX_B] = "dev_nf_rx_B",
-
- [STAT_DEVICE_NF_TX_PKT] = "dev_nf_tx_P",
- [STAT_DEVICE_NF_TX_B] = "dev_nf_tx_B",
-
- [STAT_KEE_PKT_DOWN_RX_PKT] = "kee_d_rx_P",
- [STAT_KEE_PKT_DOWN_RX_B] = "kee_d_rx_B",
-
- [STAT_KEE_PKT_DOWN_TX_PKT] = "kee_d_tx_P",
- [STAT_KEE_PKT_DOWN_TX_B] = "kee_d_tx_B",
-
- // raw traffic
- [STAT_RAW_TRAFFIC_RX_PKT] = "raw_rx_P",
- [STAT_RAW_TRAFFIC_RX_B] = "raw_rx_B",
-
- [STAT_RAW_TRAFFIC_TX_PKT] = "raw_tx_P",
- [STAT_RAW_TRAFFIC_TX_B] = "raw_tx_B",
-
- // decypted traffic
- [STAT_DECRYPTED_TRAFFIC_RX_PKT] = "dec_rx_P",
- [STAT_DECRYPTED_TRAFFIC_RX_B] = "dec_rx_B",
-
- [STAT_DECRYPTED_TRAFFIC_TX_PKT] = "dec_tx_P",
- [STAT_DECRYPTED_TRAFFIC_TX_B] = "dec_tx_B",
-
- // device_endpoint_vxlan
- [STAT_DEVICE_ENDPOINT_VXLAN_RX_PKT] = "dev_l3_rx_P",
- [STAT_DEVICE_ENDPOINT_VXLAN_RX_B] = "dev_l3_rx_B",
-
- [STAT_DEVICE_ENDPOINT_VXLAN_TX_PKT] = "dev_l3_tx_P",
- [STAT_DEVICE_ENDPOINT_VXLAN_TX_B] = "dev_l3_tx_B",
-
- [STAT_KEE_PKT_UP_RX_PKT] = "kee_u_rx_P",
- [STAT_KEE_PKT_UP_RX_B] = "kee_u_rx_B",
-
- [STAT_KEE_PKT_UP_TX_DROP_PKT] = "kee_u_rxdop_P",
- [STAT_KEE_PKT_UP_TX_DROP_B] = "kee_u_rxdop_B",
-
- // device_endpoint_vlan
- [STAT_DEVICE_ENDPOINT_VLAN_RX_PKT] = "dev_l2_rx_P",
- [STAT_DEVICE_ENDPOINT_VLAN_RX_B] = "dev_l2_rx_B",
-
- [STAT_DEVICE_ENDPOINT_VLAN_TX_PKT] = "dev_l2_tx_P",
- [STAT_DEVICE_ENDPOINT_VLAN_TX_B] = "dev_l2_tx_B",
-
- [STAT_DEVICE_ENDPOINT_VXLAN_DROP_PKT] = "dev_l3_dop_P",
- [STAT_DEVICE_ENDPOINT_VXLAN_DROP_B] = "dev_l3_dop_B",
-
- [STAT_DEVICE_ENDPOINT_VLAN_DROP_PKT] = "dev_l2_dop_P",
- [STAT_DEVICE_ENDPOINT_VLAN_DROP_B] = "dev_l2_dop_B",
-
- // data_pkt_metrics
- [STAT_DATA_PKT_MIRR_BYPASS_PKT] = "mirr_bypass_P",
- [STAT_DATA_PKT_MIRR_BYPASS_B] = "mirr_bypass_B",
-
- [STAT_DATA_PKT_MIRR_BLOCK_PKT] = "mirr_block_P",
- [STAT_DATA_PKT_MIRR_BLOCK_B] = "mirr_block_B",
-
- [STAT_DATA_PKT_MIRR_RX_DROP_PKT] = "mirr_rxdop_P",
- [STAT_DATA_PKT_MIRR_RX_DROP_B] = "mirr_rxdop_B",
-
- [STAT_DATA_PKT_MIRR_TX_PKT] = "mirr_tx_P",
- [STAT_DATA_PKT_MIRR_TX_B] = "mirr_tx_B",
-
- [STAT_DATA_PKT_STEE_BYPASS_PKT] = "stee_bypass_P",
- [STAT_DATA_PKT_STEE_BYPASS_B] = "stee_bypass_B",
-
- [STAT_DATA_PKT_STEE_BLOCK_PKT] = "stee_block_P",
- [STAT_DATA_PKT_STEE_BLOCK_B] = "stee_block_B",
-
- [STAT_DATA_PKT_STEE_RX_PKT] = "stee_rx_P",
- [STAT_DATA_PKT_STEE_RX_B] = "stee_rx_B",
-
- [STAT_DATA_PKT_STEE_TX_PKT] = "stee_tx_P",
- [STAT_DATA_PKT_STEE_TX_B] = "stee_tx_B",
-
- [STAT_DATA_PKT_MISS_SESS_PKT] = "miss_sess_P",
- [STAT_DATA_PKT_MISS_SESS_B] = "miss_sess_B",
-
- [STAT_DATA_PKT_ERROR_BYPASS_PKT] = "err_bypass_P",
- [STAT_DATA_PKT_ERROR_BYPASS_B] = "err_bypass_B",
-
- [STAT_DATA_PKT_ERROR_BLOCK_PKT] = "err_block_P",
- [STAT_DATA_PKT_ERROR_BLOCK_B] = "err_block_B",
-
- // sf_status_metrics
- [STAT_SF_STATUS_ACTIVE] = "sf_active",
- [STAT_SF_STATUS_INACTIVE] = "sf_inactive",
-
- // ctrl_pkt_metrics
- [STAT_CTRL_PKT_RX_PKT] = "ctrl_rx_P",
- [STAT_CTRL_PKT_RX_B] = "ctrl_rx_B",
-
- [STAT_CTRL_PKT_TX_PKT] = "ctrl_tx_P",
- [STAT_CTRL_PKT_TX_B] = "ctrl_tx_B",
-
- [STAT_CTRL_PKT_OPENING] = "ctrl_opening",
- [STAT_CTRL_PKT_ACTIVE] = "ctrl_active",
- [STAT_CTRL_PKT_CLOSING] = "ctrl_closing",
- [STAT_CTRL_PKT_RESETALL] = "ctrl_resetall",
- [STAT_CTRL_PKT_ERROR] = "ctrl_error",
-
- // sf_session_metrics
- [STAT_SF_SESSION_NUM] = "curr_sessions",
- [STAT_SF_SESSION_LOG] = "session_logs",
-
- [STAT_SESSION_NEW] = "session_new",
- [STAT_SESSION_FREE] = "session_free",
+#define XX(_type, _name, _value) #_name,
+ STAT_MAP(XX)
+#undef XX
+};
- // stateless inject
- [STAT_STATELESS_INJECT_PKT] = "stateless_inject_P",
- [STAT_STATELESS_INJECT_B] = "stateless_inject_B",
+static uint64_t thread_metrics_get_value(struct thread_metrics *metrics, enum stat_type type)
+{
+ switch (type)
+ {
+#define XX(_type, _name, _value) \
+ case _type: \
+ return metrics->_value;
+ STAT_MAP(XX)
+#undef XX
+ default:
+ return 0;
+ }
+}
- [STAT_MAX] = NULL};
+static void thread_metrics_add_value(struct thread_metrics *metrics, enum stat_type type, uint64_t value)
+{
+ switch (type)
+ {
+#define XX(_type, _name, _value) \
+ case _type: \
+ metrics->_value += value; \
+ break;
+ STAT_MAP(XX)
+#undef XX
+ default:
+ break;
+ }
+}
static void global_metrics_parse_config(const char *profile, struct metrics_config *config)
{
- MESA_load_profile_string_def(profile, "STAT", "output_file", config->output_file, sizeof(config->output_file), "log/sce.fs2");
- MESA_load_profile_string_def(profile, "STAT", "statsd_server", config->statsd_server, sizeof(config->statsd_server), "127.0.0.1");
- MESA_load_profile_int_def(profile, "STAT", "statsd_port", &(config->statsd_port), 8100);
- MESA_load_profile_int_def(profile, "STAT", "statsd_format", &(config->statsd_format), 1); // FS_OUTPUT_STATSD=1, FS_OUTPUT_INFLUX_LINE=2
+ MESA_load_profile_string_def(profile, "STAT", "output_file", config->output_file, sizeof(config->output_file), "log/sce.fs4");
MESA_load_profile_int_def(profile, "STAT", "statsd_cycle", &(config->statsd_cycle), 1);
- MESA_load_profile_int_def(profile, "STAT", "prometheus_listen_port", &(config->prometheus_listen_port), 9001);
- MESA_load_profile_string_def(profile, "STAT", "prometheus_listen_url", config->prometheus_listen_url, sizeof(config->prometheus_listen_url), "/sce_prometheus");
-
- if (config->statsd_format != 1 && config->statsd_format != 2)
- {
- config->statsd_format = 1;
- }
-
LOG_DEBUG("STAT->output_file : %s", config->output_file);
- LOG_DEBUG("STAT->statsd_server : %s", config->statsd_server);
- LOG_DEBUG("STAT->statsd_port : %d", config->statsd_port);
- LOG_DEBUG("STAT->statsd_format : %d", config->statsd_format);
LOG_DEBUG("STAT->statsd_cycle : %d", config->statsd_cycle);
- LOG_DEBUG("STAT->prometheus_listen_port : %d", config->prometheus_listen_port);
- LOG_DEBUG("STAT->prometheus_listen_url : %s", config->prometheus_listen_url);
}
struct global_metrics *global_metrics_create(const char *profile, int thread_num)
@@ -283,26 +153,19 @@ struct global_metrics *global_metrics_create(const char *profile, int thread_num
global_metrics_parse_config(profile, &global_metrics->config);
- FS_library_set_prometheus_port(global_metrics->config.prometheus_listen_port);
- FS_library_set_prometheus_url_path(global_metrics->config.prometheus_listen_url);
- FS_library_init();
-
- int value = 0;
- global_metrics->fs_handle = FS_create_handle(); // TODO memleak no free() API
- FS_set_para(global_metrics->fs_handle, APP_NAME, "SCE", 3);
- FS_set_para(global_metrics->fs_handle, OUTPUT_DEVICE, global_metrics->config.output_file, strlen(global_metrics->config.output_file));
- value = 1;
- FS_set_para(global_metrics->fs_handle, OUTPUT_PROMETHEUS, &value, sizeof(value));
- value = 1;
- FS_set_para(global_metrics->fs_handle, PRINT_MODE, &value, sizeof(value));
- value = 0;
- FS_set_para(global_metrics->fs_handle, CREATE_THREAD, &value, sizeof(value));
+ global_metrics->fs_handle = fieldstat_easy_new(1, "SCE", NULL, 0);
+ if (global_metrics->fs_handle == NULL)
+ {
+ LOG_ERROR("failed to create fieldstat_easy");
+ global_metrics_destory(global_metrics);
+ return NULL;
+ }
- if (strlen(global_metrics->config.statsd_server) > 0 && global_metrics->config.statsd_port != 0)
+ if (fieldstat_easy_enable_auto_output(global_metrics->fs_handle, global_metrics->config.output_file, global_metrics->config.statsd_cycle) != 0)
{
- FS_set_para(global_metrics->fs_handle, STATS_SERVER_IP, global_metrics->config.statsd_server, strlen(global_metrics->config.statsd_server));
- FS_set_para(global_metrics->fs_handle, STATS_SERVER_PORT, &(global_metrics->config.statsd_port), sizeof(global_metrics->config.statsd_port));
- FS_set_para(global_metrics->fs_handle, STATS_FORMAT, &global_metrics->config.statsd_format, sizeof(global_metrics->config.statsd_format));
+ LOG_ERROR("failed to enable auto output for fieldstat_easy");
+ global_metrics_destory(global_metrics);
+ return NULL;
}
if (STAT_MAX >= (sizeof(global_metrics->fs_id) / sizeof(global_metrics->fs_id[0])))
@@ -314,11 +177,9 @@ struct global_metrics *global_metrics_create(const char *profile, int thread_num
for (int i = 0; i < STAT_MAX; i++)
{
- global_metrics->fs_id[i] = FS_register(global_metrics->fs_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, stat_map[i]);
+ global_metrics->fs_id[i] = fieldstat_easy_register_counter(global_metrics->fs_handle, stat_str[i]);
}
- FS_start(global_metrics->fs_handle);
-
return global_metrics;
}
@@ -338,7 +199,11 @@ void global_metrics_destory(struct global_metrics *global_metrics)
global_metrics->thread_metrics_cache = NULL;
}
- FS_library_destroy();
+ if (global_metrics->fs_handle)
+ {
+ fieldstat_easy_free(global_metrics->fs_handle);
+ global_metrics->fs_handle = NULL;
+ }
free(global_metrics);
global_metrics = NULL;
}
@@ -347,7 +212,7 @@ void global_metrics_destory(struct global_metrics *global_metrics)
#define THREAD_METRICS_CACHE_IS_FREE 0
#define THREAD_METRICS_CACHE_IS_BUSY 0xf
-void global_metrics_update(struct global_metrics *global_metrics, struct thread_metrics *thread_metrics, int thread_id)
+void global_metrics_sync(struct global_metrics *global_metrics, struct thread_metrics *thread_metrics, int thread_id)
{
if (ATOMIC_READ(&(global_metrics->thread_metrics_flag[thread_id])) == THREAD_METRICS_CACHE_IS_FREE)
{
@@ -360,209 +225,28 @@ void global_metrics_update(struct global_metrics *global_metrics, struct thread_
}
}
-void global_metrics_dump(struct global_metrics *global_metrics)
+void global_metrics_flush(struct global_metrics *global_metrics)
{
struct thread_metrics *sum = &global_metrics->sum;
+ struct thread_metrics last = *sum;
for (int i = 0; i < global_metrics->thread_num; i++)
{
if (ATOMIC_READ(&(global_metrics->thread_metrics_flag[i])) == THREAD_METRICS_CACHE_IS_BUSY)
{
struct thread_metrics *thread = &global_metrics->thread_metrics_cache[i];
-
- sum->nf_rx.n_pkts += thread->nf_rx.n_pkts;
- sum->nf_rx.n_bytes += thread->nf_rx.n_bytes;
- sum->nf_tx.n_pkts += thread->nf_tx.n_pkts;
- sum->nf_tx.n_bytes += thread->nf_tx.n_bytes;
-
- sum->raw_rx.n_pkts += thread->raw_rx.n_pkts;
- sum->raw_rx.n_bytes += thread->raw_rx.n_bytes;
- sum->raw_tx.n_pkts += thread->raw_tx.n_pkts;
- sum->raw_tx.n_bytes += thread->raw_tx.n_bytes;
-
- sum->dec_rx.n_pkts += thread->dec_rx.n_pkts;
- sum->dec_rx.n_bytes += thread->dec_rx.n_bytes;
- sum->dec_tx.n_pkts += thread->dec_tx.n_pkts;
- sum->dec_tx.n_bytes += thread->dec_tx.n_bytes;
-
- sum->endpoint_vxlan_rx.n_pkts += thread->endpoint_vxlan_rx.n_pkts;
- sum->endpoint_vxlan_rx.n_bytes += thread->endpoint_vxlan_rx.n_bytes;
- sum->endpoint_vxlan_tx.n_pkts += thread->endpoint_vxlan_tx.n_pkts;
- sum->endpoint_vxlan_tx.n_bytes += thread->endpoint_vxlan_tx.n_bytes;
- sum->endpoint_vxlan_drop.n_pkts += thread->endpoint_vxlan_drop.n_pkts;
- sum->endpoint_vxlan_drop.n_bytes += thread->endpoint_vxlan_drop.n_bytes;
-
- sum->endpoint_vlan_rx.n_pkts += thread->endpoint_vlan_rx.n_pkts;
- sum->endpoint_vlan_rx.n_bytes += thread->endpoint_vlan_rx.n_bytes;
- sum->endpoint_vlan_tx.n_pkts += thread->endpoint_vlan_tx.n_pkts;
- sum->endpoint_vlan_tx.n_bytes += thread->endpoint_vlan_tx.n_bytes;
- sum->endpoint_vlan_drop.n_pkts += thread->endpoint_vlan_drop.n_pkts;
- sum->endpoint_vlan_drop.n_bytes += thread->endpoint_vlan_drop.n_bytes;
-
- sum->mirr_bypass.n_pkts += thread->mirr_bypass.n_pkts;
- sum->mirr_bypass.n_bytes += thread->mirr_bypass.n_bytes;
- sum->mirr_block.n_pkts += thread->mirr_block.n_pkts;
- sum->mirr_block.n_bytes += thread->mirr_block.n_bytes;
- sum->mirr_rx_drop.n_pkts += thread->mirr_rx_drop.n_pkts;
- sum->mirr_rx_drop.n_bytes += thread->mirr_rx_drop.n_bytes;
- sum->mirr_tx.n_pkts += thread->mirr_tx.n_pkts;
- sum->mirr_tx.n_bytes += thread->mirr_tx.n_bytes;
- sum->stee_bypass.n_pkts += thread->stee_bypass.n_pkts;
- sum->stee_bypass.n_bytes += thread->stee_bypass.n_bytes;
- sum->stee_block.n_pkts += thread->stee_block.n_pkts;
- sum->stee_block.n_bytes += thread->stee_block.n_bytes;
- sum->stee_rx.n_pkts += thread->stee_rx.n_pkts;
- sum->stee_rx.n_bytes += thread->stee_rx.n_bytes;
- sum->stee_tx.n_pkts += thread->stee_tx.n_pkts;
- sum->stee_tx.n_bytes += thread->stee_tx.n_bytes;
- sum->miss_sess.n_pkts += thread->miss_sess.n_pkts;
- sum->miss_sess.n_bytes += thread->miss_sess.n_bytes;
- sum->error_bypass.n_pkts += thread->error_bypass.n_pkts;
- sum->error_bypass.n_bytes += thread->error_bypass.n_bytes;
- sum->error_block.n_pkts += thread->error_block.n_pkts;
- sum->error_block.n_bytes += thread->error_block.n_bytes;
- sum->ctrl_rx.n_pkts += thread->ctrl_rx.n_pkts;
- sum->ctrl_rx.n_bytes += thread->ctrl_rx.n_bytes;
- sum->ctrl_tx.n_pkts += thread->ctrl_tx.n_pkts;
- sum->ctrl_tx.n_bytes += thread->ctrl_tx.n_bytes;
- sum->ctrl_opening += thread->ctrl_opening;
- sum->ctrl_active += thread->ctrl_active;
- sum->ctrl_closing += thread->ctrl_closing;
- sum->ctrl_resetall += thread->ctrl_resetall;
- sum->ctrl_error += thread->ctrl_error;
- sum->downlink_rx.n_pkts += thread->downlink_rx.n_pkts;
- sum->downlink_rx.n_bytes += thread->downlink_rx.n_bytes;
- sum->downlink_tx.n_pkts += thread->downlink_tx.n_pkts;
- sum->downlink_tx.n_bytes += thread->downlink_tx.n_bytes;
- sum->uplink_rx.n_pkts += thread->uplink_rx.n_pkts;
- sum->uplink_rx.n_bytes += thread->uplink_rx.n_bytes;
- sum->uplink_tx_drop.n_pkts += thread->uplink_tx_drop.n_pkts;
- sum->uplink_tx_drop.n_bytes += thread->uplink_tx_drop.n_bytes;
- sum->sf_active += thread->sf_active;
- sum->sf_inactive += thread->sf_inactive;
- sum->session_num += thread->session_num;
- sum->session_log += thread->session_log;
- sum->session_new += thread->session_new;
- sum->session_free += thread->session_free;
-
- sum->stateless_inject.n_pkts += thread->stateless_inject.n_pkts;
- sum->stateless_inject.n_bytes += thread->stateless_inject.n_bytes;
-
+ for (int j = 0; j < STAT_MAX; j++)
+ {
+ uint64_t val = thread_metrics_get_value(thread, (enum stat_type)j);
+ thread_metrics_add_value(sum, (enum stat_type)j, val);
+ }
memset(thread, 0, sizeof(struct thread_metrics));
ATOMIC_SET(&(global_metrics->thread_metrics_flag[i]), THREAD_METRICS_CACHE_IS_FREE);
}
}
- // device_metrics
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_NF_RX_PKT], 0, FS_OP_SET, sum->nf_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_NF_RX_B], 0, FS_OP_SET, sum->nf_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_NF_TX_PKT], 0, FS_OP_SET, sum->nf_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_NF_TX_B], 0, FS_OP_SET, sum->nf_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_RAW_TRAFFIC_RX_PKT], 0, FS_OP_SET, sum->raw_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_RAW_TRAFFIC_RX_B], 0, FS_OP_SET, sum->raw_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_RAW_TRAFFIC_TX_PKT], 0, FS_OP_SET, sum->raw_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_RAW_TRAFFIC_TX_B], 0, FS_OP_SET, sum->raw_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DECRYPTED_TRAFFIC_RX_PKT], 0, FS_OP_SET, sum->dec_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DECRYPTED_TRAFFIC_RX_B], 0, FS_OP_SET, sum->dec_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DECRYPTED_TRAFFIC_TX_PKT], 0, FS_OP_SET, sum->dec_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DECRYPTED_TRAFFIC_TX_B], 0, FS_OP_SET, sum->dec_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VXLAN_RX_PKT], 0, FS_OP_SET, sum->endpoint_vxlan_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VXLAN_RX_B], 0, FS_OP_SET, sum->endpoint_vxlan_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VXLAN_TX_PKT], 0, FS_OP_SET, sum->endpoint_vxlan_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VXLAN_TX_B], 0, FS_OP_SET, sum->endpoint_vxlan_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VXLAN_DROP_PKT], 0, FS_OP_SET, sum->endpoint_vxlan_drop.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VXLAN_DROP_B], 0, FS_OP_SET, sum->endpoint_vxlan_drop.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VLAN_RX_PKT], 0, FS_OP_SET, sum->endpoint_vlan_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VLAN_RX_B], 0, FS_OP_SET, sum->endpoint_vlan_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VLAN_TX_PKT], 0, FS_OP_SET, sum->endpoint_vlan_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VLAN_TX_B], 0, FS_OP_SET, sum->endpoint_vlan_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VLAN_DROP_PKT], 0, FS_OP_SET, sum->endpoint_vlan_drop.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DEVICE_ENDPOINT_VLAN_DROP_B], 0, FS_OP_SET, sum->endpoint_vlan_drop.n_bytes);
-
- // data_pkt_metrics
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_BYPASS_PKT], 0, FS_OP_SET, sum->mirr_bypass.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_BYPASS_B], 0, FS_OP_SET, sum->mirr_bypass.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_BLOCK_PKT], 0, FS_OP_SET, sum->mirr_block.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_BLOCK_B], 0, FS_OP_SET, sum->mirr_block.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_RX_DROP_PKT], 0, FS_OP_SET, sum->mirr_rx_drop.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_RX_DROP_B], 0, FS_OP_SET, sum->mirr_rx_drop.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_TX_PKT], 0, FS_OP_SET, sum->mirr_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MIRR_TX_B], 0, FS_OP_SET, sum->mirr_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_BYPASS_PKT], 0, FS_OP_SET, sum->stee_bypass.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_BYPASS_B], 0, FS_OP_SET, sum->stee_bypass.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_BLOCK_PKT], 0, FS_OP_SET, sum->stee_block.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_BLOCK_B], 0, FS_OP_SET, sum->stee_block.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_RX_PKT], 0, FS_OP_SET, sum->stee_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_RX_B], 0, FS_OP_SET, sum->stee_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_TX_PKT], 0, FS_OP_SET, sum->stee_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_STEE_TX_B], 0, FS_OP_SET, sum->stee_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MISS_SESS_PKT], 0, FS_OP_SET, sum->miss_sess.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_MISS_SESS_B], 0, FS_OP_SET, sum->miss_sess.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_ERROR_BYPASS_PKT], 0, FS_OP_SET, sum->error_bypass.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_ERROR_BYPASS_B], 0, FS_OP_SET, sum->error_bypass.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_ERROR_BLOCK_PKT], 0, FS_OP_SET, sum->error_block.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_DATA_PKT_ERROR_BLOCK_B], 0, FS_OP_SET, sum->error_block.n_bytes);
-
- // ctrl_pkt_metrics
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_RX_PKT], 0, FS_OP_SET, sum->ctrl_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_RX_B], 0, FS_OP_SET, sum->ctrl_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_TX_PKT], 0, FS_OP_SET, sum->ctrl_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_TX_B], 0, FS_OP_SET, sum->ctrl_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_OPENING], 0, FS_OP_SET, sum->ctrl_opening);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_ACTIVE], 0, FS_OP_SET, sum->ctrl_active);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_CLOSING], 0, FS_OP_SET, sum->ctrl_closing);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_RESETALL], 0, FS_OP_SET, sum->ctrl_resetall);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_CTRL_PKT_ERROR], 0, FS_OP_SET, sum->ctrl_error);
-
- // keepalived_pkt_metrics
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_DOWN_RX_PKT], 0, FS_OP_SET, sum->downlink_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_DOWN_RX_B], 0, FS_OP_SET, sum->downlink_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_DOWN_TX_PKT], 0, FS_OP_SET, sum->downlink_tx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_DOWN_TX_B], 0, FS_OP_SET, sum->downlink_tx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_UP_RX_PKT], 0, FS_OP_SET, sum->uplink_rx.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_UP_RX_B], 0, FS_OP_SET, sum->uplink_rx.n_bytes);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_UP_TX_DROP_PKT], 0, FS_OP_SET, sum->uplink_tx_drop.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_KEE_PKT_UP_TX_DROP_B], 0, FS_OP_SET, sum->uplink_tx_drop.n_bytes);
-
- // sf_status_metrics
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_SF_STATUS_ACTIVE], 0, FS_OP_SET, sum->sf_active);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_SF_STATUS_INACTIVE], 0, FS_OP_SET, sum->sf_inactive);
-
- // sf_session_metrics
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_SF_SESSION_NUM], 0, FS_OP_SET, sum->session_num);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_SF_SESSION_LOG], 0, FS_OP_SET, sum->session_log);
-
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_SESSION_NEW], 0, FS_OP_SET, sum->session_new);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_SESSION_FREE], 0, FS_OP_SET, sum->session_free);
-
- // stateless inject
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_STATELESS_INJECT_PKT], 0, FS_OP_SET, sum->stateless_inject.n_pkts);
- FS_operate(global_metrics->fs_handle, global_metrics->fs_id[STAT_STATELESS_INJECT_B], 0, FS_OP_SET, sum->stateless_inject.n_bytes);
-
- FS_passive_output(global_metrics->fs_handle);
+ for (int i = 0; i < STAT_MAX; i++)
+ {
+ uint64_t delta = thread_metrics_get_value(sum, (enum stat_type)i) - thread_metrics_get_value(&last, (enum stat_type)i);
+ fieldstat_easy_counter_incrby(global_metrics->fs_handle, 0, global_metrics->fs_id[i], NULL, 0, delta);
+ }
}
diff --git a/platform/src/main.cpp b/platform/src/main.cpp
index 1f58b91..f6c2241 100644
--- a/platform/src/main.cpp
+++ b/platform/src/main.cpp
@@ -103,7 +103,7 @@ static void *worker_thread_cycle(void *arg)
packet_io_wait(handle, thread_ctx, timeout_ms);
}
- global_metrics_update(global_metrics, thread_metrics, thread_index);
+ global_metrics_sync(global_metrics, thread_metrics, thread_index);
if (ATOMIC_READ(&thread_ctx->session_table_need_reset) > 0)
{
@@ -221,7 +221,7 @@ int main(int argc, char **argv)
{
if (timestamp_get_msec(ctx->ts) - g_metrics_last_send_ts >= g_metrics_send_interval)
{
- global_metrics_dump(ctx->metrics);
+ global_metrics_flush(ctx->metrics);
g_metrics_last_send_ts = timestamp_get_msec(ctx->ts);
}
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7d7d65c..c9105b8 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -19,7 +19,7 @@ add_library(temp_platform
${CMAKE_SOURCE_DIR}/platform/src/sf_status.cpp)
target_include_directories(temp_platform PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
target_include_directories(temp_platform PUBLIC ${CMAKE_SOURCE_DIR}/platform/include)
-target_link_libraries(temp_platform PUBLIC common pthread cjson maatframe MESA_prof_load MESA_field_stat fieldstat4 gmock_marsio)
+target_link_libraries(temp_platform PUBLIC common pthread cjson maatframe MESA_prof_load fieldstat4 gmock_marsio)
###############################################################################
# gtest_ctrl_pkt_opening
diff --git a/test/gtest_utils.h b/test/gtest_utils.h
index 25852bb..78468d1 100644
--- a/test/gtest_utils.h
+++ b/test/gtest_utils.h
@@ -79,7 +79,7 @@ inline struct gtest_frame *gtest_frame_new(const char *json_file, const char *de
struct thread_ctx *thread_ctx = NULL;
struct gtest_frame *instance = (struct gtest_frame *)calloc(1, sizeof(struct gtest_frame));
- system("rm -rf `ls log/* | egrep -v '(*_ok.fs2)'`");
+ system("rm -rf `ls log/* | egrep -v '(*_expect.fs4)'`");
memset(&cmdline, 0, sizeof(cmdline));
snprintf(cmdline, sizeof(cmdline), "sed -i \"s/json_cfg_file=.*/json_cfg_file=resource\\/%s/\" ./conf/sce.conf", json_file);
@@ -167,18 +167,15 @@ inline void gtest_frame_log(struct gtest_frame *instance)
struct sce_ctx *sce_ctx = instance->sce_ctx;
struct thread_ctx *thread_ctx = &sce_ctx->work_threads[0];
- for (int i = 0; i < 10; i++)
- {
- global_metrics_update(sce_ctx->metrics, &thread_ctx->thread_metrics, thread_ctx->thread_index);
- global_metrics_dump(sce_ctx->metrics);
- usleep(1);
- }
+ global_metrics_sync(sce_ctx->metrics, &thread_ctx->thread_metrics, thread_ctx->thread_index);
+ global_metrics_flush(sce_ctx->metrics);
+ sleep(2);
memset(&cmdline, 0, sizeof(cmdline));
- snprintf(cmdline, sizeof(cmdline), "cp log/sce.fs2 log/test_%s.fs2", instance->desc);
+ snprintf(cmdline, sizeof(cmdline), "cat log/sce.fs4 | jq >> log/test_%s.fs4", instance->desc);
system(cmdline);
memset(&cmdline, 0, sizeof(cmdline));
- snprintf(cmdline, sizeof(cmdline), "diff -I '===' log/test_%s.fs2 log/test_%s_ok.fs2 > log/test_%s.diff", instance->desc, instance->desc, instance->desc);
+ snprintf(cmdline, sizeof(cmdline), "diff -I 'timestamp_ms' log/test_%s.fs4 log/test_%s_expect.fs4 > log/test_%s.diff", instance->desc, instance->desc, instance->desc);
int ret = system(cmdline);
printf("exec %s, return: %d\n", cmdline, ret);
diff --git a/test/test_data/conf/sce.conf b/test/test_data/conf/sce.conf
index cb58c73..c62b84a 100644
--- a/test/test_data/conf/sce.conf
+++ b/test/test_data/conf/sce.conf
@@ -57,15 +57,8 @@ dev_endpoint_l3_ip=192.168.100.1
# dev_endpoint_l3_mac=aa:aa:aa:aa:aa:aa
[stat]
-output_file=log/sce.fs2
-statsd_server=127.0.0.1
-statsd_port=8100
-# 1 : FS_OUTPUT_STATSD
-# 2 : FS_OUTPUT_INFLUX_LINE
-statsd_format=1
+output_file=log/sce.fs4
statsd_cycle=2
-prometheus_listen_port=9001
-prometheus_listen_url=/sce_prometheus
[metrics]
output_fs_interval_ms=500
diff --git a/test/test_data/log/test_ctr_pkt_active_expect.fs4 b/test/test_data/log/test_ctr_pkt_active_expect.fs4
new file mode 100644
index 0000000..3fdff8c
--- /dev/null
+++ b/test/test_data/log/test_ctr_pkt_active_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 1,
+ "dev_nf_rx_B": 160,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 160,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 0,
+ "raw_rx_B": 0,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 1,
+ "dev_nf_rx_B": 160,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 160,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 0,
+ "raw_rx_B": 0,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731047893641,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_ctr_pkt_active_ok.fs2 b/test/test_data/log/test_ctr_pkt_active_ok.fs2
deleted file mode 100644
index 5d8008d..0000000
--- a/test/test_data/log/test_ctr_pkt_active_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:30:56 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 1 160 1 160 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 1 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_ctr_pkt_opening_expect.fs4 b/test/test_data/log/test_ctr_pkt_opening_expect.fs4
new file mode 100644
index 0000000..b00e8c3
--- /dev/null
+++ b/test/test_data/log/test_ctr_pkt_opening_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 1,
+ "dev_nf_rx_B": 99,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 99,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 0,
+ "raw_rx_B": 0,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 99,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 99,
+ "ctrl_opening": 1,
+ "ctrl_active": 0,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 0,
+ "session_logs": 0,
+ "session_new": 0,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 1,
+ "dev_nf_rx_B": 99,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 99,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 0,
+ "raw_rx_B": 0,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 99,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 99,
+ "ctrl_opening": 1,
+ "ctrl_active": 0,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 0,
+ "session_logs": 0,
+ "session_new": 0,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731047780055,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_ctr_pkt_opening_ok.fs2 b/test/test_data/log/test_ctr_pkt_opening_ok.fs2
deleted file mode 100644
index 15b123c..0000000
--- a/test/test_data/log/test_ctr_pkt_opening_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:29:46 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 1 99 1 99 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 99 1 99 1 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_error_bypass_expect.fs4 b/test/test_data/log/test_data_pkt_error_bypass_expect.fs4
new file mode 100644
index 0000000..6f6bc86
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_error_bypass_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 1,
+ "dev_nf_rx_B": 145,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 145,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 1,
+ "miss_sess_B": 145,
+ "err_bypass_P": 1,
+ "err_bypass_B": 145,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 0,
+ "ctrl_rx_B": 0,
+ "ctrl_tx_P": 0,
+ "ctrl_tx_B": 0,
+ "ctrl_opening": 0,
+ "ctrl_active": 0,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 0,
+ "session_logs": 0,
+ "session_new": 0,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 1,
+ "dev_nf_rx_B": 145,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 145,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 1,
+ "miss_sess_B": 145,
+ "err_bypass_P": 1,
+ "err_bypass_B": 145,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 0,
+ "ctrl_rx_B": 0,
+ "ctrl_tx_P": 0,
+ "ctrl_tx_B": 0,
+ "ctrl_opening": 0,
+ "ctrl_active": 0,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 0,
+ "session_logs": 0,
+ "session_new": 0,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731047928185,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_error_bypass_ok.fs2 b/test/test_data/log/test_data_pkt_error_bypass_ok.fs2
deleted file mode 100644
index fc3c74d..0000000
--- a/test/test_data/log/test_data_pkt_error_bypass_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:36:37 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_mirr_block_expect.fs4 b/test/test_data/log/test_data_pkt_mirr_block_expect.fs4
new file mode 100644
index 0000000..890242c
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_mirr_block_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 1,
+ "mirr_block_B": 145,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 1,
+ "mirr_block_B": 145,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049123838,
+ "timestamp_ms_delta": 2005
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_mirr_block_ok.fs2 b/test/test_data/log/test_data_pkt_mirr_block_ok.fs2
deleted file mode 100644
index 11c0467..0000000
--- a/test/test_data/log/test_data_pkt_mirr_block_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:34:59 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 2 305 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_mirr_bypass_expect.fs4 b/test/test_data/log/test_data_pkt_mirr_bypass_expect.fs4
new file mode 100644
index 0000000..e92a7b8
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_mirr_bypass_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 1,
+ "mirr_bypass_B": 145,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 1,
+ "mirr_bypass_B": 145,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049107065,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_mirr_bypass_ok.fs2 b/test/test_data/log/test_data_pkt_mirr_bypass_ok.fs2
deleted file mode 100644
index c60db82..0000000
--- a/test/test_data/log/test_data_pkt_mirr_bypass_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:34:24 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 2 305 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 1 145 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_mirr_forward_expect.fs4 b/test/test_data/log/test_data_pkt_mirr_forward_expect.fs4
new file mode 100644
index 0000000..58d7e84
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_mirr_forward_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 1,
+ "mirr_tx_B": 145,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 1,
+ "mirr_tx_B": 145,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049138746,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_mirr_forward_ok.fs2 b/test/test_data/log/test_data_pkt_mirr_forward_ok.fs2
deleted file mode 100644
index 0417624..0000000
--- a/test/test_data/log/test_data_pkt_mirr_forward_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:35:26 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 2 305 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 1 195 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 1 145
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 1 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_mirr_rx_drop_expect.fs4 b/test/test_data/log/test_data_pkt_mirr_rx_drop_expect.fs4
new file mode 100644
index 0000000..5b9f6fe
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_mirr_rx_drop_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 1,
+ "dev_l3_rx_B": 195,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 1,
+ "dev_l3_dop_B": 195,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 1,
+ "mirr_rxdop_B": 145,
+ "mirr_tx_P": 1,
+ "mirr_tx_B": 145,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 1,
+ "err_block_B": 145,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 1,
+ "dev_l3_rx_B": 195,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 1,
+ "dev_l3_dop_B": 195,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 1,
+ "mirr_rxdop_B": 145,
+ "mirr_tx_P": 1,
+ "mirr_tx_B": 145,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 1,
+ "err_block_B": 145,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049155805,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_mirr_rx_drop_ok.fs2 b/test/test_data/log/test_data_pkt_mirr_rx_drop_ok.fs2
deleted file mode 100644
index b8ba8bc..0000000
--- a/test/test_data/log/test_data_pkt_mirr_rx_drop_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:36:09 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 2 305 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 1 195 1 195 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 1 195 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 1 145 1 145
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 1 145 1 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_stee_block_expect.fs4 b/test/test_data/log/test_data_pkt_stee_block_expect.fs4
new file mode 100644
index 0000000..7bbadbf
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_stee_block_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 160,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 1,
+ "stee_block_B": 145,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 160,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 1,
+ "stee_block_B": 145,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049058690,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_stee_block_ok.fs2 b/test/test_data/log/test_data_pkt_stee_block_ok.fs2
deleted file mode 100644
index a4a54d5..0000000
--- a/test/test_data/log/test_data_pkt_stee_block_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:32:36 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 1 160 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_stee_bypass_expect.fs4 b/test/test_data/log/test_data_pkt_stee_bypass_expect.fs4
new file mode 100644
index 0000000..e0cdd00
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_stee_bypass_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 1,
+ "stee_bypass_B": 145,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 0,
+ "dev_l3_tx_B": 0,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 1,
+ "stee_bypass_B": 145,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 0,
+ "stee_tx_B": 0,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 0,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049043441,
+ "timestamp_ms_delta": 2003
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_stee_bypass_ok.fs2 b/test/test_data/log/test_data_pkt_stee_bypass_ok.fs2
deleted file mode 100644
index 08d3f1d..0000000
--- a/test/test_data/log/test_data_pkt_stee_bypass_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:32:04 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 2 305 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 1 145 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_stee_forward_expect.fs4 b/test/test_data/log/test_data_pkt_stee_forward_expect.fs4
new file mode 100644
index 0000000..26d803e
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_stee_forward_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 160,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 1,
+ "stee_tx_B": 145,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 1,
+ "dev_nf_tx_B": 160,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 1,
+ "stee_tx_B": 145,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049074959,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_stee_forward_ok.fs2 b/test/test_data/log/test_data_pkt_stee_forward_ok.fs2
deleted file mode 100644
index be4344d..0000000
--- a/test/test_data/log/test_data_pkt_stee_forward_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:33:12 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 1 160 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 1 195 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 1 145
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 1 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_data_pkt_stee_rx_egress_expect.fs4 b/test/test_data/log/test_data_pkt_stee_rx_egress_expect.fs4
new file mode 100644
index 0000000..73d2800
--- /dev/null
+++ b/test/test_data/log/test_data_pkt_stee_rx_egress_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 1,
+ "dev_l3_rx_B": 195,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 1,
+ "stee_rx_B": 145,
+ "stee_tx_P": 1,
+ "stee_tx_B": 145,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 2,
+ "dev_nf_rx_B": 305,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 305,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 1,
+ "raw_tx_B": 145,
+ "dec_rx_P": 0,
+ "dec_rx_B": 0,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 1,
+ "dev_l3_rx_B": 195,
+ "dev_l3_tx_P": 1,
+ "dev_l3_tx_B": 195,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 1,
+ "stee_rx_B": 145,
+ "stee_tx_P": 1,
+ "stee_tx_B": 145,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 1,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 1,
+ "ctrl_rx_B": 160,
+ "ctrl_tx_P": 1,
+ "ctrl_tx_B": 160,
+ "ctrl_opening": 0,
+ "ctrl_active": 1,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049090256,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_data_pkt_stee_rx_egress_ok.fs2 b/test/test_data/log/test_data_pkt_stee_rx_egress_ok.fs2
deleted file mode 100644
index fa70ac4..0000000
--- a/test/test_data/log/test_data_pkt_stee_rx_egress_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:33:53 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 2 305 2 305 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 1 145 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 1 195 1 195 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 1 145 1 145
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 1 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 1 160 1 160 0 1 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/test/test_data/log/test_mix_pkt_stee_forward_expect.fs4 b/test/test_data/log/test_mix_pkt_stee_forward_expect.fs4
new file mode 100644
index 0000000..b3eca34
--- /dev/null
+++ b/test/test_data/log/test_mix_pkt_stee_forward_expect.fs4
@@ -0,0 +1,155 @@
+[
+ {
+ "tags": {
+ "name": "SCE"
+ },
+ "fields": {
+ "dev_nf_rx_P": 4,
+ "dev_nf_rx_B": 610,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 320,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 1,
+ "dec_rx_B": 145,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 2,
+ "dev_l3_tx_B": 390,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 2,
+ "stee_tx_B": 290,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 2,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 2,
+ "ctrl_rx_B": 320,
+ "ctrl_tx_P": 2,
+ "ctrl_tx_B": 320,
+ "ctrl_opening": 0,
+ "ctrl_active": 2,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "fields_delta": {
+ "dev_nf_rx_P": 4,
+ "dev_nf_rx_B": 610,
+ "dev_nf_tx_P": 2,
+ "dev_nf_tx_B": 320,
+ "kee_d_rx_P": 0,
+ "kee_d_rx_B": 0,
+ "kee_d_tx_P": 0,
+ "kee_d_tx_B": 0,
+ "raw_rx_P": 1,
+ "raw_rx_B": 145,
+ "raw_tx_P": 0,
+ "raw_tx_B": 0,
+ "dec_rx_P": 1,
+ "dec_rx_B": 145,
+ "dec_tx_P": 0,
+ "dec_tx_B": 0,
+ "dev_l3_rx_P": 0,
+ "dev_l3_rx_B": 0,
+ "dev_l3_tx_P": 2,
+ "dev_l3_tx_B": 390,
+ "dev_l3_dop_P": 0,
+ "dev_l3_dop_B": 0,
+ "kee_u_rx_P": 0,
+ "kee_u_rx_B": 0,
+ "kee_u_rxdop_P": 0,
+ "kee_u_rxdop_B": 0,
+ "dev_l2_rx_P": 0,
+ "dev_l2_rx_B": 0,
+ "dev_l2_tx_P": 0,
+ "dev_l2_tx_B": 0,
+ "dev_l2_dop_P": 0,
+ "dev_l2_dop_B": 0,
+ "mirr_bypass_P": 0,
+ "mirr_bypass_B": 0,
+ "mirr_block_P": 0,
+ "mirr_block_B": 0,
+ "mirr_rxdop_P": 0,
+ "mirr_rxdop_B": 0,
+ "mirr_tx_P": 0,
+ "mirr_tx_B": 0,
+ "stee_bypass_P": 0,
+ "stee_bypass_B": 0,
+ "stee_block_P": 0,
+ "stee_block_B": 0,
+ "stee_rx_P": 0,
+ "stee_rx_B": 0,
+ "stee_tx_P": 2,
+ "stee_tx_B": 290,
+ "miss_sess_P": 0,
+ "miss_sess_B": 0,
+ "err_bypass_P": 0,
+ "err_bypass_B": 0,
+ "err_block_P": 0,
+ "err_block_B": 0,
+ "sf_active": 2,
+ "sf_inactive": 0,
+ "ctrl_rx_P": 2,
+ "ctrl_rx_B": 320,
+ "ctrl_tx_P": 2,
+ "ctrl_tx_B": 320,
+ "ctrl_opening": 0,
+ "ctrl_active": 2,
+ "ctrl_closing": 0,
+ "ctrl_resetall": 0,
+ "ctrl_error": 0,
+ "curr_sessions": 1,
+ "session_logs": 0,
+ "session_new": 1,
+ "session_free": 0,
+ "stateless_inject_P": 0,
+ "stateless_inject_B": 0
+ },
+ "timestamp_ms": 1731049169216,
+ "timestamp_ms_delta": 2004
+ }
+]
diff --git a/test/test_data/log/test_mix_pkt_stee_forward_ok.fs2 b/test/test_data/log/test_mix_pkt_stee_forward_ok.fs2
deleted file mode 100644
index 28beab3..0000000
--- a/test/test_data/log/test_mix_pkt_stee_forward_ok.fs2
+++ /dev/null
@@ -1,29 +0,0 @@
-============================================================Sat Mar 2 17:38:11 2024============================================================
- dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
-sum 4 610 2 320 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
-sum 1 145 0 0 1 145 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l3_rx_P dev_l3_rx_B dev_l3_tx_P dev_l3_tx_B kee_u_rx_P kee_u_rx_B kee_u_rxdop_P kee_u_rxdop_B
-sum 0 0 2 390 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- dev_l2_rx_P dev_l2_rx_B dev_l2_tx_P dev_l2_tx_B dev_l3_dop_P dev_l3_dop_B dev_l2_dop_P dev_l2_dop_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- mirr_bypass_P mirr_bypass_B mirr_block_P mirr_block_B mirr_rxdop_P mirr_rxdop_B mirr_tx_P mirr_tx_B
-sum 0 0 0 0 0 0 0 0
-speed/s 0 0 0 0 0 0 0 0
- stee_bypass_P stee_bypass_B stee_block_P stee_block_B stee_rx_P stee_rx_B stee_tx_P stee_tx_B
-sum 0 0 0 0 0 0 2 290
-speed/s 0 0 0 0 0 0 0 0
- miss_sess_P miss_sess_B err_bypass_P err_bypass_B err_block_P err_block_B sf_active sf_inactive
-sum 0 0 0 0 0 0 2 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
-sum 2 320 2 320 0 2 0 0
-speed/s 0 0 0 0 0 0 0 0
- ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
-sum 0 1 0 1 0 0 0
-speed/s 0 0 0 0 0 0 0
-________________________________________________________________________________________________________________________________________________
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt
index 687e852..62d1592 100644
--- a/vendor/CMakeLists.txt
+++ b/vendor/CMakeLists.txt
@@ -52,10 +52,6 @@ add_library(MESA_prof_load SHARED IMPORTED GLOBAL)
set_property(TARGET MESA_prof_load PROPERTY IMPORTED_LOCATION ${MESA_FRAMEWORK_LIB_DIR}/libMESA_prof_load.so)
set_property(TARGET MESA_prof_load PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${MESA_FRAMEWORK_INCLUDE_DIR})
-add_library(MESA_field_stat SHARED IMPORTED GLOBAL)
-set_property(TARGET MESA_field_stat PROPERTY IMPORTED_LOCATION ${MESA_FRAMEWORK_LIB_DIR}/libMESA_field_stat2.so)
-set_property(TARGET MESA_field_stat PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${MESA_FRAMEWORK_INCLUDE_DIR})
-
add_library(fieldstat4 SHARED IMPORTED GLOBAL)
set_property(TARGET fieldstat4 PROPERTY IMPORTED_LOCATION ${MESA_FRAMEWORK_LIB_DIR}/libfieldstat4.so)
set_property(TARGET fieldstat4 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${MESA_FRAMEWORK_INCLUDE_DIR})