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. // Проверяем остановку доставки и повтор 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* 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); 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; int busy_repeated = 0;
deadline = hold_started + 20000; deadline = hold_started + 20000;
while (get_time_tb() < deadline) { while (get_time_tb() < deadline) {
uasync_poll(ua, 2); uasync_poll(ua, 2);
if (!receiver->receive_blocked || !sender->peer_receive_blocked) continue; if (!receiver->receive_blocked || !sender->peer_receive_blocked) continue;
if (!first_busy_ack) first_busy_ack = sender->last_ack_changed_tb; if (!first_busy_ack) first_busy_ack = sender->c_stale_ack;
else if (sender->last_ack_changed_tb != first_busy_ack) { busy_repeated = 1; break; } 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", 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); receiver->receive_blocked, sender->peer_receive_blocked);

Loading…
Cancel
Save