test(headless): enforce 30-root K4 endurance

This commit is contained in:
Erik 2026-07-27 11:02:44 +02:00
parent 93c6c54220
commit 97c174fbb2
2 changed files with 261 additions and 10 deletions

View file

@ -82,10 +82,14 @@ public sealed class HeadlessProcessContentOwnerTests
Assert.Equal(1, factory.Dats.DisposeSuccessCount);
}
[Fact]
public void FiveSessionsShareContentButNotMutableRuntimeOwners()
[Theory]
[InlineData(1)]
[InlineData(5)]
[InlineData(10)]
[InlineData(30)]
public void SessionsShareContentButNotMutableRuntimeOwners(
int sessionCount)
{
const int sessionCount = 5;
var factory = new FixtureContentFactory();
var configuration = new HeadlessConfiguration
{
@ -103,11 +107,12 @@ public sealed class HeadlessProcessContentOwnerTests
Enumerable.Repeat(
"fixture-password" + Environment.NewLine,
sessionCount)));
using var diagnostics = new StringWriter();
using var host = new HeadlessProcessHost(
configuration,
HeadlessPathSet.Resolve(new HeadlessPathOverrides()),
input,
TextWriter.Null,
diagnostics,
contentFactory: factory);
Assert.Equal(1, factory.OpenCount);
@ -179,6 +184,23 @@ public sealed class HeadlessProcessContentOwnerTests
session.Runtime.CaptureOwnership().IsConverged));
Assert.Equal(1, factory.Prepared.DisposeSuccessCount);
Assert.Equal(1, factory.Dats.DisposeSuccessCount);
string output = diagnostics.ToString();
Assert.Contains(
"\"state\":\"disposed\"",
output,
StringComparison.Ordinal);
Assert.Contains(
$"\"convergedRuntimeCount\":{sessionCount}",
output,
StringComparison.Ordinal);
Assert.Contains(
"\"isConverged\":true",
output,
StringComparison.Ordinal);
Assert.DoesNotContain(
"fixture-password",
output,
StringComparison.Ordinal);
}
private static HeadlessContentDescriptor ContentDescriptor() => new()