summaryrefslogtreecommitdiff
path: root/infra/session_manager/test/gtest_session_transition.cpp
blob: f9c9ed250a7bd7219b7bd3438f6cff87c2047442 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "test_utils.h"

TEST(SESSION_TRANSITION, RUN)
{
    session_transition_init();

    EXPECT_TRUE(session_transition_run(SESSION_STATE_INIT, NONE) == SESSION_STATE_INIT);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_INIT, TCP_SYN) == SESSION_STATE_OPENING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_INIT, TCP_SYN_ACK) == SESSION_STATE_OPENING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_INIT, UDP_DATA) == SESSION_STATE_OPENING);

    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, NONE) == SESSION_STATE_OPENING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, TCP_DATA) == SESSION_STATE_ACTIVE);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, UDP_DATA) == SESSION_STATE_ACTIVE);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, TCP_FIN) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, TCP_RST) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, TIMEOUT) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, USER_CLOSE) == SESSION_STATE_DISCARD);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, LRU_EVICT) == SESSION_STATE_CLOSED);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED);

    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, NONE) == SESSION_STATE_ACTIVE);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, TCP_FIN) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, TCP_RST) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, TIMEOUT) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, USER_CLOSE) == SESSION_STATE_DISCARD);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, LRU_EVICT) == SESSION_STATE_CLOSED);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED);

    EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, NONE) == SESSION_STATE_CLOSING);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, USER_CLOSE) == SESSION_STATE_DISCARD);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, LRU_EVICT) == SESSION_STATE_CLOSED);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, TIMEOUT) == SESSION_STATE_CLOSED);

    EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, NONE) == SESSION_STATE_DISCARD);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, LRU_EVICT) == SESSION_STATE_CLOSED);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED);
    EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, TIMEOUT) == SESSION_STATE_CLOSED);
}

int main(int argc, char **argv)
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}