292 lines
10 KiB
C++
292 lines
10 KiB
C++
#include <gtest/gtest.h>
|
|
#include <arpa/inet.h>
|
|
|
|
#include "session_table.h"
|
|
|
|
TEST(STREAM_TABLE, INSERT)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == -1);
|
|
EXPECT_TRUE(session_table_count(table) == 1);
|
|
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == -1);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, SEARCH_BY_ID)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
struct four_tuple addr3;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr3, "1.1.1.1", 1111, "2.2.2.2", 2222);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Search By Session ID
|
|
char *val = NULL;
|
|
val = (char *)session_table_search_by_id(table, 1);
|
|
EXPECT_TRUE(val != nullptr);
|
|
EXPECT_STREQ((const char *)val, "HELLO");
|
|
val = (char *)session_table_search_by_id(table, 2);
|
|
EXPECT_TRUE(val != nullptr);
|
|
EXPECT_STREQ((const char *)val, "WORLD");
|
|
val = (char *)session_table_search_by_id(table, 3);
|
|
EXPECT_TRUE(val == nullptr);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, SEARCH_BY_ADDR)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
struct four_tuple addr3;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr3, "1.1.1.1", 1111, "2.2.2.2", 2222);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Search By Session Addr
|
|
char *val = NULL;
|
|
val = (char *)session_table_search_by_addr(table, &addr1);
|
|
EXPECT_TRUE(val != nullptr);
|
|
EXPECT_STREQ((const char *)val, "HELLO");
|
|
val = (char *)session_table_search_by_addr(table, &addr2);
|
|
EXPECT_TRUE(val != nullptr);
|
|
EXPECT_STREQ((const char *)val, "WORLD");
|
|
val = (char *)session_table_search_by_addr(table, &addr3);
|
|
EXPECT_TRUE(val == nullptr);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, SEARCH_BY_REVERSE_ADDR)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
struct four_tuple addr1_reverse;
|
|
struct four_tuple addr2_reverse;
|
|
four_tuple_reverse(&addr1, &addr1_reverse);
|
|
four_tuple_reverse(&addr2, &addr2_reverse);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Search By Session Reverse Addr
|
|
char *val = NULL;
|
|
val = (char *)session_table_search_by_addr(table, &addr1_reverse);
|
|
EXPECT_TRUE(val != nullptr);
|
|
EXPECT_STREQ((const char *)val, "HELLO");
|
|
val = (char *)session_table_search_by_addr(table, &addr2_reverse);
|
|
EXPECT_TRUE(val != nullptr);
|
|
EXPECT_STREQ((const char *)val, "WORLD");
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, DELETE_BY_ID)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
struct four_tuple addr1_reverse;
|
|
struct four_tuple addr2_reverse;
|
|
four_tuple_reverse(&addr1, &addr1_reverse);
|
|
four_tuple_reverse(&addr2, &addr2_reverse);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Delete By Session ID
|
|
EXPECT_TRUE(session_table_delete_by_id(table, 1) == 0);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 1) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1_reverse) == NULL);
|
|
EXPECT_TRUE(session_table_count(table) == 1);
|
|
|
|
EXPECT_TRUE(session_table_delete_by_id(table, 2) == 0);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 2) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2_reverse) == NULL);
|
|
EXPECT_TRUE(session_table_count(table) == 0);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, DELETE_BY_ADDR)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
struct four_tuple addr1_reverse;
|
|
struct four_tuple addr2_reverse;
|
|
four_tuple_reverse(&addr1, &addr1_reverse);
|
|
four_tuple_reverse(&addr2, &addr2_reverse);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Delete By Session Addr
|
|
EXPECT_TRUE(session_table_delete_by_addr(table, &addr1) == 0);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 1) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1_reverse) == NULL);
|
|
EXPECT_TRUE(session_table_count(table) == 1);
|
|
|
|
EXPECT_TRUE(session_table_delete_by_addr(table, &addr2) == 0);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 2) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2_reverse) == NULL);
|
|
EXPECT_TRUE(session_table_count(table) == 0);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, DELETE_BY_REVERSE_ADDR)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
struct four_tuple addr1_reverse;
|
|
struct four_tuple addr2_reverse;
|
|
four_tuple_reverse(&addr1, &addr1_reverse);
|
|
four_tuple_reverse(&addr2, &addr2_reverse);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_count(table) == 2);
|
|
|
|
// TEST Delete By Session Reverse Addr
|
|
EXPECT_TRUE(session_table_delete_by_addr(table, &addr1_reverse) == 0);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 1) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1_reverse) == NULL);
|
|
EXPECT_TRUE(session_table_count(table) == 1);
|
|
|
|
EXPECT_TRUE(session_table_delete_by_addr(table, &addr2_reverse) == 0);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 2) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2) == NULL);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2_reverse) == NULL);
|
|
EXPECT_TRUE(session_table_count(table) == 0);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
TEST(STREAM_TABLE, RESET)
|
|
{
|
|
// TEST Create
|
|
struct session_table *table = session_table_create();
|
|
EXPECT_TRUE(table != nullptr);
|
|
|
|
char *val_hello = strdup("HELLO");
|
|
char *val_world = strdup("WORLD");
|
|
struct four_tuple addr1;
|
|
SET_HUMAN_READABLE_IPV4_TUPLE(&addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
|
struct four_tuple addr2;
|
|
SET_HUMAN_READABLE_IPV6_TUPLE(&addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
|
|
|
// TEST Insert
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == -1);
|
|
EXPECT_TRUE(session_table_count(table) == 1);
|
|
|
|
// TEST Reset
|
|
session_table_reset(table);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 1) == nullptr);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr1) == nullptr);
|
|
EXPECT_TRUE(session_table_count(table) == 0);
|
|
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == 0);
|
|
EXPECT_TRUE(session_table_insert(table, 2, &addr2, val_world, free) == -1);
|
|
EXPECT_TRUE(session_table_search_by_id(table, 2) != nullptr);
|
|
EXPECT_TRUE(session_table_search_by_addr(table, &addr2) != nullptr);
|
|
EXPECT_TRUE(session_table_count(table) == 1);
|
|
|
|
// TEST Destory
|
|
session_table_destory(table);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
} |