public void TestMethodMultiHibernation() { var proces = new HibernateWorkflowSimple() { InputParametr = 10 }; var vm = new VirtualMachine.VirtualMachine(); vm.Start(proces); var serializedVMXml = vm.Serialize(); object retFromSerializedVM = ""; while (vm.Status == VirtualMachineState.Hibernated) { vm = VirtualMachine.VirtualMachine.Deserialize(serializedVMXml); retFromSerializedVM = vm.Resume(); serializedVMXml = vm.Serialize(); } var inProcProces = new HibernateWorkflowSimple() { InputParametr = 10 }; var retInProcProces = inProcProces.Start(); Assert.AreEqual(retInProcProces, retFromSerializedVM); }
public ProcessStatus StartLongRunningProcess <T>(object inputParameter) where T : ILongRunningProcess { var process = CreateProcess <T>(); process.ProcessData.ProcessInstanceContainer.ProcessTypeData .ProcessType = ProcessType.LongRunningProcess; var vm = new VirtualMachine.VirtualMachine(); process.LongRunningProcessData.VirtualMachine = vm; var result = vm.Start <object>("Start", process); AfterRunProcess(process, result); SaveProcess(process); if (vm.Thread.Status == VirtualMachineState.Hibernated) { var processStatus = new ProcessStatus(); processStatus.Status = ProcessExecutionStaus.Pending; processStatus.ProcessId = process.ProcessData.ProcessId; processStatus.ProcessNumber = process.ProcessData.ProcessNumber; return(processStatus); } else { throw new Exception("Process end immediately. It should use hibernation for long running process"); } }
public void TestDwochKonstruktorow() { var proces = new DwaParametryProces(); var vm = new VirtualMachine.VirtualMachine(); var vmWynik = vm.Start(proces); var wynik = proces.Start(); Assert.AreEqual(wynik, vmWynik); }
public void Test_DodawaniePracownikaProces() { var proces = new DodawaniePracownikaProces(); var vm = new VirtualMachine.VirtualMachine(); var vmWynik = vm.Start(proces); var wynik = proces.Start(); Assert.AreEqual(wynik, vmWynik); }
public void TestMethod1() { var proces = new FluentUIProcess(); var vm = new VirtualMachine.VirtualMachine(); var vmWynik = vm.Start(proces); proces = vm.Instance as FluentUIProcess; proces = new FluentUIProcess(); var wynik = proces.Start(); Assert.AreEqual(wynik, vmWynik); }
public void ArithmeticTest() { var proces = new ArithmeticProcess(); var vm = new VirtualMachine.VirtualMachine(); var vmWynik = vm.Start(proces); proces = vm.Instance as ArithmeticProcess; proces = new ArithmeticProcess(); var wynik = proces.Start(); Assert.AreEqual(wynik, vmWynik); }
public void Test_RepozytoriumTestProces() { var proces = new RepozytoriumTestProces(); var vm = new VirtualMachine.VirtualMachine(); var vmWynik = vm.Start(proces) as List <Pracownik>; var wynik = proces.Start() as List <Pracownik>; Assert.AreEqual(wynik.Count, vmWynik.Count); for (int i = 0; i < wynik.Count; i++) { Assert.AreEqual(wynik[i], vmWynik[i]); } }
public void TestMethod1() { var proces = new ProstaHibernacjaProces(); var vm = new VirtualMachine.VirtualMachine(); vm.Start(proces); //zwraca null, bo proces się zahibernował Assert.IsTrue(vm.Status == VirtualMachineState.Hibernated); vm.Resume(); //wznawiam wykonanie procesu -> po czym proces powinien znów się zahibernować Assert.IsTrue(vm.Status == VirtualMachineState.Hibernated); vm.Resume(); //wznawiam wykonanie procesu -> po czym proces powinien się zakończyć i zwrócić wynik wewnętrzny Assert.IsTrue(vm.Status == VirtualMachineState.Executed); var vmWynik = vm.Wynik; var wynik = proces.Start(); Assert.AreEqual(wynik, vmWynik); }
public void TestMethod2() { var proces = new HibernacjaProces(); var wynik = proces.Start(); //wynik procesu wykonanego 'natywnie' proces = new HibernacjaProces(); var vm = new VirtualMachine.VirtualMachine(); vm.Start(proces); //zwraca null, bo proces się zahibernował //wznawiam tyle razy ile potrzeba, tak żeby zakończyć proces while (vm.Status == VirtualMachineState.Hibernated) { vm.Resume(); } var vmWynik = vm.Wynik; //wynik procesu interpretowanego w VM Assert.AreEqual(wynik, vmWynik); }
public void TestMethod1() { var proces = new HibernateWorkflowSimple() { InputParametr = 10 }; var vm = new VirtualMachine.VirtualMachine(); vm.Start(proces); var serializedVMXml = vm.Serialize(); var vmNew = VirtualMachine.VirtualMachine.Deserialize(serializedVMXml); var retFromSerializedVM = vmNew.Resume(); var inProcProces = new HibernateWorkflowSimple() { InputParametr = 10 }; var retInProcProces = inProcProces.Start(); Assert.AreEqual(retInProcProces, retFromSerializedVM); }
public ProcessContainer AddProcess(ProcessBase process) { if (process.Debug == true) { //uruchamiamy proces w trybie debug var kontenerProcesu = new DebugProcesContainer() { Id = process.Id }; kontenerProcesu.Process = process; kontenerProcesu.Thread = new Thread(debugThread); kontenerProcesu.Thread.Name = "proces " + process.Id; process.Status = EnumProcessStatus.WaitingForExecution; debugProcesess.Add(kontenerProcesu); kontenerProcesu.Thread.Start(kontenerProcesu); return(kontenerProcesu); } else { process.Status = EnumProcessStatus.WaitingForExecution; var wm = new VirtualMachine.VirtualMachine(); //dodaje tylko do kolejki uruchomienia - nie uruchamiam w tym wątku wm.Start(process, doExecuting: false); var xml = wm.Serialize(); var serializedProcess = new ProcessContainer(); serializedProcess.Id = process.Id; serializedProcess.Status = process.Status; serializedProcess.ExecutionDate = process.ExecutionDate; serializedProcess.VirtualMachineXml = xml; dal.AddProcess(serializedProcess); return(serializedProcess); } }