Exemple #1
0
        public void TransitionToCaptureOnStateIsPerformed()
        {
            // given
            context.IsCaptureOn.Returns(true);
            httpClient.SendStatusRequest().Returns(new StatusResponse(logger, string.Empty, 200, new Dictionary <string, List <string> >()));

            // when
            var target = new BeaconSendingCaptureOffState();

            target.Execute(context);

            // then
            context.Received(1).NextState = Arg.Any <BeaconSendingCaptureOnState>();
        }
Exemple #2
0
        public void TransitionToCaptureOnStateIsPerformed()
        {
            // given
            context.IsCaptureOn.Returns(true);
            context.IsTimeSyncSupported.Returns(true);
            context.IsTimeSynced.Returns(true);
            httpClient.SendStatusRequest().Returns(new StatusResponse(string.Empty, 200));

            // when
            var target = new BeaconSendingCaptureOffState();

            target.Execute(context);

            // then
            context.Received(1).NextState = Arg.Any <BeaconSendingCaptureOnState>();
        }
Exemple #3
0
 public void Setup()
 {
     httpClient = Substitute.For <IHTTPClient>();
     context    = Substitute.For <IBeaconSendingContext>();
     context.GetHTTPClient().Returns(httpClient);
     statusResponse = new StatusResponse(Substitute.For <ILogger>(), string.Empty, 200, new Dictionary <string, List <string> >());
     httpClient.SendStatusRequest().Returns(statusResponse);
 }
 public void Setup()
 {
     logger     = Substitute.For <ILogger>();
     httpClient = Substitute.For <IHTTPClient>();
     context    = Substitute.For <IBeaconSendingContext>();
     context.GetHTTPClient().Returns(httpClient);
     httpClient.SendStatusRequest().Returns(new StatusResponse(logger, string.Empty, Response.HttpOk, new Dictionary <string, List <string> >()));
 }
        public void SendStatusRequestIsAbortedWhenShutDownIsRequested()
        {
            // given
            context.IsShutdownRequested.Returns(true);
            httpClient.SendStatusRequest().Returns((StatusResponse)null);

            // when
            var obtained = BeaconSendingRequestUtil.SendStatusRequest(context, 5, 1000);

            // then
            Assert.That(obtained, Is.Null);

            context.Received(1).GetHTTPClient();
            context.ReceivedWithAnyArgs(0).Sleep(0);

            httpClient.Received(1).SendStatusRequest();
        }
Exemple #6
0
        public void Setup()
        {
            currentTime         = 0;
            lastStatusCheckTime = -1;

            logger     = Substitute.For <ILogger>();
            httpClient = Substitute.For <IHTTPClient>();
            context    = Substitute.For <IBeaconSendingContext>();
            context.GetHTTPClient().Returns(httpClient);

            // default return success
            httpClient.SendStatusRequest().Returns(new StatusResponse(logger, string.Empty, 200, new Dictionary <string, List <string> >()));

            // current time getter
            context.CurrentTimestamp.Returns(x => { return(++currentTime); });

            // last time sycn getter + setter
            context.LastStatusCheckTime = Arg.Do <long>(x => lastStatusCheckTime = x);
            context.LastStatusCheckTime = lastStatusCheckTime; // init with -1
        }
Exemple #7
0
        public void LastOpenSessionBeaconSendTimeIsSetInExecute()
        {
            // given
            context.IsShutdownRequested.Returns(true);                                     // shutdown is requested
            context.CurrentTimestamp.Returns(123456L);
            httpClient.SendStatusRequest().Returns(new StatusResponse(string.Empty, 200)); // return valid status response (!= null)

            // when
            var target = new BeaconSendingInitState();

            target.Execute(context);

            // then
            context.Received(1).LastOpenSessionBeaconSendTime = 123456L;
        }
Exemple #8
0
        public void SendStatusRequestIsAbortedWhenShutDownIsRequested()
        {
            // given
            var erroneousResponse = new StatusResponse(Substitute.For <ILogger>(), string.Empty, Response.HttpBadRequest, new Dictionary <string, List <string> >());

            context.IsShutdownRequested.Returns(true);
            httpClient.SendStatusRequest().Returns(erroneousResponse);

            // when
            var obtained = BeaconSendingRequestUtil.SendStatusRequest(context, 5, 1000);

            // then
            Assert.That(obtained, Is.SameAs(erroneousResponse));

            context.Received(1).GetHTTPClient();
            context.ReceivedWithAnyArgs(0).Sleep(0);

            httpClient.Received(1).SendStatusRequest();
        }
        public void ReinitializeSleepsBeforeSendingStatusRequests()
        {
            // given
            var count             = 0;
            var erroneousResponse = new StatusResponse(logger, string.Empty, Response.HttpBadRequest, new Dictionary <string, List <string> >());

            httpClient.SendStatusRequest().Returns(erroneousResponse); // always return erroneous response
            context.IsShutdownRequested.Returns(_ => { return(count++ > 40); });

            var target = new BeaconSendingInitState();

            // when
            target.Execute(context);

            // then
            // verify sleeps - first total number and then correct order
            context.ReceivedWithAnyArgs(41).Sleep(0);

            Received.InOrder(() =>
            {
                // from first round
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
                // delay between first and second attempt
                context.Sleep(BeaconSendingInitState.REINIT_DELAY_MILLISECONDS[0]);
                // and again the sequence
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
                // delay between second and third attempt
                context.Sleep(BeaconSendingInitState.REINIT_DELAY_MILLISECONDS[1]);
                // and again the sequence
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
                // delay between third and fourth attempt
                context.Sleep(BeaconSendingInitState.REINIT_DELAY_MILLISECONDS[2]);
                // and again the sequence
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
                // delay between fourth and fifth attempt
                context.Sleep(BeaconSendingInitState.REINIT_DELAY_MILLISECONDS[3]);
                // and again the sequence
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
                // delay between fifth and sixth attempt
                context.Sleep(BeaconSendingInitState.REINIT_DELAY_MILLISECONDS[4]);
                // and again the sequence
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
                // delay between sixth and seventh attempt
                context.Sleep(BeaconSendingInitState.REINIT_DELAY_MILLISECONDS[4]);
                // and again the sequence
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 2);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 4);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 8);
                context.Sleep(BeaconSendingInitState.INITIAL_RETRY_SLEEP_TIME_MILLISECONDS * 16);
            });
        }