Browse Source

tests: detect avatar BUSY ACK repeats with ACK counter

master
evgeny 2 days ago
parent
commit
ec66a7e4f5
  1. 7
      tests/test_group_avatar.c

7
tests/test_group_avatar.c

@ -130,14 +130,15 @@ int main(void) {
// Проверяем остановку доставки и повтор BUSY ACK, затем сразу переходим к restart.
struct ETCP_ROUTER_CONN* sender = etcp_router_conn_get(nodes[0], GROUP, nodes[1]->node_id, ETCP_RT_ID_GROUP_AVATAR);
struct ETCP_ROUTER_CONN* receiver = etcp_router_conn_get(nodes[1], GROUP, nodes[0]->node_id, ETCP_RT_ID_GROUP_AVATAR);
uint64_t hold_started = get_time_tb(), first_busy_ack = 0;
uint64_t hold_started = get_time_tb();
uint32_t first_busy_ack = 0;
int busy_repeated = 0;
deadline = hold_started + 20000;
while (get_time_tb() < deadline) {
uasync_poll(ua, 2);
if (!receiver->receive_blocked || !sender->peer_receive_blocked) continue;
if (!first_busy_ack) first_busy_ack = sender->last_ack_changed_tb;
else if (sender->last_ack_changed_tb != first_busy_ack) { busy_repeated = 1; break; }
if (!first_busy_ack) first_busy_ack = sender->c_stale_ack;
else if (sender->c_stale_ack != first_busy_ack) { busy_repeated = 1; break; }
}
if (!busy_repeated) DEBUG_ERROR(DEBUG_CATEGORY_CHAT, "test group avatar: BUSY ACK repeat missing blocked=%u peer_blocked=%u",
receiver->receive_blocked, sender->peer_receive_blocked);

Loading…
Cancel
Save