Beispiel #1
0
        public async Task <JsonResult> startAPITest([FromBody] APIVMod apiDat)
        {
            apiDat = await _utils.testAPI(apiDat);

            //var dict = apiDat.timings.elapsedTimes.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s);
            apiDat.timings.jsonTimes = JsonConvert.SerializeObject(apiDat.timings.elapsedTimes);
            return(Json(apiDat));
        }
Beispiel #2
0
        //method for performing the test.
        public async Task <APIVMod> testAPI(APIVMod apiDat)
        {
            List <string> tresults     = new List <string>();
            List <long>   elapsedTimes = new List <long>();
            Stopwatch     stopwatch    = new Stopwatch();

            stopwatch.Start();
            for (int i = 0; i < apiDat.testNum; i += apiDat.conNum)
            {
                List <Task <HttpResponseMessage> > calls = new List <Task <HttpResponseMessage> >();
                for (int d = 0; d < apiDat.conNum; d++)
                {
                    try
                    {
                        var           client        = new HttpClient();
                        StringContent stringContent = new StringContent(apiDat.jsonBody, UnicodeEncoding.UTF8, "application/json");
                        if (apiDat.requestType == "Post")
                        {
                            calls.Add(client.PostAsync(apiDat.apiUrl, stringContent));
                        }
                        else if (apiDat.requestType == "Get")
                        {
                            calls.Add(client.GetAsync(apiDat.apiUrl));
                        }
                    }

                    catch (HttpRequestException ex)
                    {
                    }
                }

                Task.WhenAny(calls).ContinueWith(t => elapsedTimes.Add(stopwatch.ElapsedMilliseconds));
                var results = await Task.WhenAll(calls);

                foreach (var call in results)
                {
                    var test = call.StatusCode;
                    tresults.Add(test.ToString());
                }
                apiDat.finalResponseText     = results.LastOrDefault().Content.ReadAsStringAsync().Result;
                apiDat.testData.successCount = tresults.Count(p => p.Contains("OK"));
                if (!(i >= apiDat.testNum))
                {
                    Thread.Sleep(apiDat.testDelay);
                }
            }
            var totalTime = stopwatch.ElapsedMilliseconds;

            stopwatch.Stop();
            apiDat.timings.elapsedTimes = getTimeDifs(elapsedTimes);
            apiDat.timings.totalTime    = totalTime;


            return(apiDat);
        }