2024-10-30 17:00:20 +08:00
|
|
|
#include "test_utils.h"
|
2023-12-12 18:41:53 +08:00
|
|
|
|
2024-03-29 19:44:20 +08:00
|
|
|
TEST(SESSION_TIMER, EXPIRE)
|
2023-12-12 18:41:53 +08:00
|
|
|
{
|
2024-03-29 19:44:20 +08:00
|
|
|
struct session *sess = NULL;
|
|
|
|
|
struct session sess1;
|
|
|
|
|
struct session sess2;
|
|
|
|
|
struct session sess3;
|
|
|
|
|
struct session_timer *timer = session_timer_new(100);
|
2023-12-12 18:41:53 +08:00
|
|
|
EXPECT_TRUE(timer != NULL);
|
|
|
|
|
|
2024-03-29 19:44:20 +08:00
|
|
|
session_init(&sess1);
|
|
|
|
|
session_init(&sess2);
|
|
|
|
|
session_init(&sess3);
|
2023-12-12 18:41:53 +08:00
|
|
|
|
2024-03-29 19:44:20 +08:00
|
|
|
session_timer_add(timer, &sess1, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess2, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess3, 100 + 10);
|
|
|
|
|
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 4);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == &sess1);
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == &sess2);
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 9);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 10);
|
|
|
|
|
EXPECT_TRUE(sess == &sess3);
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 10);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
2023-12-12 18:41:53 +08:00
|
|
|
|
2024-03-08 14:20:36 +08:00
|
|
|
session_timer_free(timer);
|
2023-12-12 18:41:53 +08:00
|
|
|
}
|
|
|
|
|
|
2024-03-29 19:44:20 +08:00
|
|
|
TEST(SESSION_TIMER, BEFORE_EXPIRE_DEL)
|
2023-12-12 18:41:53 +08:00
|
|
|
{
|
|
|
|
|
struct session *sess = NULL;
|
|
|
|
|
struct session sess1;
|
|
|
|
|
struct session sess2;
|
|
|
|
|
struct session sess3;
|
2024-03-29 19:44:20 +08:00
|
|
|
struct session_timer *timer = session_timer_new(1);
|
2023-12-12 18:41:53 +08:00
|
|
|
EXPECT_TRUE(timer != NULL);
|
|
|
|
|
|
|
|
|
|
session_init(&sess1);
|
|
|
|
|
session_init(&sess2);
|
|
|
|
|
session_init(&sess3);
|
2024-03-29 19:44:20 +08:00
|
|
|
|
|
|
|
|
session_timer_add(timer, &sess1, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess2, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess3, 100 + 10);
|
|
|
|
|
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 4);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// del sess1
|
|
|
|
|
session_timer_del(timer, &sess1);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == &sess2);
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 10);
|
|
|
|
|
EXPECT_TRUE(sess == &sess3);
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 10);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
2023-12-12 18:41:53 +08:00
|
|
|
|
2024-03-08 14:20:36 +08:00
|
|
|
session_timer_free(timer);
|
2023-12-12 18:41:53 +08:00
|
|
|
}
|
|
|
|
|
|
2024-03-29 19:44:20 +08:00
|
|
|
TEST(SESSION_TIMER, AFTER_EXPIRE_DEL)
|
2023-12-12 18:41:53 +08:00
|
|
|
{
|
|
|
|
|
struct session *sess = NULL;
|
|
|
|
|
struct session sess1;
|
|
|
|
|
struct session sess2;
|
|
|
|
|
struct session sess3;
|
2024-03-29 19:44:20 +08:00
|
|
|
struct session_timer *timer = session_timer_new(1);
|
2023-12-12 18:41:53 +08:00
|
|
|
EXPECT_TRUE(timer != NULL);
|
|
|
|
|
|
|
|
|
|
session_init(&sess1);
|
|
|
|
|
session_init(&sess2);
|
|
|
|
|
session_init(&sess3);
|
2024-03-29 19:44:20 +08:00
|
|
|
|
|
|
|
|
session_timer_add(timer, &sess1, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess2, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess3, 100 + 10);
|
|
|
|
|
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == &sess1);
|
|
|
|
|
// del sess2
|
|
|
|
|
session_timer_del(timer, &sess2);
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 10);
|
|
|
|
|
EXPECT_TRUE(sess == &sess3);
|
2023-12-12 18:41:53 +08:00
|
|
|
|
2024-03-08 14:20:36 +08:00
|
|
|
session_timer_free(timer);
|
2023-12-12 18:41:53 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(SESSION_TIMER, BEFORE_EXPIRE_UPDATE)
|
|
|
|
|
{
|
|
|
|
|
struct session *sess = NULL;
|
|
|
|
|
struct session sess1;
|
|
|
|
|
struct session sess2;
|
2024-03-29 19:44:20 +08:00
|
|
|
struct session_timer *timer = session_timer_new(100);
|
2023-12-12 18:41:53 +08:00
|
|
|
EXPECT_TRUE(timer != NULL);
|
|
|
|
|
|
|
|
|
|
session_init(&sess1);
|
|
|
|
|
session_init(&sess2);
|
2024-03-29 19:44:20 +08:00
|
|
|
|
|
|
|
|
session_timer_add(timer, &sess1, 100 + 5);
|
|
|
|
|
session_timer_add(timer, &sess2, 100 + 10);
|
|
|
|
|
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 4);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == &sess1);
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 5);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// update sess2
|
|
|
|
|
session_timer_update(timer, &sess2, 100 + 20);
|
|
|
|
|
// not expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 19);
|
|
|
|
|
EXPECT_TRUE(sess == NULL);
|
|
|
|
|
// expire
|
|
|
|
|
sess = session_timer_expire(timer, 100 + 20);
|
|
|
|
|
EXPECT_TRUE(sess == &sess2);
|
2023-12-12 18:41:53 +08:00
|
|
|
|
2024-03-08 14:20:36 +08:00
|
|
|
session_timer_free(timer);
|
2023-12-12 18:41:53 +08:00
|
|
|
}
|
|
|
|
|
|
2024-01-25 16:08:55 +08:00
|
|
|
TEST(SESSION_TIMER, NEXT_EXPIRE_INTERVAL)
|
|
|
|
|
{
|
|
|
|
|
struct session sess1;
|
|
|
|
|
struct session sess2;
|
2024-03-29 19:44:20 +08:00
|
|
|
struct session_timer *timer = session_timer_new(100);
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(timer != NULL);
|
|
|
|
|
|
|
|
|
|
session_init(&sess1);
|
|
|
|
|
session_init(&sess2);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) == UINT64_MAX);
|
|
|
|
|
|
2024-03-29 19:44:20 +08:00
|
|
|
session_timer_add(timer, &sess1, 1000);
|
|
|
|
|
session_timer_add(timer, &sess2, 1000);
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) < UINT64_MAX);
|
|
|
|
|
|
2024-03-14 10:56:09 +08:00
|
|
|
EXPECT_TRUE(session_timer_expire(timer, 900) == NULL);
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) <= 1000 - 900);
|
|
|
|
|
|
2024-03-14 10:56:09 +08:00
|
|
|
EXPECT_TRUE(session_timer_expire(timer, 950) == NULL);
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) <= 1000 - 950);
|
|
|
|
|
|
2024-03-14 10:56:09 +08:00
|
|
|
EXPECT_TRUE(session_timer_expire(timer, 980) == NULL);
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) <= 1000 - 980);
|
|
|
|
|
|
2024-03-14 10:56:09 +08:00
|
|
|
EXPECT_TRUE(session_timer_expire(timer, 990) == NULL);
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) <= 1000 - 990);
|
|
|
|
|
|
2024-03-14 10:56:09 +08:00
|
|
|
EXPECT_TRUE(session_timer_expire(timer, 1010));
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) == 0);
|
|
|
|
|
|
2024-03-14 10:56:09 +08:00
|
|
|
EXPECT_TRUE(session_timer_expire(timer, 1010));
|
2024-01-25 16:08:55 +08:00
|
|
|
EXPECT_TRUE(session_timer_next_expire_interval(timer) == UINT64_MAX);
|
|
|
|
|
|
2024-03-08 14:20:36 +08:00
|
|
|
session_timer_free(timer);
|
2024-01-25 16:08:55 +08:00
|
|
|
}
|
|
|
|
|
|
2023-12-12 18:41:53 +08:00
|
|
|
int main(int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
|
|
|
return RUN_ALL_TESTS();
|
|
|
|
|
}
|