Exemple #1
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");
            }
        }
        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);
        }
Exemple #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);
        }
Exemple #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);
        }
        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);
        }
Exemple #7
0
        static void Main(string[] args)
        {
            FileReader f = new FileReader("thescript");
            Tokenizr.Tokenizr t = new Tokenizr.Tokenizr(f.GetSplittedLines());

            Console.WriteLine("\n===============Compiler=================== ");
            Compiler.Compiler c = new Compiler.Compiler(t.Tokens);

            Console.WriteLine("\n===============VirtualMachine============= ");
            VirtualMachine.VirtualMachine vm = new VirtualMachine.VirtualMachine();

            vm.Execute(c.Actions);
            //vm.Print();
            Console.ReadLine();
        }
        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);
            }
        }
Exemple #13
0
 public void SetVirtualMachine(VirtualMachine.VirtualMachine vm)
 {
     VirtualMachineXml = vm.Serialize();
 }
Exemple #14
0
 public static ProcessBase GetProcess(this VirtualMachine.VirtualMachine virtualMachine)
 {
     return(virtualMachine.Instance as ProcessBase);
 }
Exemple #15
0
        static void Main(string[] args)
        {
            Tests();

            _logger.Info("Run your ATC-8 Assembly commands: ");

            try
            {
                var parser = new Parser();
                var vm     = new VirtualMachine.VirtualMachine();

                while (true)
                {
                    var currLine = Console.ReadLine();
                    if (string.IsNullOrEmpty(currLine))
                    {
                        _logger.Warning("The line is empty");
                        continue;
                    }

                    if (currLine.ToLower() == "help" || currLine.ToLower() == "?")
                    {
                    }
                    else if (currLine.ToLower() == "quit" || currLine.ToLower() == "exit" || currLine.ToLower() == "q")
                    {
                        break;
                    }

                    bool shouldViewBytecode = false;
                    if (currLine.EndsWith("|d"))
                    {
                        shouldViewBytecode = true;
                        currLine           = currLine.Replace("|d", "");
                    }

                    Word[] bytecode;

                    try
                    {
                        bytecode = parser.ParseString(currLine + "\n");
                    }
                    catch (Exception e)
                    {
                        _logger.Error(e.Message);
                        continue;
                    }

                    if (shouldViewBytecode)
                    {
                        var maxBytesOnLine = 20;

                        Console.WriteLine();

                        for (int i = 0; i < bytecode.Length; i++)
                        {
                            if (maxBytesOnLine != 0 && i != 0 && i % maxBytesOnLine == 0)
                            {
                                Console.WriteLine();
                            }
                            Console.Write($"{((byte) bytecode[i]).ToHexString().ToUpper()} ");
                        }

                        Console.WriteLine("\n");
                    }

                    try
                    {
                        vm.Interpret(bytecode);
                    }
                    catch (Exception e)
                    {
                        _logger.Error(e.Message);
                    }

                    Console.WriteLine();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.ReadKey();
                Environment.Exit(1);
            }


            Console.WriteLine("Success! Press any key to continue..");
            Console.ReadKey();
        }
Exemple #16
0
        private static void Tests()
        {
            Console.WriteLine(" ===== TESTS ===== \n");

            var ax = new Register(RegisterName.Ax, 0xFA); // 0b11111010
            var bx = new Register(RegisterName.Bx, 0x00); // 0b00000000
            var cx = new Register(RegisterName.Cx, 0xFF); // 0b11111111
            var dx = new Register(RegisterName.Dx, 0b10101010);

            Console.WriteLine($"{ax} {bx} {cx} {dx}");

            Console.WriteLine(((ax.Value << 16) >> 12) & 0xffff);

            string test = "abcdefg";
            var    b    = test.ToWordArray();

            foreach (var word in b)
            {
                Console.Write($"{word} ");
            }

            Console.WriteLine();

            var test2 = b.FromWordArray();

            foreach (char ch in test2)
            {
                Console.Write($"{ch} ");
            }

            Console.WriteLine();

            try
            {
                Parser parser   = new Parser();
                var    bytecode = parser.ParseFile("test2.txt");

                Console.WriteLine(Convert.ToString((sbyte)TokenType.Eof, 2));

                for (int i = 0; i < bytecode.Length; i++)
                {
                    if (i % 20 == 0)
                    {
                        Console.WriteLine();
                    }

                    if (bytecode[i] == ',' || bytecode[i] == '[' || bytecode[i] == ']')
                    {
                        Console.Write($"{(char)bytecode[i]} ");
                    }
                    else
                    {
                        Console.Write($"{bytecode[i]} ");
                    }
                }

                bytecode.SaveToFile("bytecode.txt", 20);

                Console.WriteLine("\n");
                VirtualMachine.VirtualMachine vm = new VirtualMachine.VirtualMachine();
                //vm.Interpret(bytecode);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.ReadKey();
                Environment.Exit(1);
            }

            Console.WriteLine(" ===== END TESTS ===== \n");
        }