ESPSomfy-RTS/test
cjkas 77703a9855 refactor: serve the read routes from a ModelSnapshot that loop() fills
/controller, /discovery, /rooms, /shades, /groups, /room, /shade and /group
now take a SnapshotSlots slot, queue a fill on the LoopQueue and send a
chunked response whose body waits (RESPONSE_TRY_AGAIN) until loop() has
copied the shade model into the slot. SnapshotWriter then streams the
document from that copy a unit at a time, so each document describes one
moment. At most two reads run at once; a third gets 503. A slot's 5.6 KB
snapshot is allocated only while a read holds it, and its atomic state
decides whether loop() or the read frees it when the read goes away first.

The JSON of each item is unchanged and now lives in ModelSnapshot.cpp,
where the native tests check it. Replies still written on the web server
task copy their one item with SomfySnapshot.cpp, so serializing a group
no longer calls updateFlags(), which emitted groupState and published MQTT
from async_tcp.

Also: every read route is chunked and leaves out an item too big for its
3 KB unit, like /controller did; /discovery drops its timing log; the
SOMFY_MAX_* limits move to ShadeTypes.h.

21 new native tests, 292 in all. Flash: esp32devdbg +440 bytes, esp32dev
+2,064 bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 10:05:22 +02:00
..
stubs refactor: time steps with ElapsedTimer::lap() 2026-10-13 15:39:14 +02:00
test_frame fix: turn a group's sun flag on, not off, for MQTT sunFlag 1 2026-10-12 20:55:21 +02:00
test_json fix: track the JSON length instead of recounting it 2026-10-12 16:04:13 +02:00
test_logging refactor: time steps with ElapsedTimer::lap() 2026-10-13 15:39:14 +02:00
test_loopqueue refactor: carry out shade requests from one module behind a LoopQueue 2026-10-16 09:42:58 +02:00
test_motion fix: default a set-favorite request's tilt to the favorite tilt 2026-10-14 15:57:49 +02:00
test_mqttcommands refactor: carry out shade requests from one module behind a LoopQueue 2026-10-16 09:42:58 +02:00
test_pulse refactor: move the RX pulse decoder into PulseDecoder 2026-10-13 21:21:05 +02:00
test_radioscheduler refactor: name radio jobs as GLOSSARY.md does 2026-10-13 15:13:03 +02:00
test_rollingcode test: cover the radio queue rules, shade TX state, rolling codes and web command hold 2026-10-12 20:26:33 +02:00
test_sensors fix: move only the tilt of a tilt-only shade for sun and wind 2026-10-13 21:14:20 +02:00
test_shaderequests refactor: carry out shade requests from one module behind a LoopQueue 2026-10-16 09:42:58 +02:00
test_shadetx test: name the ticket tests as GLOSSARY.md does 2026-10-13 15:35:15 +02:00
test_snapshot refactor: serve the read routes from a ModelSnapshot that loop() fills 2026-10-16 10:05:22 +02:00
test_txbuffer fix: keep a repeater frame until the radio queue takes it 2026-10-12 18:31:39 +02:00
test_txjob refactor: let one RadioScheduler own the radio job queue 2026-10-12 20:36:32 +02:00
test_utils test: cover the roam threshold and who gets memStatus 2026-10-13 15:37:12 +02:00