Test stream announcements after foreground wake and packet reordering
This commit is contained in:
1 parent
919c3d76fe
commit
fc526d16c0
3 files changed
+89
-3
No files matched your search
@@ -284,6 +284,22 @@ static void check_peer_wake_new_link(int tcp, int active_window) {
|
||||
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "PASS peer wake via new link tcp=%d active_window=%d: phase cancelled, TX preserved", tcp, active_window);
|
||||
}
|
||||
|
||||
/* Потеря первого normal и запоздалый SLEEP исправляются следующим normal без ожидания конца сна. */
|
||||
static void check_peer_wake_reordered(void) {
|
||||
setup(); struct ETCP_CONN* conn = ready_conn(0); struct ETCP_LINK* link = conn->links;
|
||||
receive_keepalive(link, KA_FLAG_SLEEP, 0);
|
||||
test_clock_run_for(inst.ua, 2000); // первый normal потерян в сети
|
||||
CHECK(conn->peer_sleep_phase && conn->peer_phase_timer);
|
||||
receive_keepalive(link, 0, 0);
|
||||
CHECK(!conn->peer_sleep_phase && !conn->peer_phase_timer && link->keepalive_timer);
|
||||
receive_keepalive(link, KA_FLAG_SLEEP, 0); // старый анонс пришёл после пробуждения
|
||||
CHECK(conn->peer_sleep_phase && conn->peer_phase_timer);
|
||||
test_clock_run_for(inst.ua, 2000);
|
||||
receive_keepalive(link, 0, 0);
|
||||
CHECK(!conn->peer_sleep_phase && !conn->peer_phase_timer && link->keepalive_timer);
|
||||
teardown(); DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "PASS normal keepalive restores awake state after loss and reordered sleep");
|
||||
}
|
||||
|
||||
/* Мягкое закрытие работает без NCD entry; KEEP_ALIVE сохраняет транспорт дольше прежних 5 секунд. */
|
||||
static void check_graceful(void) {
|
||||
setup(); struct ETCP_CONN* conn = ready_conn(0);
|
||||
@@ -320,6 +336,7 @@ int main(void) {
|
||||
for (int tcp = 0; tcp <= 1; tcp++) for (int active = 0; active <= 1; active++) {
|
||||
check_peer_wake_new_link(tcp, active); CHECK(u_get_allocated_count() == baseline);
|
||||
}
|
||||
check_peer_wake_reordered(); CHECK(u_get_allocated_count() == baseline);
|
||||
check_remote_down(); CHECK(u_get_allocated_count() == baseline);
|
||||
check_graceful(); CHECK(u_get_allocated_count() == baseline);
|
||||
test_clock_finish(); return 0;
|
||||
|
||||
Reference in new issue
Block a user