Repository navigation
[RT-E6] test: characterize the background-service contender - #408
Merged
Merged
Conversation
Pins today's observable contender behaviour that RT-E6 step 4 (StderrTail, ChildExitWatch) and step 2 (ChildCommand, HostEnvironment) rewrite: no redaction without a ticket, the read-fault failure until disposal, an unknown exit at stderr end on POSIX, Release dropping the tail, and the spawner's NUL and batch refusals, spawn-failure text, request streams, overlay environment, handoff variable and missing stderr read end.
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.
What
Characterization tests for the background-service contender ahead of RT-E6. RT-E6 step 4 moves the contender onto
StderrTailandChildExitWatch; step 2 moves it ontoChildCommandandHostEnvironment. These tests pin today's observable behaviour, so RT-E6 can show "no behaviour change". Test-only. This is the contender half; the launcher half is #407.Pinned
ServiceContenderTests, extending the file [RT-SW-399] fix: contender stderr redacts a handoff ticket the tail cut or the pipe end splits #404 created for the redaction fix:Releasedrops the retained tail.ServiceContenderSpawnerRequestTests(new, besideServiceContenderSpawnerTestsso it avoids TST-E1's edits there):new ArgumentException(text, ParamName).Message;ParamNamenot pinned);Not pinned, on purpose
The intended RT-E6 fixes: U4-01 (Windows 259), U4-12 (the handle after Release), U4-13 (a reused pid), U4-09 (EPERM), U4-26/27 (beyond the observable request), and the U3-16 spelling.
Proof
ServiceContender.cs,ServiceContenderSpawner.csandServiceContenderSpawner.Windows.cs. Each turns exactly its own row red among the 22 cases on net10.0. Two analyzer-rejected attempts were discarded and rewritten. POSIX-only rows (the unknown exit, the batch refusal, the POSIX request arms) run on CI's Linux and macOS legs.78d47a16.70eef249failed on one guard: the collapsed-assertion guard (Rule A) found twoAssert.That(dict.ContainsKey(...)).IsFalse()sites in this file. Both are nowDoesNotContainKey, and the site list did not grow. Every other step passed: slopwatch, build, format, clone-detector, verify-clones, election, and the rest of the 10,146 tests. The two-line fix was rerun narrowly (classes, guards, verify-clones), with CI as the full gate (lead, 2026-10-17).Need help on this PR? Tag
@codesmith-botwith what you need.