78 lines
3.3 KiB
C++
78 lines
3.3 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include "sce.h"
|
|
#include "policy.h"
|
|
#include "raw_packet.h"
|
|
#include "global_metrics.h"
|
|
|
|
unsigned char data1[] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xa4, 0xc6, 0x4f, 0x3b, 0xb3, 0x9a, 0x81, 0x00, 0x66, 0x58, 0x81, 0x00, 0x61, 0xf9, 0x08, 0x00, 0x45, 0xb8, 0x00, 0x94,
|
|
0xe8, 0x58, 0x00, 0x00, 0xff, 0x04, 0x11, 0x48, 0x45, 0x43, 0x23, 0x92, 0x29, 0xca, 0x2e, 0x6e, 0x45, 0xb8, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0xfe, 0x11,
|
|
0xde, 0x84, 0x0a, 0x0a, 0x64, 0x19, 0x0a, 0x0a, 0x65, 0x02, 0xf3, 0x9f, 0x42, 0x68, 0x00, 0x6c, 0x4b, 0x9a, 0x00, 0x02, 0x00, 0x00, 0x04, 0x73, 0x6c, 0x10,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
|
|
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
|
|
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
|
|
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd};
|
|
|
|
TEST(POLICY, SELECTED_CHAINING_LIFE_CYCLE)
|
|
{
|
|
struct selected_chaining *chaining = NULL;
|
|
|
|
chaining = selected_chaining_create(128, 1, (char *)"1.1.1.1 11 2.2.2.2 22");
|
|
EXPECT_TRUE(chaining != nullptr);
|
|
|
|
selected_chaining_destory(chaining);
|
|
}
|
|
|
|
TEST(POLICY, POLICY_ENFORCER_LIFE_CYCLE)
|
|
{
|
|
struct global_metrics g_metrics;
|
|
struct thread_ctx t_ctx;
|
|
struct session_ctx s_ctx;
|
|
|
|
t_ctx.ref_metrics = &g_metrics;
|
|
s_ctx.ref_thread_ctx = &t_ctx;
|
|
s_ctx.session_id = 1;
|
|
s_ctx.session_addr = (char *)"1.1.1.1 11 2.2.2.2 22";
|
|
|
|
struct raw_pkt_parser handler;
|
|
raw_packet_parser_init(&handler, 0, LAYER_TYPE_ALL, 8);
|
|
|
|
const void *payload = raw_packet_parser_parse(&handler, (const void *)data1, sizeof(data1));
|
|
EXPECT_TRUE(payload != nullptr);
|
|
EXPECT_TRUE((char *)payload - (char *)&data1 == 70);
|
|
|
|
const char *profile = "./test_resource/sce.conf";
|
|
struct policy_enforcer *enforcer = policy_enforcer_create("SCE", profile, 8, NULL);
|
|
EXPECT_TRUE(enforcer != nullptr);
|
|
EXPECT_TRUE(policy_enforcer_register(enforcer) == 0);
|
|
|
|
int dir_is_i2e = 1;
|
|
struct selected_chainings chainings;
|
|
chainings.chaining_raw = selected_chaining_create(64, s_ctx.session_id, s_ctx.session_addr);
|
|
chainings.chaining_decrypted = selected_chaining_create(64, s_ctx.session_id, s_ctx.session_addr);
|
|
policy_enforce_select_chainings(enforcer, &chainings, &s_ctx, &handler, 1, dir_is_i2e);
|
|
policy_enforce_select_chainings(enforcer, &chainings, &s_ctx, &handler, 2, dir_is_i2e);
|
|
policy_enforce_select_chainings(enforcer, &chainings, &s_ctx, &handler, 11, dir_is_i2e);
|
|
policy_enforce_select_chainings(enforcer, &chainings, &s_ctx, &handler, 12, dir_is_i2e);
|
|
|
|
selected_chaining_dump(chainings.chaining_raw);
|
|
selected_chaining_bref(chainings.chaining_raw);
|
|
selected_chaining_destory(chainings.chaining_raw);
|
|
|
|
selected_chaining_dump(chainings.chaining_decrypted);
|
|
selected_chaining_bref(chainings.chaining_decrypted);
|
|
selected_chaining_destory(chainings.chaining_decrypted);
|
|
|
|
printf("Before Sleep\n");
|
|
sleep(15);
|
|
printf("After Sleep\n");
|
|
|
|
policy_enforcer_destory(enforcer);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
} |