示例#1
0
        public void Publish_HasSkipped()
        {
            using var mock = AutoMock.GetLoose();

            mock.Mock <IManagedMqttClient>()
            .Setup(x => x.PublishAsync(It.IsAny <ManagedMqttApplicationMessage>())).Returns(Task.CompletedTask);
            mock.Mock <IManagedMqttClient>()
            .SetupProperty(x => x.ApplicationMessageProcessedHandler);
            mock.Mock <IManagedMqttClient>()
            .SetupProperty(x => x.ApplicationMessageSkippedHandler);
            mock.Mock <IManagedMqttClient>()
            .SetupGet(x => x.IsConnected)
            .Returns(true);

            var rxMqttClinet = mock.Create <RxMqttClient>();

            var message = new ManagedMqttApplicationMessageBuilder()
                          .WithApplicationMessage(new MqttApplicationMessageBuilder()
                                                  .WithTopic("T")
                                                  .WithPayload("P")
                                                  .WithExactlyOnceQoS()
                                                  .Build())
                          .Build();
            var observable = Observable.Return(message);
            var @event     = new ApplicationMessageSkippedEventArgs(message);

            var testScheduler = new TestScheduler();

            testScheduler.ScheduleAbsolute(@event, 5, (_, state) =>
            {
                var IManagedMqttClientMock = mock.Mock <IManagedMqttClient>().Object;
                mock.Mock <IManagedMqttClient>().Object.ApplicationMessageSkippedHandler.HandleApplicationMessageSkippedAsync(state);
                return(Disposable.Empty);
            });
            // act
            var testObserver = testScheduler.Start(() => observable.PublishOn(rxMqttClinet), 0, 1, 10);

            Assert.Single(testObserver.Messages.Where(m => m.Value.Kind == System.Reactive.NotificationKind.OnNext));
            Assert.Single(testObserver.Messages.Where(m => m.Value.Kind == System.Reactive.NotificationKind.OnCompleted));
            Assert.Empty(testObserver.Messages.Where(m => m.Value.Kind == System.Reactive.NotificationKind.OnError));
            var onNext = testObserver.Messages.Where(m => m.Value.Kind == System.Reactive.NotificationKind.OnNext).Single();

            Assert.Equal(message, onNext.Value.Value.MqttApplicationMessage);
            Assert.Equal(RxMqttClientPublishReasonCode.HasSkipped, onNext.Value.Value.ReasonCode);
            Assert.Null(onNext.Value.Value.Exception);
        }
        public void ApplicationMessageSkippedHandler()
        {
            using var mock = AutoMock.GetLoose();
            mock.Mock <IManagedMqttClient>()
            .SetupProperty(x => x.ApplicationMessageSkippedHandler);
            var rxMqttClinet = mock.Create <RxMqttClient>();

            var testScheduler = new TestScheduler();

            var message = new ManagedMqttApplicationMessage();
            var @event  = new ApplicationMessageSkippedEventArgs(message);

            testScheduler.ScheduleAsync(TimeSpan.FromTicks(2), (_, __) => mock.Mock <IManagedMqttClient>().Object.ApplicationMessageSkippedHandler.HandleApplicationMessageSkippedAsync(@event));

            // act
            var testObserver = testScheduler.Start(() => rxMqttClinet.ApplicationMessageSkippedEvent, 0, 0, 4);

            Assert.Equal(1, testObserver.Messages.Count);
            Assert.Equal(NotificationKind.OnNext, testObserver.Messages.Last().Value.Kind);
            Assert.Equal(@event, testObserver.Messages.Last().Value.Value);
            Assert.Null(rxMqttClinet.InternalClient.SynchronizingSubscriptionsFailedHandler);
        }
示例#3
0
 private static void ApplicationMessageSkippedHandlerMethod(ApplicationMessageSkippedEventArgs obj)
 {
     Console.WriteLine("ApplicationMessageSkippedHandlerMethod");
 }
示例#4
0
 private Task OnMessageSkipped(ApplicationMessageSkippedEventArgs e)
 {
     Console.WriteLine($"OnMessageSkipped");
     return(Task.CompletedTask);
 }
 private void OnApplicationMessageSkipped(ApplicationMessageSkippedEventArgs eventArgs)
 {
     Logger.LogWarning("Request skipped.");
 }
示例#6
0
 private void ApplicationMessageSkippedHandler(ApplicationMessageSkippedEventArgs obj)
 {
     Console.WriteLine($"SKIPPED: {obj.ApplicationMessage.ApplicationMessage.Topic} | {Encoding.UTF8.GetString(obj.ApplicationMessage.ApplicationMessage.Payload)}");
 }