Browse Source

Isolate packet loss fixtures between call policy scenarios

stream-multiview
evgeny 6 days ago
parent
commit
5a318f6f60
  1. 1
      tests/test_call.c
  2. 4
      tests/test_radio.c

1
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},

4
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;
}

Loading…
Cancel
Save