Repository navigation
v3.37.0
Added
-
Load testing for test scripts and suites.
POST /api/test/runtakes an optional
iterationscount (the PWA's Iterations field next to Start / Run suite): the
run repeats N times, successful iterations are discarded (only the iteration counter and
the timing are kept; the per-step log is not rendered or retained), and the first
iteration that ends in an error stops the loop and keeps that iteration's full
report. A manual stop ends it after the current iteration, and a card session change
between iterations is an error (a swapped card is never run against another card's
script). The SCP80 counter state is shared across iterations, so packets continue from
what the previous run consumed. The run status gains aloadblock (iteration,
done,failed_iteration,elapsed_ms,avg_ms); the count is a run parameter, not
part of the stored script or suite. -
The stuck-card watchdog for test runs. A card that stops answering (no status
word, no driver error) used to leave the runner inside a blockingSCardTransmit
holding the card lock — Stop could not take effect, the presence monitor waited for
the lock and a load test hung in that iteration without explanation. After 30 s
without runner progress (a bounded STATUS/drain loop beats once per attempt) the
watchdog marks the runstuck, recordsthe card stopped responding (step N, no answer for N s), sets the stop flag and tries to cancel the blocked transmit by
disconnecting the PC/SC link on a background thread. Where PC/SC can cancel it, the
step fails through the ordinaryon_failpath and the run finalises as an error
(neverstopped); where it cannot (pcsc-lite serializes the disconnect behind the
pending transmit), the status already names the step until the driver's own card
timeout returns. The transport is marked stale once the disconnect returns, so the
next Equip rebuilds it. The status gainsstuck; the help EN/RU,
docs/test-scripts.mdanddocs/api.mddescribe the behaviour and the
background-disconnect caveat.
Fixed
- The PLI location answer now uses the 7-byte PLI form (TS 31.111 8.19.1):
PLMN 001/01, LAC0001, Cell ID0001. The former default was the 5-byte
Network Rejection event form (no Cell ID) with LAC0000; a card applet
that re-reads its location after a*LOCIstatus change (the Alfa MultiIMSI
applet) treated it as empty and re-requested PLI on every STATUS tick — the
PLI storm that slowed RAM Explore. The TR data is now
13 07 00F110 0001 0001. - The proactive chain is bounded on every call site:
_handle_proactive_chain's
max_roundsdefaults to_POLL_CHAIN_MAX(the background poll always passed it;
the manual STATUS poll and the ENVELOPE/menu/TP chains did not). A card that
re-queues a command (the PLI storm) could keep the manual poll looping forever
while it held the card lock —/api/status-pollnever returned and every card
request waited. The manual poll also passes the bound explicitly. - The load-test loop closes properly on a raised runner error (it used to leave the run
runningforever - the PWA polled a dead run and Clear report stayed refused), on a
card session change inside a suite iteration, and on a member that was stopped; a
warning in any iteration is reflected in the final status,avg_mscovers the attempted
iterations (the failing one included), and each suite iteration'scounters_beforeis
read fresh from the preset store.