private StressResult PerformRequest(StressRequest req) { HttpWebRequest request = null; HttpWebResponse response = null; Stopwatch watch = new Stopwatch(); StressResult result = new StressResult(req); try { watch.Start(); request = (HttpWebRequest)WebRequest.Create(req.Url); request.Method = "GET"; request.KeepAlive = true; response = (HttpWebResponse)request.GetResponse(); using (Stream stream = response.GetResponseStream()) { using (MemoryStream ms = new MemoryStream()) { stream.CopyTo(ms); result.ContentLength = ms.Length; } } watch.Stop(); result.TimeTaken = watch.ElapsedMilliseconds; result.HttpStatusCode = response.StatusCode; result.Success = true; if (this.KeepHeaders.Count > 0) { result.ResponseHeaders = new List <string>(); Dictionary <string, string> dic = response.Headers.AllKeys.ToDictionary(h => h, h => response.Headers[h]); foreach (var kh in this.KeepHeaders) { string value = String.Empty; dic.TryGetValue(kh, out value); result.ResponseHeaders.Add(value); } } return(result); } catch (Exception e) { // TODO: Consider including exception in result result.Success = false; return(result);; } finally { if (response != null) { response.Close(); } } }
private StressResult Report(StressResult r) { var data = new List <string>() { r.Request.Id, r.Success.ToString(), r.HttpStatusCode.ToString(), r.TimeTaken.ToString(), r.ContentLength.ToString(), r.Request.Url }; if (r.ResponseHeaders != null) { data = data.Concat(r.ResponseHeaders).ToList(); } Console.WriteLine(string.Join(";", data)); return(r); }