public void TestStartKillStartAgain() { using (var watchdog = new ProcessWatchdog()) { watchdog.Start(); const string reason = "because the process shouldn't have failed"; watchdog.IsProcessRunning.Should().BeTrue(reason); watchdog.HasProcessFailed.Should().BeFalse(reason); watchdog.HostedProcessState.Should().Be(HostState.Ready, reason); watchdog.ProcessFailureReason.Should().BeNull(reason); var pid = watchdog.HostedProcessId.Value; var proc = Process.GetProcessById(pid); proc.Kill(); const string failureReason = "because we've killed the process and that failure should've been detected"; watchdog.Property(x => x.IsProcessRunning).ShouldEventually().BeFalse(failureReason); watchdog.Property(x => x.HasProcessFailed).ShouldEventually().BeTrue(failureReason); watchdog.Property(x => x.HostedProcessState).ShouldEventually().Be(HostState.Dead, failureReason); watchdog.Property(x => x.ProcessFailureReason).ShouldEventually().Be(ProcessFailureReason.HostProcessExitedUnexpectedly, failureReason); watchdog.Start(); const string newReason = "because we've restarted the process and thus everything should be back to normal again"; watchdog.IsProcessRunning.Should().BeTrue(newReason); watchdog.HasProcessFailed.Should().BeFalse(newReason); watchdog.HostedProcessState.Should().Be(HostState.Ready, newReason); watchdog.ProcessFailureReason.Should().BeNull(newReason); } }
public void TestStartKillStart() { using (var watchdog = new ProcessWatchdog()) { watchdog.Start(); watchdog.IsProcessRunning.Should().BeTrue(); watchdog.HasProcessFailed.Should().BeFalse(); var pid = watchdog.HostedProcessId.Value; var proc = Process.GetProcessById(pid); proc.Kill(); watchdog.Start(); watchdog.IsProcessRunning.Should().BeTrue("Because we've just started that process again"); watchdog.HasProcessFailed.Should().BeFalse("Because we've just started that process again"); } }
public void TestTryKill() { using (var watchdog = new ProcessWatchdog()) { watchdog.Start(); watchdog.RemotePort.Should().HaveValue(); watchdog.IsProcessRunning.Should().BeTrue(); watchdog.HasProcessFailed.Should().BeFalse(); watchdog.TryKill(); watchdog.RemotePort.Should().NotHaveValue(); watchdog.IsProcessRunning.Should().BeFalse(); watchdog.HasProcessFailed.Should().BeTrue(); } }
public void TestDispose2() { ProcessWatchdog watchdog; using (watchdog = new ProcessWatchdog()) { watchdog.RemotePort.Should().NotHaveValue(); watchdog.HostedProcessId.Should().NotHaveValue(); watchdog.Start(); watchdog.RemotePort.Should().HaveValue(); watchdog.HostedProcessId.Should().HaveValue(); } watchdog.RemotePort.Should().NotHaveValue(); watchdog.HostedProcessId.Should().NotHaveValue(); }
public void TestStartKill() { using (var watchdog = new ProcessWatchdog()) { watchdog.Start(); watchdog.IsProcessRunning.Should().BeTrue(); watchdog.HasProcessFailed.Should().BeFalse(); var pid = watchdog.HostedProcessId.Value; var proc = Process.GetProcessById(pid); proc.Kill(); watchdog.Property(x => x.HasProcessFailed).ShouldEventually().BeTrue(); watchdog.Property(x => x.IsProcessRunning).ShouldEventually().BeFalse(); watchdog.Property(x => x.ProcessFailureReason).ShouldEventually().Be(ProcessFailureReason.HostProcessExitedUnexpectedly); } }
public void TestTryKill() { using (var watchdog = new ProcessWatchdog()) { watchdog.Start(); watchdog.RemotePort.Should().HaveValue(); watchdog.IsProcessRunning.Should().BeTrue(); watchdog.HasProcessFailed.Should().BeFalse(); watchdog.ProcessFailureReason.Should().BeNull("because the process shouldn't have failed"); watchdog.TryKill(); watchdog.RemotePort.Should().NotHaveValue(); watchdog.IsProcessRunning.Should().BeFalse(); watchdog.HasProcessFailed.Should().BeTrue(); watchdog.ProcessFailureReason.Should() .BeNull("because we've explicitly killed the process and thus no fault occured"); } }
public void TestDispose2() { ProcessWatchdog watchdog; int pid; using (watchdog = new ProcessWatchdog()) { watchdog.RemotePort.Should().NotHaveValue(); watchdog.HostedProcessId.Should().NotHaveValue(); watchdog.Start(); watchdog.RemotePort.Should().HaveValue(); watchdog.HostedProcessId.Should().HaveValue(); pid = watchdog.HostedProcessId.Value; ProcessWithPidShouldBeRunning(pid); } watchdog.RemotePort.Should().NotHaveValue(); watchdog.HostedProcessId.Should().NotHaveValue(); ProcessWithPidShouldNotBeRunning(pid); }