Update timeout and timestamp
* Timeout using CLOCK_MONOTONIC
* Session start/last timestamps use CLOCK_REALTIME
* Session ID generator uses CLOCK_REALTIME
This commit is contained in:
@@ -1 +1,2 @@
|
||||
install(FILES stellar_stat.sh DESTINATION ./ COMPONENT Program)
|
||||
install(FILES python_stat.sh DESTINATION ./ COMPONENT Program)
|
||||
install(FILES shell_stat.sh DESTINATION ./ COMPONENT Program)
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
/opt/MESA/bin/fieldstat_exporter.py local -j /opt/tsg/stellar/log/stellar.fs4 -l --clear-screen -e
|
||||
/opt/MESA/bin/fieldstat_exporter.py local -j /opt/tsg/stellar/log/stellar_fs4.json -l --clear-screen -e
|
||||
99
script/shell_stat.sh
Normal file
99
script/shell_stat.sh
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash +x
|
||||
|
||||
#cat stellar_fs4.json |jq
|
||||
#[
|
||||
# {
|
||||
# "name": "stellar",
|
||||
# "tags": {},
|
||||
# "fields": {
|
||||
# "dev_rx_pkts": 90099,
|
||||
# "dev_rx_bytes": 63205423,
|
||||
# "dev_tx_pkts": 90082,
|
||||
# "dev_tx_bytes": 63194807,
|
||||
# "keep_alive_pkts": 0,
|
||||
# "keep_alive_bytes": 0,
|
||||
# "raw_rx_pkts": 90099,
|
||||
# "raw_rx_bytes": 63205423,
|
||||
# "raw_tx_pkts": 90082,
|
||||
# "raw_tx_bytes": 63194807,
|
||||
# "ctrl_rx_pkts": 0,
|
||||
# "ctrl_rx_bytes": 0,
|
||||
# "ctrl_tx_pkts": 0,
|
||||
# "ctrl_tx_bytes": 0,
|
||||
# "tcp_sess_used": 480,
|
||||
# "tcp_sess_opening": 0,
|
||||
# "tcp_sess_active": 141,
|
||||
# "tcp_sess_closing": 339,
|
||||
# "tcp_sess_discard": 0,
|
||||
# "tcp_sess_closed": 0,
|
||||
# "udp_sess_used": 0,
|
||||
# "udp_sess_opening": 0,
|
||||
# "udp_sess_active": 0,
|
||||
# "udp_sess_closing": 0,
|
||||
# "udp_sess_discard": 0,
|
||||
# "udp_sess_closed": 0,
|
||||
# "tcp_sess_evicted": 0,
|
||||
# "udp_sess_evicted": 0,
|
||||
# "udp_pkts_nospace_bypass": 0,
|
||||
# "tcp_pkts_nospace_bypass": 0,
|
||||
# "tcp_pkts_nosess_bypass": 4769,
|
||||
# "tcp_pkts_duped_bypass": 1796,
|
||||
# "udp_pkts_duped_bypass": 382,
|
||||
# "udp_pkts_evctd_bypass": 0,
|
||||
# "tcp_seg_received": 49833,
|
||||
# "tcp_seg_expired": 0,
|
||||
# "tcp_seg_overlap": 3012,
|
||||
# "tcp_seg_no_space": 36452,
|
||||
# "tcp_seg_inorder": 6189,
|
||||
# "tcp_seg_reorded": 218,
|
||||
# "tcp_seg_buffered": 5967,
|
||||
# "tcp_seg_released": 218
|
||||
# },
|
||||
# "timestamp_ms": 1713053113549
|
||||
# }
|
||||
#]
|
||||
|
||||
calculate() {
|
||||
local curr_data=$1
|
||||
local prev_data=$2
|
||||
|
||||
local fields=($(echo "$curr_data" | jq -r '.[].fields | to_entries | .[] | .key' | grep -v timestamp_ms))
|
||||
local curr_ts=$(echo "$curr_data" | jq -r '.[].timestamp_ms')
|
||||
local prev_ts=$(echo "$prev_data" | jq -r '.[].timestamp_ms')
|
||||
local diff_ts=$((($curr_ts - $prev_ts) / 1000))
|
||||
local seconds=$((curr_ts / 1000))
|
||||
local buffer=()
|
||||
|
||||
local curr_fileds=$(echo "$curr_data" | jq -r '.[].fields' | grep -v timestamp_ms)
|
||||
local prev_fileds=$(echo "$prev_data" | jq -r '.[].fields' | grep -v timestamp_ms)
|
||||
|
||||
buffer+=("====================================$(date -d "@$seconds" +"%Y-%m-%d %H:%M:%S")====================================\n")
|
||||
buffer+=("$(printf "%-30s" Field)$(printf "%-20s" Sum)$(printf "%-20s" Speed)\n")
|
||||
local result=()
|
||||
for field in "${fields[@]}"; do
|
||||
local curr_val=$(echo "$curr_fileds" | grep $field | awk '{print $2}' | sed 's/,//g')
|
||||
local prev_val=$(echo "$prev_fileds" | grep $field | awk '{print $2}' | sed 's/,//g')
|
||||
local diff_val=$((curr_val - prev_val))
|
||||
local speed=0
|
||||
if [ $diff_ts -eq 0 ]; then
|
||||
speed=0
|
||||
else
|
||||
speed=$((diff_val / diff_ts))
|
||||
fi
|
||||
buffer+=("$(printf "%-30s" $field)$(printf "%-20s" $curr_val)$(printf "%-20s" $speed)\n")
|
||||
done
|
||||
buffer+=("===========================================================================================\n")
|
||||
clear
|
||||
echo -e "${buffer[@]}"
|
||||
}
|
||||
|
||||
prev_data=""
|
||||
|
||||
while true; do
|
||||
curr_data=$(cat /opt/tsg/stellar/log/stellar_fs4.json)
|
||||
if [ ! -z "$prev_data" ]; then
|
||||
calculate "$curr_data" "$prev_data"
|
||||
fi
|
||||
prev_data="$curr_data"
|
||||
sleep 1
|
||||
done
|
||||
@@ -42,7 +42,7 @@ void plugin_manager_dispatch_session(struct plugin_manager *mgr, struct session
|
||||
struct tcp_segment *seg;
|
||||
enum session_state state = session_get_state(sess);
|
||||
enum session_type type = session_get_type(sess);
|
||||
// PLUGIN_MANAGER_LOG_DEBUG("=> plugin dispatch session: %u %s %s %s", session_get_id(sess), session_get_tuple_str(sess), session_type_to_str(type), session_state_to_str(state));
|
||||
PLUGIN_MANAGER_LOG_DEBUG("=> plugin dispatch session: %u %s %s %s", session_get_id(sess), session_get_tuple_str(sess), session_type_to_str(type), session_state_to_str(state));
|
||||
// session_print(sess);
|
||||
|
||||
if (packet_is_ctrl(pkt))
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
|
||||
@@ -234,24 +235,47 @@ static inline bool before(uint32_t seq1, uint32_t seq2)
|
||||
return (int32_t)(seq1 - seq2) < 0;
|
||||
}
|
||||
|
||||
static void tcp_clean(struct session *sess)
|
||||
static void tcp_clean(struct session_manager *mgr, struct session *sess)
|
||||
{
|
||||
tcp_reassembly_free(sess->tcp_halfs[SESSION_DIRECTION_C2S].assembler);
|
||||
tcp_reassembly_free(sess->tcp_halfs[SESSION_DIRECTION_S2C].assembler);
|
||||
struct tcp_reassembly *c2s_ssembler = sess->tcp_halfs[SESSION_DIRECTION_C2S].assembler;
|
||||
struct tcp_reassembly *s2c_ssembler = sess->tcp_halfs[SESSION_DIRECTION_S2C].assembler;
|
||||
struct tcp_segment *seg;
|
||||
if (c2s_ssembler)
|
||||
{
|
||||
while ((seg = tcp_reassembly_expire(c2s_ssembler, UINT64_MAX)))
|
||||
{
|
||||
session_inc_stat(sess, SESSION_DIRECTION_C2S, STAT_TCP_SEGS_RELEASED, 1);
|
||||
session_inc_stat(sess, SESSION_DIRECTION_C2S, STAT_TCP_PLDS_RELEASED, seg->len);
|
||||
mgr->stat.nr_tcp_seg_released++;
|
||||
tcp_segment_free(seg);
|
||||
}
|
||||
tcp_reassembly_free(c2s_ssembler);
|
||||
}
|
||||
if (s2c_ssembler)
|
||||
{
|
||||
while ((seg = tcp_reassembly_expire(s2c_ssembler, UINT64_MAX)))
|
||||
{
|
||||
session_inc_stat(sess, SESSION_DIRECTION_S2C, STAT_TCP_SEGS_RELEASED, 1);
|
||||
session_inc_stat(sess, SESSION_DIRECTION_S2C, STAT_TCP_PLDS_RELEASED, seg->len);
|
||||
mgr->stat.nr_tcp_seg_released++;
|
||||
tcp_segment_free(seg);
|
||||
}
|
||||
tcp_reassembly_free(s2c_ssembler);
|
||||
}
|
||||
}
|
||||
|
||||
static int tcp_init(struct session *sess, uint8_t tcp_reassembly_enable, uint64_t tcp_reassembly_max_timeout, uint64_t tcp_reassembly_max_segments)
|
||||
static int tcp_init(struct session_manager *mgr, struct session *sess)
|
||||
{
|
||||
if (!tcp_reassembly_enable)
|
||||
if (!mgr->opts.tcp_reassembly_enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
sess->tcp_halfs[SESSION_DIRECTION_C2S].assembler = tcp_reassembly_new(tcp_reassembly_max_timeout, tcp_reassembly_max_segments);
|
||||
sess->tcp_halfs[SESSION_DIRECTION_S2C].assembler = tcp_reassembly_new(tcp_reassembly_max_timeout, tcp_reassembly_max_segments);
|
||||
sess->tcp_halfs[SESSION_DIRECTION_C2S].assembler = tcp_reassembly_new(mgr->opts.tcp_reassembly_max_timeout, mgr->opts.tcp_reassembly_max_segments);
|
||||
sess->tcp_halfs[SESSION_DIRECTION_S2C].assembler = tcp_reassembly_new(mgr->opts.tcp_reassembly_max_timeout, mgr->opts.tcp_reassembly_max_segments);
|
||||
if (sess->tcp_halfs[SESSION_DIRECTION_C2S].assembler == NULL || sess->tcp_halfs[SESSION_DIRECTION_S2C].assembler == NULL)
|
||||
{
|
||||
tcp_clean(sess);
|
||||
tcp_clean(mgr, sess);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -479,15 +503,18 @@ static int duplicated_packet_bypass(struct session_manager *mgr, struct session
|
||||
* Session Manager
|
||||
******************************************************************************/
|
||||
|
||||
static void session_update(struct session *sess, enum session_state next_state, const struct packet *pkt, const struct tuple6 *key, enum session_direction dir, uint64_t now)
|
||||
static void session_update(struct session *sess, enum session_state next_state, const struct packet *pkt, const struct tuple6 *key, enum session_direction dir)
|
||||
{
|
||||
struct timespec real;
|
||||
clock_gettime(CLOCK_REALTIME, &real); // must be realtime
|
||||
|
||||
if (session_get_state(sess) == SESSION_STATE_INIT)
|
||||
{
|
||||
session_set_id(sess, id_generator_alloc());
|
||||
session_set_tuple(sess, key);
|
||||
session_set_tuple_direction(sess, dir);
|
||||
tuple6_to_str(key, sess->tuple_str, sizeof(sess->tuple_str));
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_START, now);
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_START, real.tv_sec);
|
||||
switch (key->ip_proto)
|
||||
{
|
||||
case IPPROTO_TCP:
|
||||
@@ -512,7 +539,7 @@ static void session_update(struct session *sess, enum session_state next_state,
|
||||
|
||||
session_set_current_packet(sess, pkt);
|
||||
session_set_current_direction(sess, dir);
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_LAST, now);
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_LAST, real.tv_sec);
|
||||
session_set_state(sess, next_state);
|
||||
}
|
||||
|
||||
@@ -588,10 +615,10 @@ static struct session *session_manager_new_tcp_session(struct session_manager *m
|
||||
sess->mgr_stat = &mgr->stat;
|
||||
|
||||
enum session_state next_state = session_transition_run(SESSION_STATE_INIT, TCP_SYN);
|
||||
session_update(sess, next_state, pkt, key, dir, now);
|
||||
session_update(sess, next_state, pkt, key, dir);
|
||||
session_transition_log(sess, SESSION_STATE_INIT, next_state, TCP_SYN);
|
||||
|
||||
if (tcp_init(sess, mgr->opts.tcp_reassembly_enable, mgr->opts.tcp_reassembly_max_timeout, mgr->opts.tcp_reassembly_max_segments) == -1)
|
||||
if (tcp_init(mgr, sess) == -1)
|
||||
{
|
||||
assert(0);
|
||||
session_pool_push(mgr->sess_pool, sess);
|
||||
@@ -634,7 +661,7 @@ static struct session *session_manager_new_udp_session(struct session_manager *m
|
||||
|
||||
enum session_direction dir = identify_direction_by_port(ntohs(key->src_port), ntohs(key->dst_port));
|
||||
enum session_state next_state = session_transition_run(SESSION_STATE_INIT, UDP_DATA);
|
||||
session_update(sess, next_state, pkt, key, dir, now);
|
||||
session_update(sess, next_state, pkt, key, dir);
|
||||
session_transition_log(sess, SESSION_STATE_INIT, next_state, UDP_DATA);
|
||||
|
||||
session_timer_update(mgr->sess_timer, sess, now + mgr->opts.udp_data_timeout);
|
||||
@@ -663,7 +690,7 @@ static int session_manager_update_tcp_session(struct session_manager *mgr, struc
|
||||
enum session_state next_state = session_transition_run(curr_state, inputs);
|
||||
|
||||
// update session
|
||||
session_update(sess, next_state, pkt, key, dir, now);
|
||||
session_update(sess, next_state, pkt, key, dir);
|
||||
session_transition_log(sess, curr_state, next_state, inputs);
|
||||
|
||||
// update tcp
|
||||
@@ -741,7 +768,7 @@ static int session_manager_update_udp_session(struct session_manager *mgr, struc
|
||||
enum session_direction dir = identify_direction_by_history(sess, key);
|
||||
enum session_state curr_state = session_get_state(sess);
|
||||
enum session_state next_state = session_transition_run(curr_state, UDP_DATA);
|
||||
session_update(sess, next_state, pkt, key, dir, now);
|
||||
session_update(sess, next_state, pkt, key, dir);
|
||||
session_transition_log(sess, curr_state, next_state, UDP_DATA);
|
||||
|
||||
if (session_get_state(sess) == SESSION_STATE_DISCARD)
|
||||
@@ -894,7 +921,7 @@ void session_manager_free_session(struct session_manager *mgr, struct session *s
|
||||
switch (session_get_type(sess))
|
||||
{
|
||||
case SESSION_TYPE_TCP:
|
||||
tcp_clean(sess);
|
||||
tcp_clean(mgr, sess);
|
||||
session_table_del(mgr->tcp_sess_table, session_get_tuple(sess));
|
||||
SESS_MGR_STAT_DEC(&mgr->stat, session_get_state(sess), tcp);
|
||||
mgr->stat.nr_tcp_sess_used--;
|
||||
|
||||
@@ -126,8 +126,8 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -214,8 +214,8 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -302,8 +302,8 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -432,8 +432,8 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -513,8 +513,8 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
|
||||
@@ -85,8 +85,8 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -164,8 +164,8 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) == NULL);
|
||||
@@ -254,8 +254,8 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -355,8 +355,8 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -452,8 +452,8 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -550,8 +550,8 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) == NULL);
|
||||
@@ -640,8 +640,8 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -730,8 +730,8 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) == NULL);
|
||||
|
||||
@@ -81,8 +81,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -112,8 +112,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -143,8 +143,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -174,8 +174,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 4);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -205,8 +205,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 5);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -236,8 +236,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66 + 1354);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 6);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -267,8 +267,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66 + 1354 + 385);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 7);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -298,8 +298,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66 + 1354 + 385);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 8);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -329,8 +329,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66 + 1354 + 385);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 9);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -360,8 +360,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66 + 1354 + 385 + 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 10);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -391,8 +391,8 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 66 + 1354 + 385 + 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1 + 1 + 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 11);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
|
||||
@@ -95,8 +95,8 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -185,8 +185,8 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74 + 1354);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) == NULL);
|
||||
|
||||
@@ -107,8 +107,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -203,8 +203,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -299,8 +299,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -446,8 +446,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -547,8 +547,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 74);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 3);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -637,8 +637,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1 + 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -726,8 +726,8 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 66);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
|
||||
@@ -80,8 +80,8 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -110,8 +110,8 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 550);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 2);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
|
||||
@@ -85,8 +85,8 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_C2S);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) != NULL);
|
||||
@@ -165,8 +165,8 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_BYTES_RX) == 550);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_C2S, STAT_RAW_PKTS_RX) == 0);
|
||||
EXPECT_TRUE(session_get_stat(sess, SESSION_DIRECTION_S2C, STAT_RAW_PKTS_RX) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST) == 1);
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_START));
|
||||
EXPECT_TRUE(session_get_timestamp(sess, SESSION_TIMESTAMP_LAST));
|
||||
EXPECT_TRUE(session_get_current_packet(sess) == &pkt);
|
||||
EXPECT_TRUE(session_get_current_direction(sess) == SESSION_DIRECTION_S2C);
|
||||
EXPECT_TRUE(session_get_1st_packet(sess, SESSION_DIRECTION_C2S) == NULL);
|
||||
|
||||
@@ -94,7 +94,7 @@ struct stellar_stat
|
||||
|
||||
// python3 -m pip install prettytable
|
||||
// python3 -m pip install jinja2
|
||||
// /opt/MESA/bin/fieldstat_exporter.py local -j log/stellar.fs4 -e -l --clear-screen
|
||||
// /opt/MESA/bin/fieldstat_exporter.py local -j log/stellar_fs4.json -e -l --clear-screen
|
||||
struct stellar_stat *stellar_stat_new(uint16_t nr_thread)
|
||||
{
|
||||
struct stellar_stat *stat = (struct stellar_stat *)calloc(1, sizeof(struct stellar_stat));
|
||||
@@ -135,19 +135,19 @@ struct stellar_stat *stellar_stat_new(uint16_t nr_thread)
|
||||
stat->ids.ctrl_tx_pkts = fieldstat_easy_register_counter(stat->fs, "ctrl_tx_pkts");
|
||||
stat->ids.ctrl_tx_bytes = fieldstat_easy_register_counter(stat->fs, "ctrl_tx_bytes");
|
||||
// TCP session
|
||||
stat->ids.nr_tcp_sess_used = fieldstat_easy_register_counter(stat->fs, "tcp_sess_used");
|
||||
stat->ids.nr_tcp_sess_opening = fieldstat_easy_register_counter(stat->fs, "tcp_sess_opening");
|
||||
stat->ids.nr_tcp_sess_active = fieldstat_easy_register_counter(stat->fs, "tcp_sess_active");
|
||||
stat->ids.nr_tcp_sess_closing = fieldstat_easy_register_counter(stat->fs, "tcp_sess_closing");
|
||||
stat->ids.nr_tcp_sess_discard = fieldstat_easy_register_counter(stat->fs, "tcp_sess_discard");
|
||||
stat->ids.nr_tcp_sess_closed = fieldstat_easy_register_counter(stat->fs, "tcp_sess_closed");
|
||||
stat->ids.nr_tcp_sess_used = fieldstat_easy_register_counter(stat->fs, "curr_tcp_sess_used");
|
||||
stat->ids.nr_tcp_sess_opening = fieldstat_easy_register_counter(stat->fs, "curr_tcp_sess_opening");
|
||||
stat->ids.nr_tcp_sess_active = fieldstat_easy_register_counter(stat->fs, "curr_tcp_sess_active");
|
||||
stat->ids.nr_tcp_sess_closing = fieldstat_easy_register_counter(stat->fs, "curr_tcp_sess_closing");
|
||||
stat->ids.nr_tcp_sess_discard = fieldstat_easy_register_counter(stat->fs, "curr_tcp_sess_discard");
|
||||
stat->ids.nr_tcp_sess_closed = fieldstat_easy_register_counter(stat->fs, "curr_tcp_sess_closed");
|
||||
// UDP session
|
||||
stat->ids.nr_udp_sess_used = fieldstat_easy_register_counter(stat->fs, "udp_sess_used");
|
||||
stat->ids.nr_udp_sess_opening = fieldstat_easy_register_counter(stat->fs, "udp_sess_opening");
|
||||
stat->ids.nr_udp_sess_active = fieldstat_easy_register_counter(stat->fs, "udp_sess_active");
|
||||
stat->ids.nr_udp_sess_closing = fieldstat_easy_register_counter(stat->fs, "udp_sess_closing");
|
||||
stat->ids.nr_udp_sess_discard = fieldstat_easy_register_counter(stat->fs, "udp_sess_discard");
|
||||
stat->ids.nr_udp_sess_closed = fieldstat_easy_register_counter(stat->fs, "udp_sess_closed");
|
||||
stat->ids.nr_udp_sess_used = fieldstat_easy_register_counter(stat->fs, "curr_udp_sess_used");
|
||||
stat->ids.nr_udp_sess_opening = fieldstat_easy_register_counter(stat->fs, "curr_udp_sess_opening");
|
||||
stat->ids.nr_udp_sess_active = fieldstat_easy_register_counter(stat->fs, "curr_udp_sess_active");
|
||||
stat->ids.nr_udp_sess_closing = fieldstat_easy_register_counter(stat->fs, "curr_udp_sess_closing");
|
||||
stat->ids.nr_udp_sess_discard = fieldstat_easy_register_counter(stat->fs, "curr_udp_sess_discard");
|
||||
stat->ids.nr_udp_sess_closed = fieldstat_easy_register_counter(stat->fs, "curr_udp_sess_closed");
|
||||
// Evicted session
|
||||
stat->ids.nr_tcp_sess_evicted = fieldstat_easy_register_counter(stat->fs, "tcp_sess_evicted");
|
||||
stat->ids.nr_udp_sess_evicted = fieldstat_easy_register_counter(stat->fs, "udp_sess_evicted");
|
||||
@@ -320,10 +320,10 @@ void stellar_stat_output(struct stellar_stat *stat)
|
||||
fieldstat_easy_output(stat->fs, &buff, &len);
|
||||
if (buff)
|
||||
{
|
||||
FILE *fp = fopen("/opt/tsg/stellar/log/stellar.fs4", "w+");
|
||||
FILE *fp = fopen("/opt/tsg/stellar/log/stellar_fs4.json", "w+");
|
||||
if (fp == NULL)
|
||||
{
|
||||
STAT_LOG_ERROR("failed to open file: %s, %s", "/opt/tsg/stellar/log/stellar.fs4", strerror(errno));
|
||||
STAT_LOG_ERROR("failed to open file: %s, %s", "/opt/tsg/stellar/log/stellar_fs4.json", strerror(errno));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ TEST(TIMESTAMP, GET)
|
||||
printf("last_sec: %lu, last_msec: %lu\n", last_sec, last_msec);
|
||||
printf("curr_sec: %lu, curr_msec: %lu\n", curr_sec, curr_msec);
|
||||
EXPECT_TRUE(curr_sec == last_sec);
|
||||
EXPECT_TRUE(curr_msec - last_msec >= 1 && curr_msec - last_msec <= 2);
|
||||
EXPECT_TRUE(curr_msec - last_msec >= 1);
|
||||
|
||||
usleep(1000 * 1000); // 1s
|
||||
timestamp_update();
|
||||
@@ -33,7 +33,7 @@ TEST(TIMESTAMP, GET)
|
||||
printf("last_sec: %lu, last_msec: %lu\n", last_sec, last_msec);
|
||||
printf("curr_sec: %lu, curr_msec: %lu\n", curr_sec, curr_msec);
|
||||
EXPECT_TRUE(curr_sec - last_sec == 1);
|
||||
EXPECT_TRUE(curr_msec - last_msec >= 1000 && curr_msec - last_msec <= 1001);
|
||||
EXPECT_TRUE(curr_msec - last_msec >= 1000);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
||||
@@ -6,6 +6,16 @@
|
||||
// 1 ms = 1000 us
|
||||
// 1 us = 1000 ns
|
||||
|
||||
/*
|
||||
* The maximum number of seconds that can be stored in the time_t value is 2147483647 –- a little over 68 years.
|
||||
*
|
||||
* struct timespec
|
||||
* {
|
||||
* time_t tv_sec; // seconds
|
||||
* long tv_nsec; // nanoseconds
|
||||
* };
|
||||
*/
|
||||
|
||||
struct timestamp
|
||||
{
|
||||
struct timespec ts;
|
||||
@@ -18,6 +28,17 @@ struct timestamp
|
||||
|
||||
void timestamp_update()
|
||||
{
|
||||
/*
|
||||
* CLOCK_MONOTONIC
|
||||
*
|
||||
* On Linux, that point corresponds to the number of sec‐
|
||||
* onds that the system has been running since it was booted.
|
||||
*
|
||||
* The CLOCK_MONOTONIC clock is not affected by discontinuous
|
||||
* jumps in the system time (e.g., if the system administrator
|
||||
* manually changes the clock), but is affected by the incremen‐
|
||||
* tal adjustments performed by adjtime(3) and NTP.
|
||||
*/
|
||||
clock_gettime(CLOCK_MONOTONIC, &g_timestamp.ts);
|
||||
|
||||
uint64_t current_timestamp_ms = g_timestamp.ts.tv_sec * 1000 + g_timestamp.ts.tv_nsec / 1000000;
|
||||
@@ -32,7 +53,6 @@ uint64_t timestamp_get_sec()
|
||||
return ATOMIC_READ(&g_timestamp.ts_in_sec);
|
||||
}
|
||||
|
||||
// TODO uint64_t 溢出
|
||||
uint64_t timestamp_get_msec()
|
||||
{
|
||||
return ATOMIC_READ(&g_timestamp.ts_in_msec);
|
||||
|
||||
Reference in New Issue
Block a user