Ejemplo n.º 1
0
        public void SerializeClassWithLoggerTest()
        {
            RestartManagerExtendedSession testObject = new RestartManagerExtendedSession();

            testObject.ManualRestartProcesses.Add("yoyoyo");
            Assert.IsTrue(testObject.SessionKey != (new RestartManagerExtendedSession()).SessionKey);
            MySerialize.SaveObject(TestFile, testObject);
            System.Threading.Thread.Sleep(10);
            var nextObject = MySerialize.LoadObject <RestartManagerExtendedSession>(TestFile);

            Assert.IsTrue(nextObject.SessionKey == testObject.SessionKey);
            Assert.IsTrue(nextObject.ManualRestartProcesses.IsEquivalentTo(testObject.ManualRestartProcesses));
        }
Ejemplo n.º 2
0
        public void TestRestartManagerManualShutdown()
        {
            var ReplacementProcessCopy = ReplacementProcess + "2";

            File.Copy(ReplacementProcess, ReplacementProcessCopy, true);

            //Start up the service and TRY to move the file. It should fail
            Process proc = Process.Start(ReplacementProcess);

            //We're hoping this will fail, as the process SHOULD be holding onto this guy
            MyAssert.ThrowsException(() => File.Copy(ReplacementProcessCopy, ReplacementProcess, true));

            //Now startup the restart manager and lets hope the process will be restarted.
            RestartManagerExtendedSession manager = new RestartManagerExtendedSession();

            manager.ManualRestartProcesses.Add(ReplacementProcess);
            manager.StartSession();
            manager.RegisterResources(new List <string>()
            {
                ReplacementProcess
            });

            RM_REBOOT_REASON rebootReason = default(RM_REBOOT_REASON);
            var processes = RestartManager.RmProcessToNetProcess(manager.GetList(ref rebootReason));

            Assert.IsTrue(rebootReason == RM_REBOOT_REASON.RmRebootReasonNone);
            Assert.IsTrue(processes.Count > 0);

            //After shutdown, the file should be copyable
            manager.Shutdown();
            ThreadingServices.WaitOnAction(() => File.Copy(ReplacementProcessCopy, ReplacementProcess, true), TimeSpan.FromSeconds(3));

            //Now try to restart everything
            manager.Restart();

            //We're hoping this will fail, as the service SHOULD be holding onto this guy again
            MyAssert.ThrowsException(() => ThreadingServices.WaitOnAction(() => File.Copy(ReplacementProcessCopy, ReplacementProcess, true), TimeSpan.FromSeconds(2)));

            manager.EndSession();

            System.Diagnostics.Process.GetProcessesByName(ReplacementProcess.Replace(".exe", "")).ToList().ForEach(x => x.Kill());
        }