/// <summary> /// /// </summary> /// <param name="requestUri"></param> /// <param name="requestMethod"></param> /// <param name="testStart"></param> /// <param name="testEnd"></param> /// <param name="expectedStatus"></param> /// <param name="requestHeaders"></param> /// <param name="getBodyContent">Func<int(instanceNumber), int(requestCount)></param> /// <returns></returns> public static LoadTestRecurrentHttpRequest Create ( LoadTestHttpRequest httpRequest, DateTimeOffset testStart, DateTimeOffset testEnd, int?expectedStatus = null, Func <int, int, string> getBodyContent = null ) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } var cmd = new LoadTestRecurrentHttpRequest ( httpRequest, testStart, testEnd, expectedStatus, getBodyContent ); InstanceCount++; cmd.InstanceNumber = InstanceCount; return(cmd); }
private static void ExecuteRecurrentRequests ( Uri requestUri, HttpMethod requestMethod, DateTimeOffset testStart, DateTimeOffset testEnd, int threadCount, IEnumerable <KeyValuePair <string, string> > requestHeaders = null, int?expectedStatus = null ) { var commandColl = new LoadTestRecurrentHttpRequest[threadCount]; var taskColl = new Task[threadCount]; try { for (var i = 0; i < threadCount; i++) { var httpRequest = new LoadTestHttpRequest() { RequestBody = null, RequestMethod = requestMethod, RequestUri = requestUri, }; httpRequest.SetRequestHeaders(requestHeaders); commandColl[i] = LoadTestRecurrentHttpRequest.Create ( httpRequest, testStart, testEnd, expectedStatus, GetBodyContent ); taskColl[i] = commandColl[i].ExecuteAsync(); } Task.WaitAll(taskColl); LoadTestRecurrentHttpRequest.ResetInstanceCount(); } finally { foreach (var command in commandColl) { command.HttpRequest.Dispose(); } } }