fix(central-ui,cli): Flow Debugger client waits derive from the method timeout / wait window instead of a fixed 2 minutes (arch-review F4)
Claude-Session: https://claude.ai/code/session_01NcMG6xXdsJbmD2wYAgkK29
This commit is contained in:
@@ -35,17 +35,41 @@ public class FlowDebugCommandsTests
|
||||
var runMethod = group.Subcommands.Single(c => c.Name == "run-method");
|
||||
Assert.Contains(runMethod.Options, o => o.Name == "--method-id" && o.Required);
|
||||
Assert.Contains(runMethod.Options, o => o.Name == "--params" && !o.Required);
|
||||
Assert.Contains(runMethod.Options, o => o.Name == "--timeout-seconds" && !o.Required);
|
||||
Assert.DoesNotContain(runMethod.Options, o => o.Name == "--wait-seconds");
|
||||
|
||||
var runValueChange = group.Subcommands.Single(c => c.Name == "run-value-change");
|
||||
Assert.Contains(runValueChange.Options, o => o.Name == "--instance-id" && o.Required);
|
||||
Assert.Contains(runValueChange.Options, o => o.Name == "--attribute" && o.Required);
|
||||
Assert.Contains(runValueChange.Options, o => o.Name == "--value" && o.Required);
|
||||
Assert.Contains(runValueChange.Options, o => o.Name == "--wait-seconds" && !o.Required);
|
||||
Assert.DoesNotContain(runValueChange.Options, o => o.Name == "--timeout-seconds");
|
||||
|
||||
var replay = group.Subcommands.Single(c => c.Name == "replay");
|
||||
Assert.Contains(replay.Options, o => o.Name == "--execution-id" && o.Required);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RunMethod_TimeoutSecondsDefaultsTo120()
|
||||
{
|
||||
var group = FlowDebugCommands.Build(Url, Format, Username, Password);
|
||||
var parse = group.Parse("run-method --method-id 4");
|
||||
|
||||
Assert.Empty(parse.Errors);
|
||||
var timeoutOption = (Option<int>)parse.CommandResult.Command.Options.Single(o => o.Name == "--timeout-seconds");
|
||||
Assert.Equal(120, parse.GetValue(timeoutOption));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RunMethod_TimeoutSecondsZero_IsRejectedWithInvalidArgument()
|
||||
{
|
||||
var group = FlowDebugCommands.Build(Url, Format, Username, Password);
|
||||
|
||||
var exitCode = await group.Parse("run-method --method-id 4 --timeout-seconds 0").InvokeAsync();
|
||||
|
||||
Assert.Equal(1, exitCode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RunValueChange_WaitSecondsDefaultsTo45_MatchingTheCommandRecord()
|
||||
{
|
||||
|
||||
@@ -318,6 +318,24 @@ public sealed class FlowDebugServiceTests : IDisposable
|
||||
Assert.Contains("Deployer", envelope.User.Roles);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(180, 205)]
|
||||
[InlineData(1, 30)]
|
||||
public void RunAskTimeoutFor_IsMethodTimeoutPlusRunGracePlusClientSlack_FlooredAtMinRunAskTimeout(int timeoutSeconds, int expectedSeconds)
|
||||
{
|
||||
var timeout = FlowDebugService.RunAskTimeoutFor(timeoutSeconds);
|
||||
|
||||
Assert.Equal(TimeSpan.FromSeconds(expectedSeconds), timeout);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ValueChangeAskTimeoutFor_IsWaitSecondsPlusClientSlack()
|
||||
{
|
||||
var timeout = FlowDebugService.ValueChangeAskTimeoutFor(45);
|
||||
|
||||
Assert.Equal(TimeSpan.FromSeconds(60), timeout);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RunValueChange_AndReplay_SendTheirCommands()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user