public void FinishedSessionsAreSent() { // given finishedSessions.Enqueue(CreateValidSession("127.0.0.1")); finishedSessions.Enqueue(CreateValidSession("127.0.0.1")); httpClient.SendBeaconRequest(Arg.Any <string>(), Arg.Any <byte[]>()).Returns(x => new StatusResponse(string.Empty, 200)); // when var target = new BeaconSendingFlushSessionsState(); target.Execute(context); // then httpClient.Received(2).SendBeaconRequest(Arg.Any <string>(), Arg.Any <byte[]>()); }
public void TransitionToCaptureOffStateIsPerformed() { // given var clientIp = "127.0.0.1"; context.IsCaptureOn.Returns(false); var statusResponse = new StatusResponse(logger, string.Empty, 200, new Dictionary <string, List <string> >()); var session = new SessionWrapper(CreateValidSession(clientIp)); session.UpdateBeaconConfiguration(new BeaconConfiguration(1, DataCollectionLevel.OFF, CrashReportingLevel.OFF)); finishedSessions.Add(session); httpClient.SendBeaconRequest(Arg.Any <string>(), Arg.Any <byte[]>()).Returns(x => statusResponse); // when var target = new BeaconSendingCaptureOnState(); target.Execute(context); // then context.Received(1).NextState = Arg.Any <BeaconSendingCaptureOffState>(); }
public void TransitionToCaptureOffStateIsPerformed() { // given var clientIp = "127.0.0.1"; context.IsCaptureOn.Returns(false); var statusResponse = new StatusResponse(string.Empty, 200); finishedSessions.Enqueue(CreateValidSession(clientIp)); httpClient.SendBeaconRequest(Arg.Any <string>(), Arg.Any <byte[]>()).Returns(x => statusResponse); // when var target = new BeaconSendingCaptureOnState(); target.Execute(context); // then context.Received(1).CurrentState = Arg.Any <BeaconSendingCaptureOffState>(); }
// helper method for beacon sending with retries private StatusResponse SendBeaconRequest(IHTTPClient httpClient, byte[] beaconData, int numRetries) { StatusResponse response = null; var retry = 0; var retrySleepMillis = INITIAL_RETRY_SLEEP_TIME_MILLISECONDS; while (true) { response = httpClient.SendBeaconRequest(clientIPAddress, beaconData); if (response != null || (retry >= numRetries)) { // success OR max retry count reached break; } timingProvider.Sleep(retrySleepMillis); retrySleepMillis *= 2; retry++; } return(response); }