public MessagingHubClient(IMessagingHubConnection connection, bool autoNotify = true)
 {
     Connection = connection;
     Sender     = new MessagingHubSender(connection);
     Listener   = new MessagingHubListener(connection, Sender, autoNotify);
     _semaphore = new SemaphoreSlim(1, 1);
     _started   = false;
 }
        public async Task Add_MessageReceiver_And_Process_Message_With_Success()
        {
            //Arrange
            MessagingHubListener.AddMessageReceiver(_messageReceiver);
            await MessagingHubConnection.ConnectAsync();

            await MessagingHubListener.StartAsync();

            //Act
            DispatchMessage();
            await Task.Delay(TIME_OUT);

            //Assert
            _messageReceiver.ReceivedWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
        }
        public async Task Add_CommandReceiver_And_Process_Command_With_Success()
        {
            //Arrange
            MessagingHubListener.AddCommandReceiver(_commandReceiver);
            await MessagingHubConnection.ConnectAsync();

            await MessagingHubListener.StartAsync();

            //Act
            DispatchCommand();
            await Task.Delay(TIME_OUT);

            //Assert
            Assert.AreEqual(CommandStatus.Pending, _someCommand.Status);
            _commandReceiver.ReceivedWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
        }
        public async Task Add_Multiple_CommandReceivers_With_Different_Filters_And_Process_Command_With_Success()
        {
            //Arrange
            var otherCommandReceiver = Substitute.For <ICommandReceiver>();

            MessagingHubListener.AddCommandReceiver(_commandReceiver, c => Task.FromResult(c.Uri.Equals(_someCommand.Uri)));
            MessagingHubListener.AddCommandReceiver(otherCommandReceiver, c => Task.FromResult(c.Uri.Equals(new LimeUri("lime://test/message"))));

            await MessagingHubConnection.ConnectAsync();

            await MessagingHubListener.StartAsync();

            //Act
            DispatchCommand();
            await Task.Delay(TIME_OUT);

            //Assert
            _commandReceiver.ReceivedWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
            otherCommandReceiver.DidNotReceiveWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
        }
        public async Task Add_Multiple_CommandReceivers_And_Process_Command_With_Success()
        {
            //Arrange
            var otherCommandReceiver = Substitute.For <ICommandReceiver>();

            MessagingHubListener.AddCommandReceiver(_commandReceiver);
            MessagingHubListener.AddCommandReceiver(otherCommandReceiver);

            await MessagingHubConnection.ConnectAsync();

            await MessagingHubListener.StartAsync();

            //Act
            DispatchCommand();
            await Task.Delay(TIME_OUT);

            //Assert
            _commandReceiver.ReceivedWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
            otherCommandReceiver.ReceivedWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
        }
        public async Task Add_CommandReceiver_Process_Command_And_Stop_With_Success()
        {
            //Arrange
            MessagingHubListener.AddCommandReceiver(_commandReceiver);

            await MessagingHubConnection.ConnectAsync();

            await MessagingHubListener.StartAsync();

            DispatchCommand();
            await Task.Delay(TIME_OUT);

            //Act
            await MessagingHubListener.StopAsync();

            await MessagingHubConnection.DisconnectAsync();

            //Assert
            _commandReceiver.ReceivedWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
        }
        public async Task Add_CommandReceiver_And_Send_Command_ResponseFailure_Should_Not_Process()
        {
            //Arrange
            MessagingHubListener.AddCommandReceiver(_commandReceiver);
            await MessagingHubConnection.ConnectAsync();

            await MessagingHubListener.StartAsync();

            //Act
            CommandProducer.Add(new Command
            {
                Id       = EnvelopeId.NewId(),
                Method   = CommandMethod.Get,
                Resource = new Contact(),
                Uri      = new LimeUri("lime://test/command"),
                Status   = CommandStatus.Failure
            });
            await Task.Delay(TIME_OUT);

            //Assert
            _commandReceiver.DidNotReceiveWithAnyArgs().ReceiveAsync(null, CancellationToken.None);
        }
Ejemplo n.º 8
0
 private void CreateActualMessageHubClient()
 {
     MessagingHubConnection = new MessagingHubConnection(_sendTimeout, _maxConnectionRetries, OnDemandClientChannelFactory, 1);
     MessagingHubListener   = new MessagingHubListener(MessagingHubConnection);
     MessagingHubSender     = new MessagingHubSender(MessagingHubConnection);
 }