Improvements to test workflow#1804
Merged
Merged
Conversation
Move high thread count Tsavorite stress tests to a separate sub-project that does not run in the CI build, only nightly, as they take too long on the CI machines
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a dedicated stress-test project for Tsavorite read-cache multi-threading scenarios and wires it into nightly CI, while refactoring existing tests to share the core workers.
Changes:
- Introduced new
Tsavorite.test.stressNUnit project and registered it in the Tsavorite solution. - Refactored
ReadCacheChainTeststo expose internal worker methods and reduced thread-count permutations for regular test runs. - Updated nightly workflow matrix/mapping to run the stress test project; improved BDN benchmark workflow by removing random sleeps and adding a concurrency group.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/storage/Tsavorite/cs/test/test.stress/Tsavorite.test.stress.csproj | Adds new stress test project and references required test/core projects. |
| libs/storage/Tsavorite/cs/test/test.stress/ReadCacheStressTests.cs | Adds stress fixtures that delegate to refactored worker methods. |
| libs/storage/Tsavorite/cs/test/test.session/Tsavorite.test.session.csproj | Grants internals visibility to stress project for worker reuse. |
| libs/storage/Tsavorite/cs/test/test.session/ReadCacheChainTests.cs | Extracts internal worker methods; reduces base test thread permutations. |
| libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj | Grants internals visibility to stress project. |
| libs/storage/Tsavorite/cs/Tsavorite.slnx | Registers the new stress test project. |
| .github/workflows/nightly.yml | Adds stress project to nightly test matrix and directory mapping. |
| .github/workflows/ci-bdnbenchmark.yml | Adds concurrency group; removes random sleep; minor artifact upload cleanup. |
… Tsavorite test runs will run all sub-projects in parallel.
…lizing Garnet.test runs locally
Wrap XmlDocument.Load() in try/catch so corrupt or truncated TRX files are skipped with a warning rather than crashing the test-summary job and blocking Garnet CI (Complete). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Small bucket counts relative to the max were rounding to 0 bars, making them appear empty. Now non-zero counts always show at least one block. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
badrishc
approved these changes
May 16, 2026
…be reused Make Tsavorite CI tests display the Fully Qualified TestName When loading a module load the transitive closure of dependencies in the module directory rather than loading all modules in the directory (which may be hundreds of files). Many of these dependencies may already be loaded.
badrishc
approved these changes
May 18, 2026
…nvertMetadata exception handler was throwing a NullRef that hid the original failure; handle GetLogFileSize exception in CheckpointStore
badrishc
approved these changes
May 19, 2026
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.
This pull request introduces several improvements and fixes to the CI workflows and module loading logic. The main highlights include more efficient module dependency loading, enhanced test result reporting with detailed summaries, and updates to test configurations to support new test categories.
CI/CD Workflow Improvements and Test Reporting:
test-summaryjob in.github/workflows/ci.ymlto generate combined Markdown summaries of test results for each category (standalone, cluster, tsavorite), including statistics, failure lists, duration distributions, and slowest tests. This helps quickly assess test health and performance.dotnet-standalone-results-*,dotnet-cluster-results-*, etc.), and ensured correct artifact download patterns for summarization. [1] [2] [3]ci-bdnbenchmark.ymlworkflow by adding concurrency grouping to avoid overlapping runs, and removed the random sleep step for better determinism. [1] [2]NUnit.DisplayName=FullNameoption todotnet testfor Tsavorite tests to improve test result clarity.Tsavorite.test.stresstest, and updated mappings and solution files accordingly. [1] [2] [3]Local test run parallization:
Module Loading Optimization:
ModuleUtils.LoadModuleDependencies, which loads only those assemblies that a module references (transitively), rather than all DLLs in the module directory. This prevents unnecessary loading of unnecessary modules which can be very slow.NetworkModuleLoadlogic inAdminCommands.csto use the new dependency loader, improving performance and reliability of module loading. [1] [2]Minor Fixes and Cleanups:
ClusterContext.csabout port assignment to avoid confusion over shared state.Co-authored-by: Vasileios Zois vazois@microsoft.com:
These changes collectively improve CI efficiency, test result visibility, and the reliability of module extension loading.This pull request introduces a new
Tsavorite.test.stressproject to enable stress testing for the Tsavorite storage engine, integrates it into the nightly CI workflow, and makes related improvements to the test infrastructure. The main focus is on adding dedicated stress tests for read cache multi-threading scenarios, ensuring they are built, executed, and reported in CI.The most important changes are:
Stress Test Project Addition and Integration:
Tsavorite.test.stressproject, including its owncsprojfile with dependencies and project references, and registered it in the solution file (Tsavorite.slnx). This project contains new stress test classes for multi-threaded read cache scenarios. [1] [2] [3]Tsavorite.test.stressto the test matrix and directory mapping. These tests are not run in the CI build because they take too long on the CI machines. [1] [2]Test Infrastructure and Access Control:
InternalsVisibleToattributes in relevant test projects to allow the new stress test project to access internal members required for testing. [1] [2]Test Implementation Refactoring:
ReadCacheChainTests.csto extract worker methods, enabling code reuse in the new stress test project. Also, reduced the number of threads tested in the base tests to avoid excessive load during regular runs. [1] [2]