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); }
/// <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); } }