[DataRow(69, 100, 27, 3, true)] //Internet ok; gpu0(ld=100%, t=69 C); gpu1(ld=3%, t=27 C) public void VerifySupervisedAppRestarts(Single t0, Single l0, Single t1, Single l1, Boolean ic) { pr.UtilityManager.Stub(x => x.IsOnline()).Return(ic).Repeat.Times(7); pr.Args.CheckInet = false; gpu0.Temperature.Stub(x => x.Value).Return(t0); gpu0.Load.Stub(x => x.Value).Return(l0); gpu1.Temperature.Stub(x => x.Value).Return(t1); gpu1.Load.Stub(x => x.Value).Return(l1); pr.Process.Stub(x => x.WaitForExit()).WhenCalled(x => Thread.Sleep(200)); using (var tm = new System.Timers.Timer(10)) { void OnElapsed(Object sender, System.Timers.ElapsedEventArgs e) => pr.Timer.Raise(x => x.Elapsed += null); var superviser = new Superviser(pr); tm.Elapsed += OnElapsed; tm.Start(); superviser.Start(); tm.Elapsed -= OnElapsed; } pr.UtilityManager.AssertWasCalled(x => x.RestartProcess(Arg <IProcess> .Is.Anything)); }
[DataRow(69, 100, 27, 3)] //Internet ok; gpu0(ld=100%, t=69 C); gpu1(ld=3%, t=27 C) public void VerifySupervisedAppStopsAndRunsOnInetFail(Single t0, Single l0, Single t1, Single l1) { pr.UtilityManager.Stub(x => x.IsOnline()).Return(true).Repeat.Times(2); pr.UtilityManager.Stub(x => x.IsOnline()).Return(false).Repeat.Times(9); pr.UtilityManager.Stub(x => x.IsOnline()).Return(true); gpu0.Temperature.Stub(x => x.Value).Return(t0); gpu0.Load.Stub(x => x.Value).Return(l0); gpu1.Temperature.Stub(x => x.Value).Return(t1); gpu1.Load.Stub(x => x.Value).Return(l1); pr.Process.Stub(x => x.WaitForExit()).WhenCalled(x => Thread.Sleep(200)); using (var tm = new System.Timers.Timer(5)) { void OnElapsed(Object sender, System.Timers.ElapsedEventArgs e) => pr.Timer.Raise(x => x.Elapsed += null); var superviser = new Superviser(pr); tm.Elapsed += OnElapsed; tm.Start(); superviser.Start(); tm.Elapsed -= OnElapsed; } pr.UtilityManager.AssertWasCalled(x => x.StopProcess(Arg <IProcess> .Is.Anything), opt => opt.Repeat.Times(1)); pr.UtilityManager.AssertWasCalled(x => x.StartProcess(Arg <IProcess> .Is.Anything), opt => opt.Repeat.Times(1)); }