コード例 #1
0
        public void CommitNotLoggedInTest()
        {
            var connection            = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator   = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations      = Substitute.For <IDeviceOperations>();
            var dateTimeProvider      = Substitute.For <IDateTimeProvider>();
            var outgoingMessageReader = Substitute.For <IMessagingOperations>();

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);
            var pusherRegistry     = new PusherRegistry(dateTimeProvider);
            var connectionRegistry = new ConnectionRegistry(pusherRegistry, null);

            var deviceId = Identity.Next();

            connection.ConnectionId.Returns(Guid.NewGuid());
            deviceAuthenticator.Authenticate(null).ReturnsForAnyArgs(true);
            deviceOperations.Get(null).ReturnsForAnyArgs(TestDataCreator.Device(deviceId, "1234", "2345", "3456", "4567", 1));

            connectionRegistry.RegisterInitiatedConnection(connection);

            var commandExecutor = new CommandExecutor(pusherRegistry, connectionRegistry, outgoingMessageReader, deviceAuthenticator, deviceOperations, null, null);

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);
            pusherRegistry.SetAsCommitNeededConnections(new[] { connection });

            outgoingMessageReader.Commit((long)0).ReturnsForAnyArgs(OutgoingState.Ok);

            connection.ClearReceivedCalls();

            commandExecutor.Execute(connection, new CommitCommand());
            connection.DidNotReceive().Heartbeat();
        }
コード例 #2
0
        public void GetPeekConnectionRequeueFromCommitToPeekTest()
        {
            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);

            var pusherRegistry     = new PusherRegistry(dateTimeProvider);
            var connectionRegistry = new ConnectionRegistry(pusherRegistry, null);

            var persistentConnection = Substitute.For <IPersistentConnection>();

            persistentConnection.ConnectionId.Returns(Guid.NewGuid());

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);
            connectionRegistry.PromoteToLoggedInConnection(persistentConnection, Identity.Next(), 1);

            connectionRegistry.PromoteToSubscribedConnection(persistentConnection.DeviceId, SubscriptionType.PeekAndCommit);

            persistentConnection.LastHeartbeat.Returns(DateTime.UtcNow.AddSeconds(-20.0));
            persistentConnection.NextPeekTime.Returns(DateTime.UtcNow.AddSeconds(-0.1));

            var conn = pusherRegistry.GetPeekConnection();

            pusherRegistry.SetAsCommitNeededConnections(new[] { conn });

            persistentConnection.LastCommitTime = DateTime.UtcNow.AddSeconds(-20);

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow.AddMilliseconds(200));
            pusherRegistry.GetPeekConnection();
        }
コード例 #3
0
        public void CommitSuccessTest()
        {
            var connection            = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator   = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations      = Substitute.For <IDeviceOperations>();
            var dateTimeProvider      = Substitute.For <IDateTimeProvider>();
            var outgoingMessageReader = Substitute.For <IMessagingOperations>();

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);
            var pusherRegistry     = new PusherRegistry(dateTimeProvider);
            var connectionRegistry = new ConnectionRegistry(pusherRegistry, null);

            var deviceId = Identity.Next();

            connection.ConnectionId.Returns(Guid.NewGuid());
            deviceAuthenticator.Authenticate(null).ReturnsForAnyArgs(true);
            deviceOperations.Get(null).ReturnsForAnyArgs(TestDataCreator.Device(deviceId, "1234", "2345", "3456", "4567", 1));

            connectionRegistry.RegisterInitiatedConnection(connection);

            var commandExecutor = new CommandExecutor(pusherRegistry, connectionRegistry, outgoingMessageReader, deviceAuthenticator, deviceOperations, null, null);

            commandExecutor.Execute(connection, new LoginCommand(deviceId + " " + Identity.Next()));

            commandExecutor.Execute(connection, new SubscribeCommand("peekandcommit"));

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);
            pusherRegistry.SetAsCommitNeededConnections(new[] { connection });

            outgoingMessageReader.Commit((long)0).ReturnsForAnyArgs(OutgoingState.Ok);

            Assert.IsTrue(pusherRegistry.IsCommitable(deviceId));

            commandExecutor.Execute(connection, new CommitCommand());

            Assert.IsFalse(pusherRegistry.IsCommitable(deviceId));

            commandExecutor.Execute(connection, new CommitCommand());
        }