Fix test core dump, add producer metadata, real-time dashboard plugin - #33
Merged
Merged
Conversation
Copilot
AI
changed the title
[WIP] Improve testing visibility for better debug information
Add log levels, structured stats, and route logs to Catch2 on test failure
Mar 16, 2026
Copilot
AI
changed the title
Add log levels, structured stats, and route logs to Catch2 on test failure
Improve testing visibility: assert semantics, log levels, stat metadata, stat graphing
Mar 16, 2026
Copilot stopped work on behalf of
patricklbell due to an error
March 19, 2026 09:36
Copilot
AI
changed the title
Improve testing visibility: assert semantics, log levels, stat metadata, stat graphing
Fix test core dump, add producer metadata, real-time dashboard plugin
Mar 19, 2026
…g consumer - Add PlexdbLogLevel enum (TRACE/DEBUG/INFO/WARN/ERROR) and PLEXDB_LOG_STAT event to log_abi.h - Update plexdb::log module with Level enum, level-aware fire_message, fire_stat - Update objstore log to use appropriate log levels (Debug for parse, Error for errors) - Change FAIL to FAIL_CHECK in assert helpers so tests continue after failures - Add Catch2 log consumer helpers that route all logs to UNSCOPED_INFO - Update log_file plugin to handle log levels and stat events - Add tests for log levels and fire_stat Co-authored-by: patricklbell <46551885+patricklbell@users.noreply.github.com>
…rder docs Co-authored-by: patricklbell <46551885+patricklbell@users.noreply.github.com>
…graphing script - Revert FAIL_CHECK back to FAIL in assert handlers so assertions stop the test case (preventing continued execution with corrupted state) - Remove noexcept from assert_true/assert_true_always so the assert handler can interact with the test framework (noexcept was incompatible with Catch2 FAIL) - Add PLEXDB_LOG_STAT_META event type to log ABI for stat metadata (maps producer_id + stat_id to a human-readable name) - Add fire_stat_meta() to plexdb::log module - Create log_stat plugin that writes stat events to a parseable text file - Create extra/plot_stats.py script to graph stat data using matplotlib - Update log_file plugin and test log consumers to handle stat metadata - Add tests for fire_stat_meta - Update AGENTS.md and test instructions with stat metadata documentation Co-authored-by: patricklbell <46551885+patricklbell@users.noreply.github.com>
…he__ Co-authored-by: patricklbell <46551885+patricklbell@users.noreply.github.com>
…ons, add real-time dashboard plugin - Fix SKIP() crash: replace with compile-time return (SKIP requires exceptions) - Fix FAIL() crash: use FAIL_CHECK + longjmp recovery + Catch2 listener - Add PLEXDB_TEST_SCOPE macro for graceful test recovery from assertions - Enable PLEXDB_LOG_ENABLED and PLEXDB_DEBUG in CI test.yml - Rename log_consumer.test.cpp to log_consumer_helper.test.cpp - Add PLEXDB_LOG_PRODUCER_META event type to log ABI - Add fire_producer_meta() to C++ log module - Refactor log_stat, log_file plugins to use functions instead of OOP - Create real-time terminal dashboard plugin (log_dashboard) - Update plot_stats.py with --live mode and producer metadata support - Add test for fire_producer_meta Co-authored-by: patricklbell <46551885+patricklbell@users.noreply.github.com>
Co-authored-by: patricklbell <46551885+patricklbell@users.noreply.github.com>
patricklbell
force-pushed
the
copilot/improve-testing-visibility
branch
from
March 19, 2026 13:11
b02f9c5 to
b078e6a
Compare
patricklbell
marked this pull request as ready for review
March 19, 2026 13:16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI crashes with
SIGABRTbecauseSKIP()andFAIL()require exceptions but the project builds with-fno-exceptions. Also addresses several infrastructure requests: producer metadata, function-oriented plugins, real-time dashboard, and file rename.Test recovery (
-fno-exceptionsfix)SKIP()withif constexpr (!enabled) { return; }— no exception neededFAIL()in assert handler withFAIL_CHECK()(non-throwing) +longjmprecoveryPLEXDB_TEST_SCOPE()macro for opt-in graceful exit on assertion failure-DPLEXDB_LOG_ENABLED=ON -DPLEXDB_DEBUG=ONintest.ymlProducer metadata
PLEXDB_LOG_PRODUCER_META = 5event type inlog_abi.hPlexdbLogProducerMeta { producer_id, key, value }for key-value metadata on producersfire_producer_meta()added to C++ module, handled in all consumers/pluginsPlugin refactor (functions over OOP)
log_stat_plugin.cpp,log_file_plugin.cpp: classes with methods → plain structs with free functionslog_consumer.test.cpp→log_consumer_helper.test.cpp(both plexdb and objstore), also refactoredReal-time dashboard plugin
objstore/plugins/log_dashboard/log_dashboard_plugin.cpp— ANSI terminal dashboard viaLD_PRELOADPLEXDB_DASHBOARD_INTERVAL_MSplot_stats.pyupdated with--livemode andDtag for producer metadataD <producer_id>\t<key>\t<value>linesOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.