mirror of
https://github.com/meshtastic/firmware.git
synced 2026-05-24 16:58:01 -04:00
* Start of MCP server and test suite * Add MCP server for interacting with meshtastic devices and testing framework / TUI * Update mcp-server/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix mcp-server review feedback from thread Agent-Logs-Url: https://github.com/meshtastic/firmware/sessions/91dc128a-ed50-4d07-8bb2-3dc6623a05f7 Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com> * Enhance StreamAPI and PhoneAPI for improved log record handling and concurrency control * Semgrep fixes * Trunk and semgrep fixes * optimize pio streaming tee file writes Agent-Logs-Url: https://github.com/meshtastic/firmware/sessions/04e26c6b-6a2b-45be-bbeb-79ae4d0be633 Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com> * chore: remove redundant log handle assignment Agent-Logs-Url: https://github.com/meshtastic/firmware/sessions/04e26c6b-6a2b-45be-bbeb-79ae4d0be633 Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com> * Consolidate type imports and remove placeholder test files * Add tests for config persistence and more exchange messages * Refactor position test to validate on-demand request/reply behavior * Remove position request/reply test and update README for telemetry behavior * Fix transmit history file to get removed on factory reset --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
"""Fleet: different session seeds produce non-overlapping PSKs.
|
|
|
|
No hardware needed — this is a pure property check on the test profile
|
|
generator, elevated into the `fleet/` tier because it's the critical
|
|
invariant for running concurrent CI labs without cross-contamination.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from meshtastic_mcp import userprefs
|
|
|
|
|
|
def test_psk_seed_isolates_runs() -> None:
|
|
"""Two labs running simultaneously with different seeds must end up with
|
|
different PSKs — which means firmware baked in lab A cannot decode lab B's
|
|
traffic, and vice versa.
|
|
|
|
This is the formal statement of the isolation claim that
|
|
`testing_profile` promises operators.
|
|
"""
|
|
lab_a_morning = userprefs.build_testing_profile(psk_seed="lab-a-2026-04-16-morning")
|
|
lab_a_evening = userprefs.build_testing_profile(psk_seed="lab-a-2026-04-16-evening")
|
|
lab_b_morning = userprefs.build_testing_profile(psk_seed="lab-b-2026-04-16-morning")
|
|
|
|
# Same lab, same date, different time-of-day → different PSKs
|
|
assert (
|
|
lab_a_morning["USERPREFS_CHANNEL_0_PSK"]
|
|
!= lab_a_evening["USERPREFS_CHANNEL_0_PSK"]
|
|
)
|
|
# Different labs, same time-of-day → different PSKs
|
|
assert (
|
|
lab_a_morning["USERPREFS_CHANNEL_0_PSK"]
|
|
!= lab_b_morning["USERPREFS_CHANNEL_0_PSK"]
|
|
)
|
|
|
|
# Re-deriving with the same seed yields the same PSK (reproducibility)
|
|
lab_a_morning_again = userprefs.build_testing_profile(
|
|
psk_seed="lab-a-2026-04-16-morning"
|
|
)
|
|
assert (
|
|
lab_a_morning["USERPREFS_CHANNEL_0_PSK"]
|
|
== lab_a_morning_again["USERPREFS_CHANNEL_0_PSK"]
|
|
)
|