Esempio n. 1
0
 public void Init()
 {
     _modelReceive        = new ResultTestReceiveExpandedModel();
     _modelReceive.Url    = "Example.pl";
     _modelReceive.KBytes = 100;
     _modelReceive.Runs.Add(new Run
     {
         Id               = 1,
         LoadTime         = 1000,
         RenderStart      = 1000,
         SpeedIndex       = 2000,
         Ttfb             = 100,
         VisuallyComplete = 1000
     });
     _modelReceive.Browser    = _browser;
     _modelReceive.Connection = _connection;
     _modelReceive.Runs.Add(new Run
     {
         Id               = 2,
         LoadTime         = 1000,
         RenderStart      = 1000,
         SpeedIndex       = 2000,
         Ttfb             = 100,
         VisuallyComplete = 1000
     });
 }
        public static ResultTestReceiveBaseModel ConvertReceive(string json)
        {
            dynamic responseObj = JsonConvert.DeserializeObject(json);

            var    statusCode = (int)responseObj.statusCode.Value;
            string statusText = responseObj.statusText.Value;

            if (statusCode < 200)
            {
                return new ResultTestReceiveBaseModel
                       {
                           StatusCode = statusCode,
                           StatusText = statusText
                       }
            }
            ;

            if (statusCode == 200)
            {
                var result = new ResultTestReceiveExpandedModel
                {
                    StatusCode = statusCode,
                    StatusText = statusText
                };

                result.Url = responseObj.data.url;
                foreach (var r in responseObj.data.runs)
                {
                    var run = new Run();
                    run.Id = (int)r.Value.firstView.run.Value;
                    if (r.Value.firstView.loadTime.Value == 0)
                    {
                        throw new Exception("Result response from server is incorrect");
                    }

                    run.LoadTime         = (int)r.Value.firstView.loadTime.Value;
                    run.RenderStart      = (int)r.Value.firstView.render.Value;
                    run.Ttfb             = (int)r.Value.firstView.TTFB.Value;
                    run.SpeedIndex       = (int)r.Value.firstView.SpeedIndex.Value;
                    run.VisuallyComplete = (int)r.Value.firstView.visualComplete.Value;
                    result.Runs.Add(run);
                    if (result.KBytes != 0)
                    {
                        continue;
                    }
                    result.KBytes  = (int)r.Value.firstView.breakdown.js.bytes / 1024;
                    result.Browser = r.Value.firstView.browser_name;
                }
                result.Connection = responseObj.data.connectivity;

                return(result);
            }
            throw new Exception("Error while receive results test. " +
                                $"HttpCode {statusCode} " +
                                $"ErrorText:{statusText}");
        }
Esempio n. 3
0
        public async Task Save(ResultTestReceiveExpandedModel result, PageModel page)
        {
            if (result == null)
            {
                throw new ArgumentException("Result test of page can't be empty");
            }

            if (result.Runs == null)
            {
                throw new ArgumentException("Result runs test of page can't be empty");
            }

            if (!Directory.Exists(_folder))
            {
                Directory.CreateDirectory(_folder);
            }

            using (var outputFile = new StreamWriter(GetPathFile(page.Name, result.Browser, result.Connection), false))
            {
                await outputFile.WriteLineAsync($"URL: {result.Url}");

                await outputFile.WriteLineAsync($"Framework: {page.Name} v{page.Version}");

                await outputFile.WriteLineAsync($"KBytes of JS: {result.KBytes} kB");

                await outputFile.WriteLineAsync(Environment.NewLine);

                await outputFile.WriteLineAsync("#;TTFB [ms];Render Start[ms];" +
                                                "Visually Complete[ms];Load TIme[ms];Speed Index");

                foreach (var run in result.Runs)
                {
                    await outputFile.WriteLineAsync(
                        $"{run.Id};{run.Ttfb};{run.RenderStart};{run.VisuallyComplete};" +
                        $"{run.LoadTime};{run.SpeedIndex}");
                }
            }
        }