private void TestAllBTN_Click(object sender, EventArgs e) { try { if (m_running) { throw new InvalidOperationException("A test is already running."); } ResultsCTRL.Clear(); OkBTN.Enabled = m_running = true; ThreadPool.QueueUserWorkItem(new WaitCallback(DoAllTests), null); } catch (Exception exception) { GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception); } }
/// <summary> /// Called when the test completes. /// </summary> public void TestComplete(object state) { if (InvokeRequired) { BeginInvoke(new WaitCallback(TestComplete), state); return; } try { ProgressCTRL.Value = ProgressCTRL.Maximum; ResultsCTRL.Add((PerformanceTestResult)state); } catch (Exception e) { GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), e); } }
/// <summary> /// Saves the current results. /// </summary> private void SaveResults(string filePath) { PerformanceTestResult[] results = ResultsCTRL.GetResults(); if (results.Length == 0) { return; } Stream ostrm = File.Open(filePath, FileMode.Create); StreamWriter writer = new StreamWriter(ostrm); writer.Write("Url"); writer.Write(",Protocol"); writer.Write(",SecurityMode"); writer.Write(",Algorithms"); writer.Write(",Encoding"); foreach (KeyValuePair <int, double> result in results[0].Results) { writer.Write(",{0} Values", result.Key); } writer.Write("\r\n"); for (int ii = 0; ii < results.Length; ii++) { EndpointDescription endpoint = results[ii].Endpoint.Description; Uri uri = new Uri(endpoint.EndpointUrl); writer.Write("{0}", uri); writer.Write(",{0}", uri.Scheme); writer.Write(",{0}", endpoint.SecurityMode); writer.Write(",{0}", SecurityPolicies.GetDisplayName(endpoint.SecurityPolicyUri)); writer.Write(",{0}", (results[ii].Endpoint.Configuration.UseBinaryEncoding)?"Binary":"XML"); foreach (KeyValuePair <int, double> result in results[ii].Results) { writer.Write(",{0}", result.Value); } writer.Write("\r\n"); } writer.Close(); m_filePath = filePath; }
/// <summary> /// Loads previously saved results. /// </summary> private void LoadResults(string filePath) { Stream istrm = File.OpenRead(filePath); DataContractSerializer serializer = new DataContractSerializer(typeof(PerformanceTestResult[])); PerformanceTestResult[] results = (PerformanceTestResult[])serializer.ReadObject(istrm); istrm.Close(); ResultsCTRL.Clear(); foreach (PerformanceTestResult result in results) { ResultsCTRL.Add(result); } m_filePath = filePath; }