This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tango-tsg-service-chaining-…/common/test/gtest_health_check_table.cpp
2024-09-27 19:11:47 +08:00

218 lines
8.0 KiB
C++

#include <gtest/gtest.h>
#include <arpa/inet.h>
#include "bfd.h"
#include "policy.h"
#include "health_check.h"
uuid_t sf_uuid1;
uuid_t sf_uuid2;
uuid_t sf_uuid3;
uuid_t sf_uuid4;
uuid_t sf_uuid5;
uuid_t sf_uuid6;
TEST(HEALTH_CHECK_TABLE, INSERT)
{
uint64_t session_id1 = 0;
uint64_t session_id2 = 0;
uint64_t session_id3 = 0;
uint64_t session_id4 = 0;
uint64_t session_id5 = 0;
// TEST Create
health_check_session_init("./sce.conf", NULL);
// TEST Insert
struct health_check policy1;
memset(&policy1, 0, sizeof(policy1));
policy1.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy1.address, sizeof(policy1.address), "1.1.1.1");
policy1.retires = 11;
policy1.interval_ms = 111;
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
policy2.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy2.address, sizeof(policy2.address), "2.2.2.2");
policy2.retires = 22;
policy2.interval_ms = 222;
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
policy3.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy3.address, sizeof(policy3.address), "2001:0db8:0000:0000:0000:8a2e:0370:7334");
policy3.retires = 33;
policy3.interval_ms = 333;
EXPECT_TRUE((session_id4 = health_check_session_add(&sf_uuid4, 0, &policy3)) > 0);
EXPECT_TRUE((session_id5 = health_check_session_add(&sf_uuid5, 0, &policy3)) > 0);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id4, &sf_uuid4, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id5, &sf_uuid5, 0) == 0);
}
TEST(HEALTH_CHECK_TABLE, GET_STATUS)
{
uint64_t session_id1 = 0;
uint64_t session_id2 = 0;
uint64_t session_id3 = 0;
// TEST Insert
struct health_check policy1;
memset(&policy1, 0, sizeof(policy1));
policy1.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy1.address, sizeof(policy1.address), "4.4.4.4");
policy1.retires = 5;
policy1.interval_ms = 300;
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
policy2.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy2.address, sizeof(policy2.address), "5.5.5.5");
policy2.retires = 5;
policy2.interval_ms = 300;
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
policy3.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy3.address, sizeof(policy3.address), "6.6.6.6");
policy3.retires = 5;
policy3.interval_ms = 300;
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy3)) > 0);
// TEST get status
EXPECT_TRUE(health_check_session_get_status(session_id1) == 0);
EXPECT_TRUE(health_check_session_get_status(session_id2) == 0);
EXPECT_TRUE(health_check_session_get_status(session_id3) == 0);
EXPECT_TRUE(health_check_session_get_status(7) == -1);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
}
TEST(HEALTH_CHECK_TABLE, SET_STATUS)
{
uint64_t session_id1 = 0;
uint64_t session_id2 = 0;
uint64_t session_id3 = 0;
// TEST Insert
struct health_check policy1;
memset(&policy1, 0, sizeof(policy1));
policy1.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy1.address, sizeof(policy1.address), "7.7.7.7");
policy1.retires = 5;
policy1.interval_ms = 300;
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
policy2.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy2.address, sizeof(policy2.address), "8.8.8.8");
policy2.retires = 5;
policy2.interval_ms = 300;
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
policy3.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy3.address, sizeof(policy3.address), "9.9.9.9");
policy3.retires = 5;
policy3.interval_ms = 300;
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy3)) > 0);
// TEST get status
EXPECT_TRUE(health_check_session_get_status(session_id1) == 0);
EXPECT_TRUE(health_check_session_get_status(session_id2) == 0);
EXPECT_TRUE(health_check_session_get_status(session_id3) == 0);
// TEST set status
EXPECT_TRUE(health_check_session_set_status(session_id1, 1) == 0);
EXPECT_TRUE(health_check_session_set_status(session_id2, 1) == 0);
EXPECT_TRUE(health_check_session_set_status(session_id3, 1) == 0);
EXPECT_TRUE(health_check_session_set_status(10, 1) == -1);
// TEST get status
EXPECT_TRUE(health_check_session_get_status(session_id1) == 1);
EXPECT_TRUE(health_check_session_get_status(session_id2) == 1);
EXPECT_TRUE(health_check_session_get_status(session_id3) == 1);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
}
#if 0
TEST(HEALTH_CHECK_TABLE, DELETE)
{
uint64_t session_id1 = 0;
uint64_t session_id2 = 0;
uint64_t session_id3 = 0;
uint64_t session_id4 = 0;
uint64_t session_id5 = 0;
uint64_t session_id6 = 0;
// TEST Insert
struct health_check policy1;
memset(&policy1, 0, sizeof(policy1));
policy1.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy1.address, sizeof(policy1.address), "10.10.10.10");
policy1.retires = 5;
policy1.interval_ms = 300;
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
policy2.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy2.address, sizeof(policy2.address), "11.11.11.11");
policy2.retires = 5;
policy2.interval_ms = 300;
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
policy3.method = HEALTH_CHECK_METHOD_BFD;
snprintf(policy3.address, sizeof(policy3.address), "12.12.12.12");
policy3.retires = 5;
policy3.interval_ms = 300;
EXPECT_TRUE((session_id4 = health_check_session_add(&sf_uuid4, 0, &policy3)) > 0);
EXPECT_TRUE((session_id5 = health_check_session_add(&sf_uuid5, 0, &policy3)) > 0);
EXPECT_TRUE((session_id6 = health_check_session_add(&sf_uuid6, 0, &policy3)) > 0);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id5, &sf_uuid4, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id5, &sf_uuid5, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, &sf_uuid6, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, &sf_uuid6, 0) == -1);
}
#endif
int main(int argc, char **argv)
{
uuid_parse("00000000-0000-0000-0000-000000000001", sf_uuid1);
uuid_parse("00000000-0000-0000-0000-000000000002", sf_uuid2);
uuid_parse("00000000-0000-0000-0000-000000000003", sf_uuid3);
uuid_parse("00000000-0000-0000-0000-000000000004", sf_uuid4);
uuid_parse("00000000-0000-0000-0000-000000000005", sf_uuid5);
uuid_parse("00000000-0000-0000-0000-000000000006", sf_uuid6);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}