test(worker): deterministic pump-wait ordering, env hermeticity, ResolveWriteCompletionTimeout coverage
This commit is contained in:
@@ -15,6 +15,48 @@ namespace ZB.MOM.WW.MxGateway.Worker.Tests.MxAccess;
|
||||
/// </summary>
|
||||
public sealed class MxAccessStaSessionTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Verifies the launcher-env-var parse branches of
|
||||
/// <see cref="MxAccessStaSession.ResolveWriteCompletionTimeout"/>:
|
||||
/// a valid non-negative value is honored (0 = disabled), while a
|
||||
/// missing, malformed, or negative value falls back to the executor
|
||||
/// default. Env mutation is restored in a finally so parallel tests
|
||||
/// never observe the temporary value.
|
||||
/// </summary>
|
||||
/// <param name="rawValue">Raw env-var value, or null for unset.</param>
|
||||
/// <param name="expectedMilliseconds">Expected resolved wait, or null for the executor default.</param>
|
||||
[Theory]
|
||||
[InlineData(null, null)]
|
||||
[InlineData("", null)]
|
||||
[InlineData("junk", null)]
|
||||
[InlineData("-5", null)]
|
||||
[InlineData("0", 0)]
|
||||
[InlineData("250", 250)]
|
||||
public void ResolveWriteCompletionTimeout_ParsesEnvironmentValue(string? rawValue, int? expectedMilliseconds)
|
||||
{
|
||||
string? original = Environment.GetEnvironmentVariable(
|
||||
MxAccessStaSession.WriteCompletionWaitEnvironmentVariableName);
|
||||
try
|
||||
{
|
||||
Environment.SetEnvironmentVariable(
|
||||
MxAccessStaSession.WriteCompletionWaitEnvironmentVariableName,
|
||||
rawValue);
|
||||
|
||||
TimeSpan resolved = MxAccessStaSession.ResolveWriteCompletionTimeout();
|
||||
|
||||
TimeSpan expected = expectedMilliseconds is null
|
||||
? MxAccessCommandExecutor.DefaultWriteCompletionTimeout
|
||||
: TimeSpan.FromMilliseconds(expectedMilliseconds.Value);
|
||||
Assert.Equal(expected, resolved);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Environment.SetEnvironmentVariable(
|
||||
MxAccessStaSession.WriteCompletionWaitEnvironmentVariableName,
|
||||
original);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that StartAsync creates the MXAccess COM object and attaches the event sink on the STA thread.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user