コード例 #1
0
        public static void FrontEndAlgorithmInfoTest(string name)
        {
            Console.WriteLine("Testing FrontEnd:GetAlgorithmInfo-normal use.\t UserIdentity {0}", name);
            UserID user = new UserID(name);

            try
            {
                foreach (var item in proxy_simulation.GetAlgorithmInfo(user))
                {
                    Console.WriteLine("ID:{0}\tName:{1}\tDescription:{2}", item.AlgorithmID, item.AlgorithmName, item.AlgorithmDescription);
                }
            }
            catch (FaultException <GeneratorServiceFault> fault)//odchytavani vyjimek ze serveru
            {
                ConsoleServerMessage(fault);
            }
            catch (Exception e)//odchytnuti vyjimky z klienta
            {
                Console.WriteLine("Client:{0}", e.Message);
            }
            finally
            {
                Console.WriteLine("-".Repeat(70));
            }
        }
        /// <summary>
        /// <c>InitializeBackEnd</c> - pomocná metoda pro nastavení vlastností "proxy_simulation" a "algo".
        /// </summary>
        /// <remarks>Připojuje se k serverové části (back-end), kde získá seznam dostupných algoritmů.</remarks>
        //
        // pomocná metoda (nelze volat z webu)
        private string InitializeBackEnd()
        {
            string myError = null;

            try
            {
                proxy_simulation = new SimulationServiceClient("BasicHttpBinding_SimulationService"); // propojení s back-endem
                algo             = proxy_simulation.GetAlgorithmInfo(tester);                         // seznam objektů AlgorithmInfo (ze serveru)
            }
            catch (Exception e)
            {
                myError = "Chyba: nepodařilo se spojit s jádrem aplikace (back-end). Jedná se o chybu serveru - kontaktujte správce GNP (viz odkaz dole).";
            }

            return(myError);
        }
コード例 #3
0
        /// <summary>
        /// Ukazka pouziti volani simulaci. Kazde volani simuluje jednoho klienta.
        /// </summary>
        public void ClientRun(string username)
        {
            try
            {
                UserID user = new UserID(username);    //uzivatel-je predavan serveru

                //zjisteni informaci o algoritmech
                Console.WriteLine("Zjistuji informace o implementovanych algoritmech:");
                var algoritms = proxy_simulation.GetAlgorithmInfo(user);    //seznam informaci o algoritmech, volani pomoci proxy_simulation objektu
                foreach (var item in algoritms)
                {
                    Console.WriteLine("ID:{0}\tJmeno:{1}\tPopis:{2}", item.AlgorithmID, item.AlgorithmName, item.AlgorithmDescription);
                }
                //vytvoreni senatu-informace o senatech musi byt nactene z databaze a zde vytvoreny jejich instance
                //Dochazi k volani konstruktoru na strane klienta, viz DataContractHelpers.cs, kde jsou tyto konstruktory implementovany
                Senate s1 = new Senate("INS-tester-1");                //senat, ktery je povoleny,zatizeni 100, pocet aktivnich pripadu 0
                Senate s2 = new Senate("INS-tester-2", false);         //senat je zakazany-nebude pouzit v simulaci
                Senate s3 = new Senate("INS-tester-3", true, 50);      //senat je povoleny, zatizeni je 50, pocet aktivnich pripadu 0
                Senate s4 = new Senate("INS-tester-4", true, 100, 20); //senat je povoleny, zatizeni 100, pocet aktivnich pripadu 20
                Senate s5 = new Senate("INS-tester-5");
                //po odkomentovani vyjimka-volana na strane klienta
                //Senate s6 = new Senate("INS-tester-6",true,120);//zpusobi vyjimku na strane klienta, nepovolena hodnota zatizeni 120
                SimulationParams par = new SimulationParams(); //vytvoreni tridy pro simulacni parametry, pred odeslanim na server musi byt vse nastaveno
                par.User    = user;                            //nastav si uzivatele
                par.Senates = new List <Senate>()
                {
                    s1, s2, s3, s4, s5
                };                                                                                         //musi se vytvorit seznam senatu pro simulaci
                //vyber algoritmu pro simulaci, na FE uzivatel vybere
                par.AlgorithmsToSimulate = (from a in algoritms select int.Parse(a.AlgorithmID)).ToList(); //zjisti-vem ID vsech implementovanych algoritmu pro pouziti v simulaci
                par.IterationsCount      = 100;                                                            //nastaveni poctu iteraci
                par.CasesToDistribution  = 1000;                                                           //pocet rozdelovanych pripadu v kazde iteraci
                var results = proxy_simulation.DoSimulation(par);                                          //proved simulaci-bezi na serveru

                if (results.Count != par.AlgorithmsToSimulate.Count)                                       //test zda ma spravny pocet vysledku
                {
                    throw new Exception("WRONG RESULTS: Algorithm to simulate inconsistence.");
                }
                else    //kdyz ok
                {
                    foreach (var result in results)
                    {
                        if (result.Data.Count != par.IterationsCount)
                        {
                            throw new Exception("WRONG RESULTS: Iteration counts.");
                        }
                        StatisticInfo(result.Data, username);
                    }
                }
            }
            catch (FaultException <GeneratorServiceFault> fault)//odchytavani vyjimek ze serveru
            {
                ConsoleServerMessage(fault);
            }
            catch (Exception e)//odchytnuti vyjimky z klienta
            {
                ConsoleClientMessage(e);
            }
            finally
            {
                Console.WriteLine("DONE: {0}", username);
            }
        }