Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8d0ce94fe | ||
|
|
f34756f4bb |
@@ -116,25 +116,27 @@ public sealed class AgentEngineConcurrencyTests
|
||||
{
|
||||
// Wichtige Gegenprobe: Der Fix für B2 darf nicht versehentlich alle Agenten
|
||||
// gegeneinander sperren.
|
||||
var toolDelay = TimeSpan.FromMilliseconds(200);
|
||||
var fixture = new EngineFixture().WithTool(FakeTool.Slow(toolDelay));
|
||||
//
|
||||
// Bis zum 2026-09-24 antwortete die Attrappe hier nur mit Text: Das langsame
|
||||
// Werkzeug lief nie, die Läufe waren sofort fertig, und geprüft wurde nur, ob drei
|
||||
// leere Läufe unter 450 ms bleiben. Das bestand auch mit gegenseitig gesperrten
|
||||
// Agenten - und schlug unter Last fehl, weil es die Maschine mass statt der Engine.
|
||||
// Jetzt ruft jeder Agent das Werkzeug wirklich auf, und bewiesen wird die Überlappung.
|
||||
var tool = FakeTool.Slow(TimeSpan.FromMilliseconds(500));
|
||||
var fixture = new EngineFixture().WithTool(tool);
|
||||
|
||||
var a = fixture.AddAgent("agent-1", "TestTool");
|
||||
var b = fixture.AddAgent("agent-2", "TestTool");
|
||||
var c = fixture.AddAgent("agent-3", "TestTool");
|
||||
|
||||
fixture.Client.AlwaysRespondsWithText("Antwort");
|
||||
fixture.Client.RespondsContextually("TestTool");
|
||||
|
||||
var sw = System.Diagnostics.Stopwatch.StartNew();
|
||||
await Task.WhenAll(
|
||||
fixture.Engine.ChatAsync(a, "x", "test-instance", default),
|
||||
fixture.Engine.ChatAsync(b, "x", "test-instance", default),
|
||||
fixture.Engine.ChatAsync(c, "x", "test-instance", default));
|
||||
sw.Stop();
|
||||
|
||||
// Seriell wären es mindestens 3 × 200 ms. Parallel deutlich weniger.
|
||||
sw.Elapsed.ShouldBeLessThan(TimeSpan.FromMilliseconds(450),
|
||||
"Agenten dürfen sich nicht gegenseitig blockieren");
|
||||
tool.MaxConcurrent.ShouldBeGreaterThan(1, "Agenten dürfen sich nicht gegenseitig blockieren");
|
||||
}
|
||||
|
||||
private static async Task WaitUntilAsync(Func<bool> condition, int timeoutMs = 2_000)
|
||||
|
||||
Reference in New Issue
Block a user