Example #1
0
        public void StartStopWorkerTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

            connectionRegistry.Start();
            connectionRegistry.Stop();
        }
Example #2
0
        public void CollectDeadLoggedinConnectionTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

            persistentConnection.ConnectionId.Returns(Guid.NewGuid());
            persistentConnection.LastHeartbeat.Returns(new DateTime(2014, 1, 1));
            connectionRegistry.RegisterInitiatedConnection(persistentConnection);
            connectionRegistry.PromoteToLoggedInConnection(persistentConnection, "1234", 1);

            connectionRegistry.Start();

            int rounds = 0;

            while (persistentConnection.ConnectionState != ConnectionState.None && rounds < 100)
            {
                Thread.Sleep(10);
                rounds++;
            }

            connectionRegistry.Stop();
            persistentConnection.Received().Close();
            Assert.AreEqual(ConnectionState.None, persistentConnection.ConnectionState);
        }
Example #3
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();
        }
Example #4
0
        public void GetReceiveAndForgetConnectionHeartbeatOkTest()
        {
            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.ReceiveAndForget);

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

            var conn = pusherRegistry.GetReceiveAndForgetConnection();

            Assert.AreEqual(persistentConnection, conn);
            persistentConnection.ReceivedWithAnyArgs().NextReceiveAndForgetTime = new DateTime();
        }
Example #5
0
        public void GetReceiveAndForgetConnectionNotYetSubscribedTest()
        {
            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.ReceiveAndForget);
            connectionRegistry.UnsubscribeConnection(persistentConnection.DeviceId);

            persistentConnection.LastHeartbeat.Returns(DateTime.UtcNow.AddMinutes(-10.1));

            var nothing = pusherRegistry.GetReceiveAndForgetConnection();

            Assert.IsNull(nothing);
        }
Example #6
0
        public void TelemetryDataLoginRequiredTest()
        {
            var connection                = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator       = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations          = Substitute.For <IDeviceOperations>();
            var dateTimeProvider          = Substitute.For <IDateTimeProvider>();
            var telemetryDataSinkResolver = Substitute.For <ITelemetryDataSinkResolver>();

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

            telemetryDataSinkResolver.ResolveIncoming(null).ReturnsForAnyArgs(new List <ITelemetryDataSink>());
            var telemetryDataService = new DirectTelemetryDataService(telemetryDataSinkResolver);

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

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);

            commandExecutor.Execute(connection, new TelemetryDataCommand("{\"Temperature\": 24, \"Time\":" + DateTime.UtcNow.Ticks + "}"));
            connection.Received(1).Reply("telemetrydata unauthorized");
        }
Example #7
0
        public static void RegisterConnection_GivenValidConnection_SetsConnection()
        {
            var connectionId = Guid.NewGuid();
            var connection   = Mock.Of <IDbConnectionFactory>();

            Assert.That(() => ConnectionRegistry.RegisterConnection(connectionId, connection), Throws.Nothing);
        }
Example #8
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();
        }
Example #9
0
        public void HeartbeatTest()
        {
            var connection          = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations    = Substitute.For <IDeviceOperations>();

            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), null);

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

            connectionRegistry.RegisterInitiatedConnection(connection);

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

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

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

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

            Assert.AreEqual(ConnectionState.LoggedIn | ConnectionState.Subscribed, connection.ConnectionState);
            connection.Received().Heartbeat();
        }
Example #10
0
        public void SendToErrorTest()
        {
            var connection          = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations    = Substitute.For <IDeviceOperations>();
            var dateTimeProvider    = Substitute.For <IDateTimeProvider>();

            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, null, deviceAuthenticator, deviceOperations, null, null);

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

            dateTimeProvider.UtcNow.Returns(DateTime.UtcNow);

            commandExecutor.Execute(connection, new SendToCommand("{\"Temperature\": 24, \"Time\":" + DateTime.UtcNow.Ticks + "}"));
            connection.Received(1).Reply("sendto error");
        }
Example #11
0
        public void GetPeekConnectionHeartbeatTooEarlyTest()
        {
            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 nothing = pusherRegistry.GetPeekConnection();

            Assert.IsNull(nothing);
        }
