Skip to content

chore(benchmarks): add local-source stress reporting - #30

Draft
YasenSS wants to merge 2 commits into
linker-bot:mainfrom
YasenSS:chore/benchmark-stress-reporting
Draft

YasenSS wants to merge 2 commits into
linker-bot:mainfrom
YasenSS:chore/benchmark-stress-reporting

Conversation

@YasenSS

@YasenSS YasenSS commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Separate microbenchmarks from an Ubuntu CAN/CAN FD stress harness and archive the verified November 10 results in English.

Reproduction

  • Base: 0e190032d65ed0b315337b45b3779cf4f650ed68 (Transport 0.3.4).
  • The base provides microbenchmarks but no maintained local-source stress/reporting workflow. Stress runs require Ubuntu, vcan support and passwordless sudo for temporary network namespaces; physical adapters are unnecessary.
  • The new explicit-output test also failed on macOS because temporary paths resolve through a symlink. Comparing canonical paths fixes that assertion.

Fix

Move the existing microbenchmark and summarizer under benchmarks/micro while retaining the standalone build entry point. Add isolated stress workers, source/build provenance, per-frame accounting, socket loss checks, bounded-process cleanup and verified report archives. Keep generated results ignored and limit installed benchmark data to documentation, the summarizer and the recorded ARM64 baseline.

Preserve the historical run separately: its archive verifies 119 configurations and four confirmed scenarios, including six recorded failed overload configurations. These measurements test the base commit and do not validate the new PR head.

Compatibility

  • Production library code, public APIs, ABI and runtime defaults are unchanged. The optional stress build is disabled by default.
  • The summarizer moves to benchmarks/micro/summarize.py; installed benchmark paths follow the new layout. Source-checkout commands and both performance guides are updated.
  • No persistent application records or migration steps are involved. Reverting this tooling change restores the previous benchmark layout.

Validation

Local ARM64

  • Clang Format 18 passed on all tracked C++ sources on macOS ARM64.
  • Linux ARM64 Clang-Tidy, strict libc++ build and project CTest.
  • Linux production line coverage above 99% before rounding.
  • ASan/UBSan and TSan where applicable.

Passed:

  • Eight harness tests on both macOS ARM64 and Linux x86_64; the macOS path regression failed before the test correction.
  • Linux x86_64/GCC 13 Release builds with -Wall -Wextra -Wpedantic -Werror, both microbenchmark allocation modes, memory CAN/FD smoke runs and deterministic queue/100-recovery contracts.
  • Four standalone installed-consumer CTest cases.
  • Historical archive verification: 119 records, four confirmed scenarios, unchanged measured source and no run-level errors.
  • Baseline summarization, 22 changed-document relative file links, signature verification and Git whitespace checks.

Skipped, with reasons:

The required Linux ARM64 environment was unavailable. Its checks remain pending; x86_64 results do not replace them. The new integrated vcan workflow, full stress scan and physical hardware acceptance were not run. Sanitizer and full project coverage results are not claimed.

GitHub CI

  • Exact head: 03fbcae1462c5a88cc085566e34fa5e53def0f13.
  • amd64, ARM64 and Windows checks have not run for this PR head. Publish as Draft for CI validation; CI, review and unresolved threads must be checked after creation.

Documentation

Update benchmark navigation, micro/stress instructions, both performance guides and the English historical report/archive verification notes. Relative file links and the moved summarizer were checked.

Checklist

  • The PR commit is signed and its signature was verified locally. GitHub reports unknown_key; the signing public key is not registered there.
  • The macOS path regression fails before the correction and passes after it.
  • Memory CAN/FD smoke runs and installed consumers cover normal behavior and compatibility within the stated scope.
  • Required Linux ARM64 validation is complete.
  • CI and review results refer to the latest PR head.

Separate microbenchmarks from the Ubuntu CAN/FD stress harness and
restrict installed benchmark material to documentation and the baseline.

Record local source provenance, frame accounting and socket loss checks.
Archive the verified November 10 results with an English report and
checksum verifier. Keep historical measurements separate from this head.

Validate Clang 18 formatting, eight harness tests on macOS and Linux,
strict GCC 13 benchmark builds, memory CAN/FD smoke runs, queue/recovery
contracts, both micro modes and four installed-consumer tests on x86_64.
Linux ARM64 validation remains pending.
Enable the optional stress targets in the report build so every new C/C++
source has a compilation entry. Include C files in the style gate and
format the Linux socket probe.

Make numeric conversions explicit and bound probe log writes. Explain the
required glibc macro and bounded snprintf at their analyzer diagnostics.

Validate workflow syntax, formatting, 351 native CTest cases, eight stress
harness tests, queue/recovery contracts and real CAN socket probe output.
Run the stress sources through Clang 18 and the CI Cppcheck version.
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