summaryrefslogtreecommitdiffstats
path: root/tests/test_launch.py
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-07 00:14:28 +0200
committerblasty <blasty@local>2026-08-07 00:14:28 +0200
commit89db0e023d5bafbd1868f22b9b31e5006066cdad (patch)
treea0e96eae22822be537d847e2c684ee5f166eb057 /tests/test_launch.py
parentapp: the view mode is a type, and 'disasm' is gone (diff)
downloadida-tui-89db0e023d5bafbd1868f22b9b31e5006066cdad.tar.gz
ida-tui-89db0e023d5bafbd1868f22b9b31e5006066cdad.tar.xz
ida-tui-89db0e023d5bafbd1868f22b9b31e5006066cdad.zip
worker_client: tests, and stop resurrecting a closed worker
The layer between the app and idalib had no tests, which is awkward: it is where failures are silent. A worker that dies during startup, a socket that drops mid-call, two UI threads sharing one socket -- none of those look like bugs from outside, they look like the TUI hanging or showing stale data. None of it needs IDA. WorkerClient spawns whatever _WORKER_PY points at, so the suite points it at a fake speaking the same length-prefixed pickle and tells it to misbehave on demand: die at startup, never bind, drop the connection, fail a tool, take its time. 40 checks in the --fast tier. Two things the tests found: call() reconnects when _sock is None, which is what makes a dropped socket recoverable -- but it made an explicitly CLOSED client resurrect too, spawning a whole new idalib worker to serve one stray call (verified: pid 1066961 -> 1066962). close() runs on teardown and on binary-switch while @work threads are still in flight, so quitting during a decompile could leave a fresh process re-opening the .i64 we had just released, which is the wedging hazard. A closed client now refuses; connect() still revives it, which is all _reconnect needs (it builds a new client anyway). connect() polled on a flat 0.2s sleep, so every caller paid a fifth of a second even when the worker was ready in milliseconds -- a seeded .i64, a small binary. Backs off from 5ms instead. 786 checks, 144.6s; --fast is 297 in 3.3s.
Diffstat (limited to 'tests/test_launch.py')
0 files changed, 0 insertions, 0 deletions