Example #12
0
        public void TryLoginSameDeviceTwiceTest()
        {
            var connection          = Substitute.For <IPersistentConnection>();
            var connection2         = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations    = Substitute.For <IDeviceOperations>();

            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), null);

            connection.ConnectionId.Returns(Guid.NewGuid());
            connection2.ConnectionId.Returns(Guid.NewGuid());

            deviceAuthenticator.Authenticate(null).ReturnsForAnyArgs(true);
            var deviceId = Identity.Next();

            deviceOperations.Get(null).ReturnsForAnyArgs(TestDataCreator.Device(deviceId, "1234", "2345", "3456", "4567", 1));

            connectionRegistry.RegisterInitiatedConnection(connection);
            connectionRegistry.RegisterInitiatedConnection(connection2);

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

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

            connection.Received().Reply("login ack");
            connection2.Received().Reply("login badcommand");
            Assert.AreEqual(ConnectionState.LoggedIn, connection.ConnectionState);
            Assert.AreEqual(1, connection.NumericDeviceId);
        }
Example #13
0
        public static void TryGetConnectionId_WhenNoConnectionSet_ReturnsEmptyGuid()
        {
            var connection = Mock.Of <IDbConnectionFactory>();
            var result     = ConnectionRegistry.TryGetConnectionId(connection, out var connectionId);

            Assert.Multiple(() =>
            {
                Assert.That(result, Is.False);
                Assert.That(connectionId, Is.EqualTo(Guid.Empty));
            });
        }
Example #14
0
        public void TryRegisterInitiatingConnectionTwiceTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

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

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);
            connectionRegistry.RegisterInitiatedConnection(persistentConnection);
        }
Example #15
0
        public static void RegisterConnection_GivenTwoConnectionsWithSameId_SetsSecondConnection()
        {
            var connectionId     = Guid.NewGuid();
            var firstConnection  = Mock.Of <IDbConnectionFactory>();
            var secondConnection = Mock.Of <IDbConnectionFactory>();

            Assert.That(() =>
            {
                ConnectionRegistry.RegisterConnection(connectionId, firstConnection);
                ConnectionRegistry.RegisterConnection(connectionId, secondConnection);
            }, Throws.Nothing);
        }
Example #16
0
        public void TryPromoteToLoggedInConnectionNoDeviceIdTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

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

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);

            connectionRegistry.PromoteToLoggedInConnection(persistentConnection, null, 1);
        }
Example #17
0
        public void RegisterInitiatingConnectionTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

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

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);

            Assert.AreEqual(ConnectionState.Initiated, persistentConnection.ConnectionState);
            Assert.AreEqual(SubscriptionType.None, persistentConnection.SubscriptionType);
        }
Example #18
0
        public void TryPromoteToSubscribedConnectionNotLoggedInTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

            persistentConnection.ConnectionId.Returns(Guid.NewGuid());
            persistentConnection.DeviceId.Returns(Identity.Next());

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);

            connectionRegistry.PromoteToSubscribedConnection(persistentConnection.DeviceId, SubscriptionType.PeekAndCommit);
        }
Example #19
0
        public void TryUnsubscribeNonSubscribedConnectionTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

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

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);

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

            connectionRegistry.UnsubscribeConnection(persistentConnection.DeviceId);
        }
Example #20
0
        public static void TryGetConnectionId_WhenConnectionSet_ReturnsConnectionId()
        {
            var connectionId = Guid.NewGuid();
            var connection   = Mock.Of <IDbConnectionFactory>();

            ConnectionRegistry.RegisterConnection(connectionId, connection);
            var result = ConnectionRegistry.TryGetConnectionId(connection, out var retrievedConnectionId);

            Assert.Multiple(() =>
            {
                Assert.That(result, Is.True);
                Assert.That(retrievedConnectionId, Is.EqualTo(connectionId));
            });
        }
Example #21
0
        public void CloseTest()
        {
            var connection = Substitute.For <IPersistentConnection>();

            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), null);

            connection.ConnectionId.Returns(Guid.NewGuid());
            connectionRegistry.RegisterInitiatedConnection(connection);

            var commandExecutor = new CommandExecutor(null, connectionRegistry, null, null, null, null, null);

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

            Assert.AreEqual(ConnectionState.None, connection.ConnectionState);
            connection.Received().Close();
        }
Example #22
0
        public void PromoteToLoggedInConnectionTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

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

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

            connectionRegistry.RegisterInitiatedConnection(persistentConnection);

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

            Assert.IsNotNull(persistentConnection.DeviceId);
            Assert.AreEqual(ConnectionState.LoggedIn, persistentConnection.ConnectionState);
            Assert.AreEqual(SubscriptionType.None, persistentConnection.SubscriptionType);
        }
