public void HostProgramTerminatesWhenItsOwnerProcessTerminates()
        {
            ProcessTask ownerProcess   = StartHost("/ipc-port:HostIntegrationTest-Owner /timeout:30");
            int         ownerProcessId = ownerProcess.Process.Id;

            ProcessTask task = StartHost("/ipc-port:HostIntegrationTest /owner-process:" + ownerProcessId);

            Assert.IsFalse(task.Join(TimeSpan.FromSeconds(2)), "The host should not have exited yet.");

            ownerProcess.Abort();
            Assert.IsTrue(task.Join(TimeSpan.FromSeconds(5)), "The host should terminate.");

            Assert.Contains(task.ConsoleOutput, "Owner process terminated abruptly!");
            Assert.AreEqual(0, task.ExitCode);
        }
        public void HostProgramTerminatesAutomaticallyOnTimeoutIfNoConnection()
        {
            ProcessTask task = StartHost("/ipc-port:HostIntegrationTest /timeout:1");

            task.Join(TimeSpan.FromSeconds(10));

            Assert.Contains(task.ConsoleOutput, "Watchdog timer expired!");
            Assert.AreEqual(0, task.ExitCode);
        }
        public void HostProgramTerminatesImmediatelyIfOwnerProcessDoesNotExist()
        {
            ProcessTask task = StartHost("/ipc-port:HostIntegrationTest /owner-process:100000"); // invalid process id

            task.Join(TimeSpan.FromSeconds(5));

            Assert.Contains(task.ConsoleOutput, "The owner process with PID 100000 does not appear to be running!");
            Assert.AreEqual(0, task.ExitCode);
        }
        public void HostProgramPrintsHelpUsageWhenHelpOptionSpecified()
        {
            ProcessTask task = StartHost("/help");

            task.Join(TimeSpan.FromSeconds(5));

            Assert.Contains(task.ConsoleOutput, "Available options");
            Assert.AreEqual(0, task.ExitCode);
        }
예제 #5
0
            public void SetUp()
            {
                terminatedSuccessfully = new ManualResetEvent(false);

                processTask = Tasks.StartProcessTask(Path.Combine(Environment.SystemDirectory, "cmd.exe"),
                                                     "/C exit " + COR_E_STACKOVERFLOW, Environment.CurrentDirectory);
                processTask.Terminated += processTask_Terminated;
                processTask.Start();
                Assert.IsTrue(processTask.Join(TimeSpan.FromSeconds(10)), "Wait for exit");
            }