Passa al contenuto principale

Smoke E2E Single Call

Runbook operativo per TASK-236. Il runner consegna solo artefatti versionabili; lo smoke runtime va eseguito manualmente dal Mac dell'utente dopo il redeploy staging e con Tailscale attivo.

Pre-flight

ssh root@akira-mgmt-01-staging 'docker ps | grep -E "backend|cdr-worker|nats"'

ssh root@akira-sip-01-staging '
systemctl status kamailio --no-pager | head -5
ss -lunp | grep 5060
kamcmd dispatcher.list
'

ssh root@akira-rtp-01-staging '
systemctl status rtpengine --no-pager | head -5
echo "ping" | timeout 2 nc -u 127.0.0.1 22222 || true
'

ssh root@akira-fs-01-staging '
systemctl status freeswitch --no-pager | head -5
fs_cli -x "sofia status profile internal" | head -10
fs_cli -x "show dialplan" | grep loopback-terminator
'

ssh root@akira-sipp-01-staging '
which sipp
test -f /opt/akira/sipp/scenarios/smoke_e2e_single.xml
test -f /opt/akira/sipp/scenarios/smoke_target.csv
'

ssh root@akira-db-01-staging '
sudo -u postgres psql -d akira -c "
SELECT count(*) FROM cdr WHERE answered_at > NOW() - INTERVAL '\''1 hour'\'';
"
'

Run

ssh root@akira-sipp-01-staging '
cd /opt/akira/sipp
sipp -sf scenarios/smoke_e2e_single.xml \
-inf smoke_target.csv \
-m 1 \
-r 1 \
-rp 1000 \
-trace_msg -trace_err \
-mi 100.64.0.51 \
-media_ip 100.64.0.51 \
100.64.0.21:5060
'

Verify

Attendere 5-10 secondi per il passaggio Kamailio acc_json -> kam-cdr-bridge -> NATS -> cdr-worker -> TimescaleDB.

ssh root@akira-mgmt-01-staging '
docker exec akira-backend python apps/backend/scripts/smoke_e2e_verify.py
'

Verifica manuale DB equivalente:

ssh root@akira-db-01-staging '
sudo -u postgres psql -d akira -c "
SELECT
id, call_id, src, dst, started_at, answered_at, ended_at,
duration_sec, billsec, sip_response_code, cause_q850, disposition,
codec, pdd_ms
FROM cdr
WHERE answered_at > NOW() - INTERVAL '\''5 minutes'\''
ORDER BY answered_at DESC
LIMIT 5;
"
'

Verifica RTPengine:

ssh root@akira-rtp-01-staging '
ngcli list || true
journalctl -u rtpengine --since "10 minutes ago" --no-pager | tail -80
'

Expected

Lo smoke e' valido quando:

  • SIPp mostra 1 calls successful e 0 calls failed.
  • Il tempo di risposta medio e' inferiore a 2000 ms.
  • Esiste una riga cdr recente con sip_response_code=200, duration_sec e billsec intorno a 30 secondi.
  • codec e' valorizzato.
  • Esiste un audit log recente per il CDR con actor non vuoto.
  • I log RTPengine mostrano traffico media per la chiamata.