示例#1
0
        /// <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);
        }
示例#2
0
        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();
                }
            }
        }