- Expand Q3 calibration tests with diverse scenarios in `GenesisSmartReader_Q3Test`. - Introduce channel-specific validation for calibration tests. - Adjust methods for Q3 calibration in `GenesisSmartReader` to support per-channel factors. - Add utilities for preparing simulation data and refinements for test consistency. - Update `CliRunner` with improved task management, timeout handling, and logging enhancements.
76 lines
2.3 KiB
C#
76 lines
2.3 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using JetBrains.Annotations;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using TBF.Rig.RegisterReaders.PoseidonCmdStartStop;
|
|
|
|
namespace TBFTests.Rig.RegisterReaders.PoseidonCmdStartStop
|
|
{
|
|
[TestClass]
|
|
[TestSubject(typeof(CliRunner))]
|
|
public class CliRunnerTimeoutUnitTest
|
|
{
|
|
[TestMethod]
|
|
public async Task CancelUndoneTasksAsTimedOut_ShouldMarkOnlyRunningTasks()
|
|
{
|
|
var cliRunner = new CliRunner(false);
|
|
|
|
var completedTask = Task.FromResult("done");
|
|
|
|
var cts = new CancellationTokenSource();
|
|
var runningTask = Task.Delay(TimeSpan.FromSeconds(30), cts.Token);
|
|
|
|
cliRunner.AddTaskForTest(completedTask, "completed");
|
|
cliRunner.AddTaskForTest(runningTask, "running", cts);
|
|
|
|
await Task.Delay(50);
|
|
|
|
cliRunner.RefreshTaskStates();
|
|
cliRunner.CancelUndoneTasksAsTimedOut();
|
|
cliRunner.RefreshTaskStates();
|
|
|
|
Assert.AreEqual(2, cliRunner.TaskPool.Count);
|
|
|
|
var completed = cliRunner.TaskPool.First(t => t.Name == "completed");
|
|
var timedOut = cliRunner.TaskPool.First(t => t.Name == "running");
|
|
|
|
Assert.AreEqual(CliTaskState.Completed, completed.State);
|
|
Assert.IsTrue(completed.UseResult);
|
|
|
|
Assert.AreEqual(CliTaskState.TimedOut, timedOut.State);
|
|
Assert.IsFalse(timedOut.UseResult);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TimeOutReceived_ShouldReturnTrue_WhenElapsedExceedsTimeout()
|
|
{
|
|
var cliRunner = new CliRunner(false);
|
|
|
|
Thread.Sleep(30);
|
|
|
|
Assert.IsTrue(cliRunner.TimeOutReceived(1));
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task AreTasksDone_ShouldReturnTrue_WhenTimedOutTasksAreMarked()
|
|
{
|
|
var cliRunner = new CliRunner(false);
|
|
|
|
var cts = new CancellationTokenSource();
|
|
var runningTask = Task.Delay(TimeSpan.FromSeconds(30), cts.Token);
|
|
|
|
cliRunner.AddTaskForTest(runningTask, "running", cts);
|
|
|
|
await Task.Delay(50);
|
|
|
|
Assert.IsFalse(cliRunner.AreTasksDone());
|
|
|
|
cliRunner.CancelUndoneTasksAsTimedOut();
|
|
cliRunner.RefreshTaskStates();
|
|
|
|
Assert.IsTrue(cliRunner.AreTasksDone());
|
|
}
|
|
}
|
|
} |