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); }
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); }
/// <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)); }
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); }