Saturday, January 12, 2013

Load test a web site using asynchronous requests and the TPL

  1. var queue = new Queue<Task>();
  2. while (true)
  3. {
  4. if (queue.Count >= 50)
  5. {
  6. var task = queue.Dequeue();
  7. task.Wait();
  8. task.Dispose();
  9. }
  10. var request = (HttpWebRequest) WebRequest.Create(url);
  11. var watch = Stopwatch.StartNew();
  12. queue.Enqueue(Task.Factory
  13. .FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null)
  14. .ContinueWith(task =>
  15. {
  16. using (var response = (HttpWebResponse) task.Result)
  17. {
  18. Console.WriteLine("{0}\t{1}\t{2}",
  19. response.StatusCode, response.ContentType, watch.Elapsed);
  20. }
  21. }));
  22. }
Task Parallel Library (TPL)

No comments: