Skip to content

feat: NMv3: allow storing different test results - #7086

Open
jstuczyn wants to merge 9 commits into
feat/nmv3-announce-identityfrom
feat/nmv3-per-kind-storage
Open

feat: NMv3: allow storing different test results#7086
jstuczyn wants to merge 9 commits into
feat/nmv3-announce-identityfrom
feat/nmv3-per-kind-storage

Conversation

@jstuczyn

@jstuczyn jstuczyn commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Kind-tagged test types and per-kind orchestrator storage

Branch 5 of the NMv3 liveness stack, based on feat/nmv3-announce-identity. Lands task groups 3 (shared request/response types) and 4 (orchestrator storage + migration 03) of network-monitor-liveness-tests.

No new behaviour is switched on: the orchestrator still only ever assigns mixnode stress tests, now over a schema and a set of wire types that can express the other kinds.

Shared types (group 3)

  • TestKind (stress / liveness) tags every assignment, run and submission stream.
  • TestRunAssignment becomes kind-and-role tagged: MixnodeStress (one target), MixnodeLiveness and GatewayLiveness (a wave, homogeneous in role). "No work" stays an absent assignment; an empty wave is never emitted.
  • Results carry run-level facts (kind, time_taken, error) plus one InterfaceMeasurement per ExercisedInterface exercised (mix_forwarding / client_ingest / client_delivery), so a gateway's healthy ingest with a dead delivery stays distinguishable from a uniformly half-lossy node.
  • nym-api side: liveness batch endpoint constant, LivenessTestBatchSubmission mirroring the stress envelope, and StressTestBatchSubmissionResponse becomes an alias of a shared BatchSubmissionResponse.

Orchestrator storage (group 4)

  • Migration 03: node_test_state keyed (node_id, test_kind, tested_role) holds staleness, the last run and the address rotation pointer; testrun_measurement holds per-interface counts under testrun; submission_watermark replaces the single metadata value; testrun_in_progress gains expires_at, test_kind, tested_role; nym_node loses its two test pointers and gains clients_ws_port.
  • The insert path is now one transaction: run row, measurement rows, work-state upsert, in-flight lock release.
  • In-flight eviction compares each row's own expires_at instead of a cutoff derived from one global timeout, so kinds with different lease budgets expire on their own schedules.

This change is Reviewable

@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs-nextra Ready Ready Preview Aug 21, 2026 2:53pm
nym-explorer-v2 Ready Ready Preview Aug 21, 2026 2:53pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
nym-node-status Ignored Ignored Preview Aug 21, 2026 2:53pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5bdce106-1728-495f-b4c4-49e5435a9ac5

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant