diff --git a/tests/test_call.c b/tests/test_call.c index 1f362258..7fbbba29 100644 --- a/tests/test_call.c +++ b/tests/test_call.c @@ -872,6 +872,7 @@ static void call_tick(void* arg) { break; case P_POLICY_START: { DEBUG_INFO(DEBUG_CATEGORY_CALL, "phone policy starting scenario=%d", t->policy_index); + g_drop_acks[IDX_A] = g_drop_acks[IDX_B] = 0; static const struct { int state; unsigned policy; } policies[] = { {0, CALL_POLICY_WARN_PHONE}, {2, CALL_POLICY_PUBLISH_PHONE}, {2, CALL_POLICY_WARN_PHONE}, {2, CALL_POLICY_WARN_PHONE}, {2, CALL_POLICY_WARN_PHONE | CALL_POLICY_REJECT_PHONE}, diff --git a/tests/test_radio.c b/tests/test_radio.c index f7d203f5..4a66e8a9 100644 --- a/tests/test_radio.c +++ b/tests/test_radio.c @@ -126,7 +126,7 @@ static void call_packet_loss(struct ETCP_CONN* conn, struct ll_entry* entry) { int cmd = entry->dgram[ROUTER_SVC_PAYLOAD_OFF]; if ((idx == IDX_A && cmd == 3 && g_drop_result-- > 0) || (idx == IDX_C && cmd == 4 && g_drop_ack-- > 0) || (idx == IDX_C && cmd == 6 && g_drop_force-- > 0)) { - DEBUG_INFO(DEBUG_CATEGORY_RADIO, "test drops radio result/ACK dst=%d command=%d", idx, cmd); + DEBUG_INFO(DEBUG_CATEGORY_RADIO, "test drops radio signaling dst=%d command=%d", idx, cmd); queue_dgram_free(entry); queue_entry_free(entry); return; } g_call_recv[idx](conn, entry); @@ -603,6 +603,8 @@ static void rad_tick(void* arg) { t->result = 2; uasync_stop(t->ua); return; } DEBUG_INFO(DEBUG_CATEGORY_RADIO, "test radio calls passed: 2s/60s, accept/decline/cancel/busy, lost result/ACK, idle has no timer"); + // Проверка idle пересоздала сервис и его binding; снова включаем потерю пакетов приложения. + for (int i = 0; i < 3; ++i) t->inst[i]->router_bindings.callbacks[ETCP_RT_ID_RADIO_CALL] = call_packet_loss; call_set_phone_state(C, 2, CALL_POLICY_WARN_PHONE); radio_action(A, 108, RADIO_CALL_START, nc); ++t->call_step; }