Example #23
0
        public void PromoteToSubscribedConnectionTest()
        {
            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), new DateTimeProvider());

            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);
            Assert.AreEqual(ConnectionState.LoggedIn | ConnectionState.Subscribed, persistentConnection.ConnectionState);
            Assert.AreEqual(SubscriptionType.PeekAndCommit, persistentConnection.SubscriptionType);
            persistentConnection.Received().Heartbeat();
        }
Example #24
0
        public void TryLoginUnauthorizedTest()
        {
            var connection          = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>();

            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), null);

            connection.ConnectionId.Returns(Guid.NewGuid());
            deviceAuthenticator.Authenticate(null).ReturnsForAnyArgs(false);

            connectionRegistry.RegisterInitiatedConnection(connection);

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

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

            connection.Received().Reply("login unauthorized");
            Assert.AreEqual(ConnectionState.Initiated, connection.ConnectionState);
        }
Example #25
0
        public void TryUnSubscribeNotLoggedinTest()
        {
            var connection          = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations    = Substitute.For <IDeviceOperations>();

            var connectionRegistry = new ConnectionRegistry(new PusherRegistry(new DateTimeProvider()), null);

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

            connectionRegistry.RegisterInitiatedConnection(connection);

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

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

            connection.Received().Reply("unsubscribe unauthorized");
            Assert.AreEqual(ConnectionState.Initiated, connection.ConnectionState);
            Assert.AreEqual(SubscriptionType.None, connection.SubscriptionType);
        }
Example #26
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());
        }
Example #27
0
        private void StartBackgrounProcesses()
        {
            var settingOperations = _serviceProvider.GetService <ISettingOperations>();

            SetupTelemetryDataSinkMetadataRegistry(settingOperations);

            var messagingServiceClient = _serviceProvider.GetService <IMessagingServiceClient>();

            messagingServiceClient.Setup(settingOperations.Get(Setting.MessagingServiceEndpoint).Value, settingOperations.Get(Setting.MessagingServiceApiKey).Value);

            var batchParameters = _serviceProvider.GetService <IBatchParameters>();

            MessagingWorkers.Start(batchParameters, messagingServiceClient);

            _persistentConnectionReceiveAndForgetWorker = _serviceProvider.GetService <PersistentConnectionReceiveAndForgetWorker>();
            _persistentConnectionReceiveAndForgetWorker.Start();

            _persistentConnectionPeekWorker = _serviceProvider.GetService <PersistentConnectionPeekWorker>();
            _persistentConnectionPeekWorker.Start();

            _connectionRegistry = _serviceProvider.GetService <ConnectionRegistry>();
            _connectionRegistry.Start();
        }
        /// <inheritdoc />
        protected override IEntitySpawnResults OnEntityConstructionCompleted([NotNull] IPlayerSpawnContext context, [NotNull] IEntitySpawnResults result)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            if (result == null)
            {
                throw new ArgumentNullException(nameof(result));
            }

            //Check if the spawn was a success. If not we don't want to add information about it to the network services.
            if (result.Result != SpawnResult.Success)
            {
                return(result);
            }

            //TODO: Verify that none of this is in the services/collections all ready. MAJOR ISSUES if we are getting multiple of the same entity.
            EntityCollection.Add(context.EntityGuid, new EntityContainer(context.EntityGuid, result.EntityGameObject));
            PeerCollection.Add(context.OwnerPeer);
            ConnectionRegistry.Register(context.OwnerPeer.PeerDetails.ConnectionID, context.EntityGuid);

            return(result);
        }
Example #29
0
        public void CommitNotApplicableTest()
        {
            var connection          = Substitute.For <IPersistentConnection>();
            var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>();
            var deviceOperations    = Substitute.For <IDeviceOperations>();
            var dateTimeProvider    = Substitute.For <IDateTimeProvider>();

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

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

            connectionRegistry.RegisterInitiatedConnection(connection);

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

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

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

            commandExecutor.Execute(connection, new CommitCommand());
        }
Example #30
0
 public void SetConnectionRegistry(ConnectionRegistry connectionRegistry, Func <CommandExecutor> commandExecutorCreator)
 {
     _connectionRegistry     = connectionRegistry;
     _commandExecutorCreator = commandExecutorCreator;
 }