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 successfule0 calls failed. - Il tempo di risposta medio e' inferiore a 2000 ms.
- Esiste una riga
cdrrecente consip_response_code=200,duration_secebillsecintorno a 30 secondi. codece' valorizzato.- Esiste un audit log recente per il CDR con
actornon vuoto. - I log RTPengine mostrano traffico media per la chiamata.