示例#1
0
        private bool SubmitAllTests(string testId, TestRequestParameter testRequest)
        {
            var url = testRequest.Url;

            //add http protocol if protocol is missing
            if (!testRequest.Url.StartsWith("http"))
            {
                url = $"http://{testRequest.Url}";
            }
            _testResponse        = new TestResponse();
            _testResponse.TestId = testId;
            _testResponse.Url    = testRequest.Url;
            try
            {
                GetPageStats(testId, url);
                GetPageScreenshot(testId, url);
                _testResponse.Success        = true;
                _testResponse.TestCompelted  = true;
                _testResponse.TestStatus     = "Completed";
                _testResponse.HttpStatusCode = HttpStatusCode.OK;
            }
            catch (Exception ex) // if an error occurs return false
            {
                _testResponse.Success        = false;
                _testResponse.TestCompelted  = false;
                _testResponse.TestStatus     = "Error while processing.";
                _testResponse.HttpStatusCode = HttpStatusCode.OK;
            }
            return(true);
        }
示例#2
0
        public void Invalid_Credentials_Fails_To_Submit_Test_Request()
        {
            IWebPageTester gtMetrixObject = new GtMetrixTester("abc", "abc");
            var            request        = new TestRequestParameter("https://www.rsagroup.com/");
            var            resposne       = gtMetrixObject.SubmitTest(request);

            Assert.AreEqual(resposne.HttpStatusCode, HttpStatusCode.Unauthorized);
        }
示例#3
0
        /// <summary>
        /// sumbmits the urls passed for basic testing
        /// </summary>
        /// <param name="testRequest">parameters for testing</param>
        /// <returns>A response with a test Id. This can be used to query the results using the GetResult method</returns>
        public SubmitResponse SubmitTest(TestRequestParameter testRequest)
        {
            var testId         = Guid.NewGuid().ToString();
            var result         = SubmitAllTests(testId, testRequest);
            var submitResponse = new SubmitResponse()
            {
                Status  = "OK",
                Success = true,
                TestId  = testId
            };

            return(submitResponse);
        }
        /// <summary>
        /// submits a request to GtMetrix.com via API
        /// </summary>
        /// <param name="testRequest">required paramters for testing</param>
        /// <returns>a submit response with the testId which can then be used to get the results of the test</returns>
        private async Task <SubmitResponse> SubmitAndGetResponse(TestRequestParameter testRequest)
        {
            var client   = new Client(_connection);
            var location = (Locations)Enum.Parse(typeof(Locations), testRequest.Location ?? "London");
            var browser  = (Browsers)Enum.Parse(typeof(Browsers), testRequest.Browser ?? "Chrome");
            var request  = new TestRequest(new Uri(testRequest.Url), location, browser);
            var response = await client.SubmitTest(request);

            var submitResponse = new SubmitResponse();

            submitResponse.Success        = response.Success;
            submitResponse.HttpStatusCode = response.StatusCode;
            if (response.Success)
            {
                submitResponse.TestId       = response.Body.TestId;
                submitResponse.PollStateUrl = response.Body.PollStateUrl;
            }
            else
            {
                submitResponse.Error = response.Error;
            }
            return(submitResponse);
        }
        public ActionResult Index(ServerPageModel model)
        {
            model.Urls = model.UrlCsv.Trim(',').Split(',').ToList();
            var location    = Helper.ScreenShotPath;
            var snapshotUrl = Helper.ScreenShotUrl;

            model.Results = new List <TestResponse>();
            var threadingOptions = new ParallelOptions()
            {
                MaxDegreeOfParallelism = 5
            };

            Parallel.ForEach(model.Urls, (url) =>
            {
                IWebPageTester tester  = new CustomTester(location, snapshotUrl);
                var testRequest        = new TestRequestParameter(url);
                var submissionResponse = tester.SubmitTest(testRequest);
                var result             = tester.GetResult(submissionResponse.TestId);
                model.Results.Add(result);
            });
            model.Results        = SortResultsBy(model.Results, model.SortBy);
            Session["ViewModel"] = model;
            return(View(model));
        }
示例#6
0
        static void TestGetMetrix(string url)
        {
            IWebPageTester gtMetrixObject = new GtMetrixTester(_gtMetrixApiKey, _gtMetrixUserName);
            var            request        = new TestRequestParameter(url);
            var            resposne       = gtMetrixObject.SubmitTest(request);

            Console.WriteLine($"Success:{resposne.Success}");
            Console.WriteLine($"HttpStatusCode: {resposne.HttpStatusCode}");
            Console.WriteLine($"PollStateUrl: {resposne.PollStateUrl ?? string.Empty}");
            Console.WriteLine($"Error: {resposne.Error ?? string.Empty}");
            Console.WriteLine($"Id: {resposne.TestId ?? string.Empty}");
            Console.WriteLine($"Status: {resposne.Status ?? string.Empty}");
            Console.WriteLine($"------------------------------------------------------------");
            var          testId = resposne.TestId;
            TestResponse result = null;

            do
            {
                result = gtMetrixObject.GetResult(testId);
                Console.WriteLine($"Success:{result.Success}. Code: {result.HttpStatusCode}");
                Console.WriteLine($"Task Status:{result.TaskStatus}.");
                if (result.Success && result.TestCompelted)
                {
                    break;
                }
                Console.WriteLine($".....Sleeping for two seconds.....");
                Thread.Sleep(2000);
            }while (!result.TestCompelted && result.Success);
            Console.WriteLine($"Task Status:{result.TaskStatus}");
            Console.WriteLine($"resposne.Success:{result.Success}");
            Console.WriteLine($"PageBytes:{result.PageBytes}");
            Console.WriteLine($"PageLoadTime:{result.PageLoadTime}");
            Console.WriteLine($"PageElements:{result.PageElements}");
            Console.WriteLine($"ScreenshotUrl:{result.ScreenShotUrl}");
            Console.WriteLine($"ReportUrl:{result.ReportUrl}");
        }
 /// <summary>
 /// Submits a test to GtMetrix.com via the API
 /// </summary>
 /// <param name="testRequest">required test paramters</param>
 /// <returns>A response with a test Id. This can be used to query the results using the GetResult method</returns>
 public SubmitResponse SubmitTest(TestRequestParameter testRequest)
 {
     return(SubmitAndGetResponse(testRequest).Result);
 }