// for testing purposes only internal RunningSession StartSession(SessionStartInfo sessionStartInfo) { SyncTaskListener <RunningSession> listener = new SyncTaskListener <RunningSession>(logger: Logger, testIds: "TEST"); StartSessionInternal(listener, sessionStartInfo); return(listener.Get()); }
public void TestLongRequest_SimplePoll() { Logger logger = new Logger(); ServerConnector serverConnector = new ServerConnector(logger); serverConnector.ServerUrl = new Uri(CommonData.DefaultServerUrl); MockHttpRestClientFactory mockHttpRestClientFactory = new MockHttpRestClientFactory( logger, new int?[] { 2, null, 3 }, new string[] { CommonData.DefaultServerUrl + "url1", null, CommonData.DefaultServerUrl + "url2" }); serverConnector.HttpRestClientFactory = mockHttpRestClientFactory; serverConnector.ApiKey = "testKey"; SessionStartInfo startInfo = GetStartInfo(); RunningSession result = serverConnector.StartSession(startInfo); var requestCreator = mockHttpRestClientFactory.Provider.Handler; List <string> requests = requestCreator.RequestUrls; List <TimeSpan> timings = requestCreator.Timings; Assert.AreEqual(6, requests.Count); Assert.AreEqual(6, timings.Count); StringAssert.StartsWith(CommonData.DefaultServerUrl + "api/sessions/running", requests[0]); StringAssert.StartsWith(CommonData.DefaultServerUrl + BASE_LOCATION + "status", requests[1]); StringAssert.StartsWith(CommonData.DefaultServerUrl + "url1", requests[2]); Assert.Greater(timings[2], TimeSpan.FromSeconds(2)); StringAssert.StartsWith(CommonData.DefaultServerUrl + "url1", requests[3]); Assert.Greater(timings[3], TimeSpan.FromSeconds(0.5)); StringAssert.StartsWith(CommonData.DefaultServerUrl + "url2", requests[4]); Assert.Greater(timings[4], TimeSpan.FromSeconds(3)); }
private SessionStartInfo GetStartInfo() { PropertiesCollection sessionProperties = new PropertiesCollection { { "property 1", "value 1" }, { null, null } }; BatchInfo batchInfo = new BatchInfo("some batch", new DateTimeOffset(new DateTime(2017, 6, 29, 11, 1, 0, DateTimeKind.Utc))); batchInfo.Id = "someBatchId"; SessionStartInfo sessionStartInfo = new SessionStartInfo( "agent", "some app", "1.0", "some test", batchInfo, "baseline", new AppEnvironment("windows", "test suite", new Size(234, 456)) { DeviceInfo = "Some Mobile Device" }, "some environment", new ImageMatchSettings(MatchLevel.Strict), "some branch", "parent branch", "baseline branch", saveDiffs: null, render: null, properties: sessionProperties); return(sessionStartInfo); }
public RunningSession Open(string testId, SessionStartInfo sessionStartInfo) { SyncTaskListener <RunningSession> listener = new SyncTaskListener <RunningSession>(logger: Logger, testIds: testId); openService_.Operate(testId, sessionStartInfo, listener); RunningSession result = listener.Get(); if (result == null) { throw new EyesException("Failed starting session with the server", listener.Exception); } return(result); }
public void TestStartSession_LongRequest_IsNewField(bool isNew) { Logger logger = new Logger(); ServerConnector serverConnector = new ServerConnector(logger); serverConnector.ServerUrl = new Uri(CommonData.DefaultServerUrl); serverConnector.HttpRestClientFactory = new MockHttpRestClientFactory(isNew: isNew); serverConnector.ApiKey = "testKey"; SessionStartInfo startInfo = GetStartInfo(); RunningSession result = serverConnector.StartSession(startInfo); Assert.AreEqual(isNew, result.IsNewSession); }
public void TestSerialization() { PropertiesCollection sessionProperties = new PropertiesCollection { { "property 1", "value 1" }, { null, null } }; string agentRunId = "some-agent-run-id"; BatchInfo batchInfo = new BatchInfo("some batch", new DateTimeOffset(new DateTime(2017, 6, 29, 11, 1, 0, DateTimeKind.Utc))); batchInfo.Id = "someBatchId"; batchInfo.Properties.Add("prop 1", "val 1"); batchInfo.AddProperty("prop 2", null); SessionStartInfo sessionStartInfo = new SessionStartInfo( "agent", "some app", "1.0", "some test", batchInfo, "baseline", new AppEnvironment("windows", "test suite", new RectangleSize(234, 456)) { DeviceInfo = "Some Mobile Device" }, "some environment", new ImageMatchSettings(MatchLevel.Strict) { Accessibility = new AccessibilityRegionByRectangle[] { new AccessibilityRegionByRectangle(10, 20, 30, 40, AccessibilityRegionType.GraphicalObject) }, AccessibilitySettings = new AccessibilitySettings(AccessibilityLevel.AA, AccessibilityGuidelinesVersion.WCAG_2_1), Floating = new FloatingMatchSettings[] { new FloatingMatchSettings(22, 32, 42, 52, 5, 10, 15, 20) } }, "some branch", "parent branch", "baseline branch", saveDiffs: null, render: null, agentSessionId: "59436361-2782-45EF-9DC5-5633F15150CE", timeout: 10, properties: sessionProperties, agentRunId); string json = JsonConvert.SerializeObject(sessionStartInfo, Formatting.Indented); string expectedJson = CommonUtils.ReadResourceFile("Test.Eyes.Sdk.Core.DotNet.Resources.SessionStartInfo_Serialization.json"); Assert.AreEqual(expectedJson, json); }
public void TestStartSession_LongRequest_StatusCode(HttpStatusCode statusCode) { Logger logger = new Logger(); ServerConnector serverConnector = new ServerConnector(logger); serverConnector.ServerUrl = new Uri(CommonData.DefaultServerUrl); serverConnector.HttpRestClientFactory = new MockHttpRestClientFactory(statusCode: statusCode); serverConnector.ApiKey = "testKey"; SessionStartInfo startInfo = GetStartInfo(); RunningSession result = serverConnector.StartSession(startInfo); bool isNew = statusCode == HttpStatusCode.Created; Assert.AreEqual(isNew, result.IsNewSession); }
protected virtual void StartSessionInternal(TaskListener <RunningSession> taskListener, SessionStartInfo startInfo) { ArgumentGuard.NotNull(startInfo, nameof(startInfo)); var body = new { StartInfo = startInfo }; try { EnsureHttpClient_(); httpClient_.PostJson( new TaskListener <HttpResponseMessage>( response => { if (response == null) { throw new NullReferenceException("response is null"); } // response.DeserializeBody disposes the response object's stream, // rendering all of its properties unusable, including StatusCode. HttpStatusCode responseStatusCode = response.StatusCode; RunningSession runningSession; if (responseStatusCode == HttpStatusCode.ServiceUnavailable) { runningSession = new RunningSession(); runningSession.ConcurrencyFull = true; } else { runningSession = response.DeserializeBody <RunningSession>( true, serializer_, HttpStatusCode.OK, HttpStatusCode.Created); if (runningSession.isNewSession_ == null) { runningSession.isNewSession_ = responseStatusCode == HttpStatusCode.Created; } runningSession.ConcurrencyFull = false; } taskListener.OnComplete(runningSession); }, ex => taskListener.OnFail(ex)) , "api/sessions/running", body); } catch (Exception ex) { throw new EyesException($"StartSession failed: {ex.Message}", ex); } }
/// <summary> /// Starts a new session. /// </summary> public void StartSession(TaskListener <RunningSession> taskListener, SessionStartInfo sessionStartInfo) { StartSessionInternal(taskListener, sessionStartInfo); }