Skip to content

Dev pcsampling - #2588

Merged
thorstendb-ARM merged 4 commits into
mainfrom
dev-pcsampling
Sep 2, 2026
Merged

Dev pcsampling#2588
thorstendb-ARM merged 4 commits into
mainfrom
dev-pcsampling

Conversation

@thorstendb-ARM

Copy link
Copy Markdown
Contributor

Fixes

  • Adds periodic DWT PC-sample and processor-sleep output to ctrace.

Changes

  • Decode 4-byte PC samples and 1-byte processor-sleep indications.
  • Report unsupported PC-sample payloads as trace issues.
  • Add PC samples to CSV output.
  • Add a compact PC_SAMPLE CTF event with sample-quality and overflow information.
  • Add a Trace Compass timeline showing processor-sleep intervals.
  • End sleep intervals on PC samples, overflow, and data loss.
  • Avoid ambiguous /* sequences for the copyright comment parser.
  • Update documentation and add unit and integration coverage.

Validation

  • All ctrace test groups pass.
  • Patch line coverage is 100% (139/139).
  • Generated CTF validates with Babeltrace.
  • Generated Trace Compass XML validates against its XSD.
  • Copyright and cppcheck validation pass.

Checklist

  • 🤖 This change is covered by unit tests.
  • 🤹 Manual testing has been performed.
  • 🛡️ Security impacts have been considered.
  • 📖 Documentation updates are complete.
  • 🧠 Third-party dependencies and TPIP were considered; no updates are required.

Decode periodic PC and processor-sleep samples into CSV and compact CTF output. Add a Trace Compass sleep timeline and reject unsupported PC-sample payloads.
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

Test Results

  4 files    4 suites   1s ⏱️
189 tests 189 ✅ 0 💤 0 ❌
378 runs  371 ✅ 7 💤 0 ❌

Results for commit d91e69f.

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The functional changes are well-covered by unit/integration tests, with only a minor diagnostic-message clarity nit identified.

Pull request overview

Adds support for periodic DWT PC sampling (including processor-sleep indications) to the ctrace event model and output backends, extending CTF/CSV generation and Trace Compass visualization while updating tests and documentation accordingly.

Changes:

  • Decode periodic PC sample packets into a dedicated PcSampleTraceEvent, including unsupported-payload reporting via TraceIssueEvent.
  • Emit PC-sample data in CSV and as a compact PC_SAMPLE CTF event, plus Trace Compass XML updates to visualize sleep intervals.
  • Update unit/integration coverage and architecture/todo documentation to reflect the new supported output semantics.
File summaries
File Description
tools/ctrace/test/unit/support/CtfTestSupport.h Extends test-side CTF record parsing to understand PC_SAMPLE payload sizing/validation.
tools/ctrace/test/unit/src/output/ctf/CtfSchemaTests.cpp Adds schema density checks for the new PcSample event and PcSampleState values.
tools/ctrace/test/unit/src/output/ctf/CtfMetadataWriterTests.cpp Validates Trace Compass XML includes PC-sample state graph and avoids string-valued states.
tools/ctrace/test/unit/src/output/ctf/CtfEncoderTests.cpp Adds end-to-end CTF encoding test coverage for PC-sample and sleep indications.
tools/ctrace/test/unit/src/output/csv/CsvRowMapperTests.cpp Verifies CSV row mapping for PC sample vs sleep indication.
tools/ctrace/test/unit/src/output/csv/CsvFileOutputTests.cpp Updates CSV file output spec test to include PC-sample rows.
tools/ctrace/test/unit/src/model/TraceSelectionTests.cpp Ensures pcsample selection works and stays distinct from dwt.
tools/ctrace/test/unit/src/decode/DwtPacketDecoderTests.cpp Switches to dedicated PC-sample event expectations and adds unsupported-payload coverage.
tools/ctrace/test/unit/src/decode/DecodePipelineTests.cpp Adds pipeline-level validation that periodic PC samples survive decoding.
tools/ctrace/test/integration/src/CtraceIntegTests.cpp Extends integration trace to include a PC sample and asserts CSV output includes it.
tools/ctrace/src/output/ctf/TraceCompassXmlWriter.cpp Adds state provider + time graph view to show processor sleep intervals driven by PC-sample and trace-status events.
tools/ctrace/src/output/ctf/CtfSchema.h Adds EventId::PcSample, PcSampleState, and schema naming/value helpers.
tools/ctrace/src/output/ctf/CtfMetadataWriter.cpp Declares the PC_SAMPLE event fields in generated CTF metadata.
tools/ctrace/src/output/ctf/CtfEncoder.h Adds encoder entry point for writing PC-sample events.
tools/ctrace/src/output/ctf/CtfEncoder.cpp Implements PC_SAMPLE record encoding with quality/overflow tracking.
tools/ctrace/src/output/csv/CsvRowMapper.cpp Maps PC-sample events to the CSV pc column (blank for sleep).
tools/ctrace/src/model/TraceSelection.cpp Exposes PcSampleTraceEvent through the public TraceEventType::PcSample selector.
tools/ctrace/src/model/TraceEvent.h Adds PcSampleTraceEvent and UnsupportedDwtPcSamplePayload trace-issue code.
tools/ctrace/src/diagnostics/TraceIssueReporter.cpp Includes the new PC-sample unsupported-payload issue code in user diagnostics classification.
tools/ctrace/src/decode/DwtPacketDecoder.cpp Decodes periodic PC samples (4-byte PC) and sleep indication (1-byte zero) into semantic events; emits trace issues for unsupported payloads.
tools/ctrace/docs/todo.md Removes the PC-sampling TODO entry now that functionality is implemented.
tools/ctrace/docs/architecture.md Updates architecture notes to include pcsample as implemented output semantics and describes visualization behavior.
Review details
  • Files reviewed: 22/22 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread tools/ctrace/src/decode/DwtPacketDecoder.cpp Outdated
JonatanAntoni
JonatanAntoni previously approved these changes Sep 2, 2026
# Conflicts:
#	tools/ctrace/src/output/ctf/CtfSchema.h
#	tools/ctrace/src/output/ctf/TraceCompassXmlWriter.cpp
#	tools/ctrace/test/unit/src/output/ctf/CtfMetadataWriterTests.cpp
#	tools/ctrace/test/unit/src/output/ctf/CtfSchemaTests.cpp
@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.40%. Comparing base (40ac621) to head (d91e69f).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2588      +/-   ##
==========================================
+ Coverage   72.34%   72.40%   +0.05%     
==========================================
  Files         185      185              
  Lines       30334    30393      +59     
  Branches    17901    17926      +25     
==========================================
+ Hits        21946    22005      +59     
  Misses       6079     6079              
  Partials     2309     2309              
Flag Coverage Δ
ctrace-cov 99.81% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
tools/ctrace/src/decode/DwtPacketDecoder.cpp 100.00% <100.00%> (ø)
...ools/ctrace/src/diagnostics/TraceIssueReporter.cpp 100.00% <ø> (ø)
tools/ctrace/src/model/TraceEvent.h 100.00% <ø> (ø)
tools/ctrace/src/model/TraceSelection.cpp 100.00% <100.00%> (ø)
tools/ctrace/src/output/csv/CsvRowMapper.cpp 100.00% <100.00%> (ø)
tools/ctrace/src/output/ctf/CtfEncoder.cpp 100.00% <100.00%> (ø)
tools/ctrace/src/output/ctf/CtfMetadataWriter.cpp 100.00% <100.00%> (ø)
tools/ctrace/src/output/ctf/CtfSchema.h 100.00% <100.00%> (ø)
...ls/ctrace/src/output/ctf/TraceCompassXmlWriter.cpp 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@thorstendb-ARM
thorstendb-ARM merged commit 01d1c3f into main Sep 2, 2026
27 of 28 checks passed
@thorstendb-ARM
thorstendb-ARM deleted the dev-pcsampling branch September 2, 2026 12:25
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.

3 participants