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);
        }
Beispiel #2
0
        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");
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
            }
        }