From 8842b86a46195abffd87e220ceddd2cd1185e0c5 Mon Sep 17 00:00:00 2001 From: mikecarper Date: Mon, 5 Oct 2026 19:18:03 -0700 Subject: [PATCH] Keep bridge admission fixtures aligned with cooperative shutdown --- test/test_transport_filter_wiring.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/test_transport_filter_wiring.py b/test/test_transport_filter_wiring.py index f2bac7080..d0e7dd587 100644 --- a/test/test_transport_filter_wiring.py +++ b/test/test_transport_filter_wiring.py @@ -31,6 +31,7 @@ struct Packet { HARNESS = r''' #include +#include #include #define BRIDGE_DEBUG_PRINTLN(...) ((void)0) #define PUB_KEY_SIZE 32 @@ -90,6 +91,7 @@ struct ESPNowBridge : BridgeBase { void sendPacket(mesh::Packet*) override; }; struct MQTTBridge : BridgeBase { + std::atomic _stop_requested{false}; struct Obs {bool mqtt_packets_enabled=true,mqtt_rx_enabled=true;uint8_t mqtt_tx_enabled=1;} obs; Obs* _obs=&obs; struct Identity {uint8_t pub_key[32]={};} id; @@ -126,6 +128,14 @@ int main() { assert(inbound.manager.queued==1 && inbound._seen_packets.marks==1); assert(serial.serial.writes==1 && espnow.queued==2 && mqtt.queued==2); assert(serial._seen_packets.marks==1 && espnow._seen_packets.marks==2); + // Once teardown is requested, neither RX nor TX admits more queue work, + // even while the bridge remains initialized until the worker acknowledges. + mqtt._stop_requested=true; + mqtt.onPacketReceived(&p);mqtt.sendPacket(&p); + assert(mqtt.queued==2 && mqtt._filtered_packets==2); + mqtt._stop_requested=false; + mqtt.onPacketReceived(&p);mqtt.sendPacket(&p); + assert(mqtt.queued==4); BridgeBase no_policy;no_policy.onPacketReceived(&p);assert(no_policy.manager.queued==1); } '''