Inheritance: MonoBehaviour
コード例 #1
0
        public void TestListenerAndSenderRemovesCommandQueues()
        {
            var timeout = TimeSpan.FromSeconds(1);

            using (var sender = new TestSender(timeout))
            {
                sender.PublishCommand(6);
                using (var service = new BlockingReceiver <int>())
                    using (var listener = sender.Listener())
                    {
                        service.SubscribeToCommand(listener);
                        Assert.Equal(6, service.Next());
                    }


                sender.PublishCommand(3);
                Thread.Sleep(timeout);

                using (var service = new BlockingReceiver <int>())
                    using (var listener = sender.Listener())
                    {
                        service.SubscribeToCommand(listener);
                        Assert.Throws <TimeoutException>(() => service.Next(TimeSpan.FromSeconds(1)));
                    }
            }
        }
コード例 #2
0
ファイル: powerLight.cs プロジェクト: gaz16/LampiHoloLens
 // Use this for initialization
 void Start()
 {
     power.image.color = Color.red;
     sender            = gameObject.AddComponent <TestSender>();
     lampIsOn          = true;
     //satSlider.onValueChanged.AddListener(ListenerMethod);
 }
コード例 #3
0
        public void ChannelBaseUsesPrivateQueuesPerNamespace()
        {
            using (var sender1 = new TestSender())
                using (var sender2 = new TestSender())
                {
                    sender1.PublishCommand(3);
                    sender2.PublishCommand(4);

                    using (var listener = sender1.Listener())
                        using (var service = new BlockingReceiver <int>())
                        {
                            service.SubscribeToCommand(listener);
                            Assert.Equal(3, service.Next());
                            Assert.Throws <TimeoutException>(() => service.Next(TimeSpan.FromSeconds(1)));
                        }

                    using (var listener = sender2.Listener())
                        using (var service = new BlockingReceiver <int>())
                        {
                            service.SubscribeToCommand(listener);
                            Assert.Equal(4, service.Next());
                            Assert.Throws <TimeoutException>(() => service.Next(TimeSpan.FromSeconds(1)));
                        }
                }
        }
コード例 #4
0
        public async Task InvokeAsync_WhenSenderTypeIsNull_ShouldPublishToGlobalSubscriptionsImmediately()
        {
            var testSender    = new TestSender();
            var testEventArgs = new TestEventArgs();

            var pipelineContext = CreatePipelineContext(testEventArgs
                                                        );

            PipelineContext nextModuleContext = null;

            Task InvokeNextModule(PipelineContext context)
            {
                nextModuleContext = context;
                return(Task.CompletedTask);
            }

            _publishingServiceMock
            .Setup(x => x.PublishEventToGlobalSubscriptionsAsync(pipelineContext.PipelineEvent))
            .Returns(Task.CompletedTask)
            .Verifiable();

            await _globalPublishPipelineModule.InvokeAsync(_globalPublishPipelineModuleConfig, pipelineContext, InvokeNextModule);

            Assert.That(nextModuleContext, Is.Not.Null);
            Assert.That(nextModuleContext, Is.EqualTo(pipelineContext));
        }
コード例 #5
0
        public async Task InvokeAsync_WhenSenderTypeIsNotNull_ShouldSendEvent()
        {
            var testSender    = new TestSender();
            var testEventArgs = new TestEventArgs();

            _globalPublishPipelineModuleConfig.SenderType = _eventSender1Mock.Object.GetType();

            var pipelineContext = CreatePipelineContext(testEventArgs
                                                        );

            PipelineContext nextModuleContext = null;

            Task InvokeNextModule(PipelineContext context)
            {
                nextModuleContext = context;
                return(Task.CompletedTask);
            }

            _eventSender1Mock
            .Setup(x => x.SendAsync(pipelineContext.PipelineEvent))
            .Returns(Task.CompletedTask)
            .Verifiable();

            await _globalPublishPipelineModule.InvokeAsync(_globalPublishPipelineModuleConfig, pipelineContext, InvokeNextModule);

            Assert.That(nextModuleContext, Is.Not.Null);
            Assert.That(nextModuleContext, Is.EqualTo(pipelineContext));
        }
コード例 #6
0
 // Use this for initialization
 void Start()
 {
     yourGradientMaterial.SetColor("_Color", Color.red);
     yourGradientMaterial.SetColor("_Color2", Color.white);
     sender = gameObject.AddComponent <TestSender>();
     //satSlider.onValueChanged.AddListener(ListenerMethod);
 }
コード例 #7
0
        public void DisposeTest()
        {
            Func <TestSenderOptions, ISender> createSender = options =>
            {
                return(new TestSender("MyTestSender", options.TestSetting1, options.TestSetting2));
            };

            var initialOptions = new TestSenderOptions
            {
                TestSetting1 = "InitialTestSetting1",
                TestSetting2 = "InitialTestSetting2"
            };

            var mockOptionsMonitor = new Mock <IOptionsMonitor <TestSenderOptions> >(MockBehavior.Strict);
            var mockChangeListener = new Mock <IDisposable>();

            mockOptionsMonitor.Setup(m => m.Get("MyReloadingSender")).Returns(initialOptions);
            mockOptionsMonitor.Setup(m => m.OnChange(It.IsAny <Action <TestSenderOptions, string> >()))
            .Returns(mockChangeListener.Object);

            Action <TestSenderOptions> configureOptions = options => { };

            ISender sender = ReloadingSender.New("MyReloadingSender",
                                                 createSender, mockOptionsMonitor.Object, configureOptions);

            TestSender testSender = ((dynamic)sender).Sender;

            testSender.Disposed.Should().BeFalse();
            mockChangeListener.Verify(m => m.Dispose(), Times.Never());

            sender.Dispose();

            testSender.Disposed.Should().BeTrue();
            mockChangeListener.Verify(m => m.Dispose());
        }
コード例 #8
0
        public void FrontEndServiceShouldRespondToPersonCreatedEvents()
        {
            // Arrange
            using (var context = new FrontEndContext(
                       new DbContextOptionsBuilder <FrontEndContext>().UseSqlite(@"Filename=.\test.db").Options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                var builder = new ContainerBuilder();
                builder
                .RegisterType <FrontEndService>()
                .As <IReceive <PersonCreated> >();
                builder
                .RegisterInstance <IFrontEndContext>(context).ExternallyOwned();

                using (var waiter = new BlockingReceiver <PersonCreated>())
                    using (var container = builder.Build())
                        using (var sender = new TestSender())
                            using (var listener = sender.Listener())
                            {
                                listener.SubscribeEvents <PersonCreated>(container);
                                waiter.SubscribeToEvents(listener);

                                // Act
                                sender.PublishEvent(new PersonCreated {
                                });
                                waiter.Next();
                            }

                // Assert
                Assert.True(context.People.Any());
            }
        }
コード例 #9
0
        public void ReceiverWithExceptionLeavesCommandInQueueToBeRedelivered()
        {
            using (var sender = new TestSender())
            {
                sender.PublishCommand(3);

                using (var wait = new ManualResetEvent(false))
                {
                    var service = Substitute.For <IReceive <int> >();
                    service.When(_ => _.Execute(Arg.Any <int>())).Do(_ =>
                    {
                        wait.Set();
                        throw new NotImplementedException();
                    });

                    var builder = new ContainerBuilder();
                    builder.RegisterInstance(service);
                    using (var container = builder.Build())
                        using (var listener = sender.Listener())
                        {
                            listener.SubscribeCommands <int>(container);
                            Assert.True(wait.WaitOne(TimeSpan.FromSeconds(5)));

                            service.Received(1).Execute(3);
                        }
                }

                using (var service = new BlockingReceiver <int>())
                    using (var listener = sender.Listener())
                    {
                        service.SubscribeToCommand(listener);
                        Assert.Equal(3, service.Next());
                    }
            }
        }
コード例 #10
0
        public void OnOptionsChangedTest1()
        {
            Func <TestSenderOptions, ISender> createSender = options =>
            {
                return(new TestSender("MyTestSender", options.TestSetting1, options.TestSetting2));
            };

            var initialOptions = new TestSenderOptions
            {
                TestSetting1 = "InitialTestSetting1",
                TestSetting2 = "InitialTestSetting2"
            };

            var mockOptionsMonitor = new Mock <IOptionsMonitor <TestSenderOptions> >(MockBehavior.Strict);
            var mockChangeListener = new Mock <IDisposable>(MockBehavior.Strict);

            Action <TestSenderOptions, string> onChangeCallback = null;

            mockOptionsMonitor.Setup(m => m.Get("MyReloadingSender")).Returns(initialOptions);
            mockOptionsMonitor.Setup(m => m.OnChange(It.IsAny <Action <TestSenderOptions, string> >()))
            .Callback <Action <TestSenderOptions, string> >(onChange => onChangeCallback = onChange)
            .Returns(mockChangeListener.Object);

            Action <TestSenderOptions> configureOptions = options =>
            {
                options.TestSetting2 = "ConfiguredTestSetting2";
            };

            ISender sender = ReloadingSender.New("MyReloadingSender",
                                                 createSender, mockOptionsMonitor.Object, configureOptions);

            dynamic s = sender;

            onChangeCallback.Should().NotBeNull();

            TestSender initialTestSender = s.Sender;

            var newOptions = new TestSenderOptions
            {
                TestSetting1 = "NewTestSetting1",

                // Note that we won't see this value below, since our
                // 'configureOptions' action above overrides this value.
                TestSetting2 = "NewTestSetting2"
            };

            // Simulate the change to our sender:
            onChangeCallback(newOptions, "MyReloadingSender");

            TestSender newTestSender = s.Sender;

            newTestSender.Should().NotBeSameAs(initialTestSender);

            newTestSender.Name.Should().Be("MyTestSender");
            newTestSender.TestSetting1.Should().Be("NewTestSetting1");
            newTestSender.TestSetting2.Should().Be("ConfiguredTestSetting2");

            initialTestSender.Disposed.Should().BeTrue();
        }
コード例 #11
0
        public void TestReceiveMessageFromSingleSender( )
        {
            var sender = new TestSender( );

            using (var receiver = new TestReceiver( )) {
                receiver.SubscribeToMessagesFrom(sender);

                sender.SendMessage(MessageLevel.INFO, "This is a test.");

                Assert.That(receiver.MessageReceived, Is.True);
            }
        }
コード例 #12
0
        public void SenderRaisesEvent()
        {
            using (var sender = new TestSender())
            {
                var message = string.Empty;
                sender.Send += (o, e) => message = e.Message;

                sender.PublishEvent("hallo");

                Assert.Equal("\"hallo\"", message);
            }
        }
コード例 #13
0
ファイル: EmailTests.cs プロジェクト: lukelukic/macrotracker
        public void TestMailSenderDoesntThrowException()
        {
            IEmailSender sender = new TestSender();

            sender.Subject = "Test123";
            sender.ToEmail = "*****@*****.**";
            sender.Body    = "Message to send.";

            Action action = () => sender.Send();

            action.Should().NotThrow();
        }
コード例 #14
0
        internal InboxSmokeTestsHelper(TestSender testSender)
        {
            _testSender = testSender;
            var broker = new Broker(testSender.Id);

            var serviceProvider = LoggingUtility.CreateServiceProviderAndSetUpLogging();

            _client = new DigipostClient(
                new ClientConfig(broker, testSender.Environment),
                testSender.Certificate,
                serviceProvider.GetService <ILoggerFactory>()
                );
        }
コード例 #15
0
        public ClientSmokeTestHelper(TestSender testSender, bool withoutDataTypesProject = false)
        {
            var broker = new Broker(testSender.Id);

            _testSender = testSender;

            var serviceProvider = LoggingUtility.CreateServiceProviderAndSetUpLogging();

            _digipostClient = new DigipostClient(new ClientConfig(broker, testSender.Environment)
            {
                TimeoutMilliseconds = 900000000, LogRequestAndResponse = true, SkipMetaDataValidation = withoutDataTypesProject
            }, testSender.Certificate, serviceProvider.GetService <ILoggerFactory>());
        }
コード例 #16
0
        public void TestReceiveMessageFromMultipleSenders( )
        {
            var aSender       = new TestSender( );
            var anotherSender = new TestSender( );

            using (var receiver = new TestReceiver( )) {
                receiver.SubscribeToMessagesFrom(aSender);
                receiver.SubscribeToMessagesFrom(anotherSender);

                aSender.SendMessage(MessageLevel.INFO, "Message sent from a sender.");
                anotherSender.SendMessage(MessageLevel.INFO, "Message sent from another sender.");

                Assert.That(receiver.MessageReceived, Is.True);
            }
        }
コード例 #17
0
        public void ConstructorTest()
        {
            Func <TestSenderOptions, ISender> expectedCreateSender = options =>
            {
                return(new TestSender("MyTestSender", options.TestSetting1, options.TestSetting2));
            };

            var testOptions = new TestSenderOptions
            {
                TestSetting1 = "MyTestSetting1",
                TestSetting2 = "MyTestSetting2"
            };

            var mockOptionsMonitor = new Mock <IOptionsMonitor <TestSenderOptions> >(MockBehavior.Strict);
            var mockChangeListener = new Mock <IDisposable>(MockBehavior.Strict);

            mockOptionsMonitor.Setup(m => m.Get("MyReloadingSender")).Returns(testOptions);
            mockOptionsMonitor.Setup(m => m.OnChange(It.IsAny <Action <TestSenderOptions, string> >()))
            .Returns(mockChangeListener.Object);

            Action <TestSenderOptions> expectedConfigureOptions = options => { };

            ISender sender = ReloadingSender.New("MyReloadingSender",
                                                 expectedCreateSender, mockOptionsMonitor.Object, expectedConfigureOptions);

            sender.Name.Should().Be("MyReloadingSender");
            sender.GetType().Should().Be(ReloadingSender);

            dynamic s = sender;

            Func <TestSenderOptions, ISender> createSender = s.CreateSender;

            createSender.Should().BeSameAs(expectedCreateSender);

            Action <TestSenderOptions> configureOptions = s.ConfigureOptions;

            configureOptions.Should().BeSameAs(expectedConfigureOptions);

            TestSender testSender = s.Sender;

            testSender.Name.Should().Be("MyTestSender");
            testSender.TestSetting1.Should().Be("MyTestSetting1");
            testSender.TestSetting2.Should().Be("MyTestSetting2");

            IDisposable changeListener = s.ChangeListener;

            changeListener.Should().BeSameAs(mockChangeListener.Object);
        }
コード例 #18
0
        public void OnOptionsChangedTest2()
        {
            Func <TestSenderOptions, ISender> createSender = options =>
            {
                return(new TestSender("MyTestSender", options.TestSetting1, options.TestSetting2));
            };

            var initialOptions = new TestSenderOptions
            {
                TestSetting1 = "InitialTestSetting1",
                TestSetting2 = "InitialTestSetting2"
            };

            var mockOptionsMonitor = new Mock <IOptionsMonitor <TestSenderOptions> >(MockBehavior.Strict);
            var mockChangeListener = new Mock <IDisposable>(MockBehavior.Strict);

            Action <TestSenderOptions, string> onChangeCallback = null;

            mockOptionsMonitor.Setup(m => m.Get("MyReloadingSender")).Returns(initialOptions);
            mockOptionsMonitor.Setup(m => m.OnChange(It.IsAny <Action <TestSenderOptions, string> >()))
            .Callback <Action <TestSenderOptions, string> >(onChange => onChangeCallback = onChange)
            .Returns(mockChangeListener.Object);

            Action <TestSenderOptions> configureOptions = options => { };

            ISender sender = ReloadingSender.New("MyReloadingSender",
                                                 createSender, mockOptionsMonitor.Object, configureOptions);

            dynamic r = sender;

            onChangeCallback.Should().NotBeNull();

            TestSender initialTestSender = r.Sender;

            var newOptions = new TestSenderOptions
            {
                TestSetting1 = "NewTestSetting1",
                TestSetting2 = "NewTestSetting2"
            };

            // Simulate a change to some other sender:
            onChangeCallback(newOptions, "SomeOtherSender");

            TestSender newTestSender = r.Sender;

            newTestSender.Should().BeSameAs(initialTestSender);
            initialTestSender.Disposed.Should().BeFalse();
        }
コード例 #19
0
        public void CommandsAreDeliveredAlsoWhenPublishedBeforeListenerSubscribed()
        {
            using (var sender = new TestSender())
            {
                sender.PublishCommand(3);

                using (var service = new BlockingReceiver <int>())
                    using (var listener = sender.Listener())
                    {
                        service.SubscribeToCommand(listener);
                        var result = service.Next();

                        Assert.Equal(3, result);
                    }
            }
        }
コード例 #20
0
        public void TestMessageRelaying( )
        {
            var sender = new TestSender( );

            using (var relay = new TestRelay( )) {
                using (var receiver = new TestReceiver( )) {
                    relay.SubscribeToMessagesFrom(sender);
                    receiver.SubscribeToMessagesFrom(relay);

                    sender.SendMessage(MessageLevel.INFO, "Message sent from a sender.");
                    relay.SendMessage(MessageLevel.INFO, "Message sent from a relay.");

                    Assert.That(relay.MessageReceived, Is.True);
                    Assert.That(receiver.MessageReceived, Is.True);
                }
            }
        }
コード例 #21
0
        public void InvokeAsync_WhenSenderIsNotFound_ShouldThrow()
        {
            var testSender    = new TestSender();
            var testEventArgs = new TestEventArgs();

            _globalPublishPipelineModuleConfig.SenderType = typeof(object);

            var pipelineContext = CreatePipelineContext(testEventArgs
                                                        );

            Task InvokeNextModule(PipelineContext context) => Task.CompletedTask;

            Assert.That(async() =>
            {
                await _globalPublishPipelineModule.InvokeAsync(_globalPublishPipelineModuleConfig, pipelineContext, InvokeNextModule);
            }, Throws.TypeOf <EventSenderNotFoundException>());
        }
コード例 #22
0
        public async Task When_SendMessageAsync_SendAsync_Succeeds_MessagesSent_Is_Incremented()
        {
            const string deviceId      = "device1";
            var          configuration = new ConfigurationBuilder()
                                         .AddInMemoryCollection(new Dictionary <string, string>())
                                         .Build();

            var stats  = new RunnerStats();
            var config = RunnerConfiguration.Load(configuration, NullLogger.Instance);
            var sender = new TestSender(false, false, deviceId, config);

            await sender.SendMessageAsync(stats, CancellationToken.None);

            Assert.Equal(1, stats.MessagesSent);
            Assert.Equal(0, stats.TotalSendTelemetryErrors);
            Assert.Single(sender.TestMessages);
        }
コード例 #23
0
        public async Task When_SendingMessage_With_Different_Payload_Per_Device_Should_Work()
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("./test_files/test3-config-multiple-devices.json")
                                .Build();

            var stats         = new RunnerStats();
            var config        = RunnerConfiguration.Load(configuration, NullLogger.Instance);
            var senderDevice1 = new TestSender(false, false, "device0001", config);
            var senderDevice2 = new TestSender(false, false, "device0002", config);
            var senderDevice3 = new TestSender(false, false, "device0003", config);

            const int messageCount = 3;

            for (int i = 0; i < messageCount; i++)
            {
                await Task.WhenAll(
                    senderDevice1.SendMessageAsync(stats, default),
                    senderDevice2.SendMessageAsync(stats, default),
                    senderDevice3.SendMessageAsync(stats, default));
            }

            foreach (var expectedMessageForDevice1 in new[]
            {
                "{\"value\":\"1\"}",
                "{\"value\":\"true\"}",
                "{\"value\":\"2\"}",
            })
            {
                Assert.Equal(1, senderDevice1.TestMessages.Count(x => expectedMessageForDevice1 == Encoding.UTF8.GetString(x.MessageBytes)));
            }

            foreach (var expectedMessageForDevice3 in new[]
            {
                "{\"a\":\"b\",\"value\":\"1\"}",
                "{\"a\":\"b\",\"value\":\"true\"}",
                "{\"a\":\"b\",\"value\":\"2\"}",
            })
            {
                Assert.Equal(1, senderDevice3.TestMessages.Count(x => expectedMessageForDevice3 == Encoding.UTF8.GetString(x.MessageBytes)));
            }

            const string expectedMessageForDevice2 = "{\"value\":\"myfixvalue\"}";

            Assert.Equal(messageCount, senderDevice2.TestMessages.Count(x => Encoding.UTF8.GetString(x.MessageBytes) == expectedMessageForDevice2));
        }
コード例 #24
0
            public void ShouldReplaceCorrelationIdOnRequestWithoutLabel()
            {
                var storageMock     = new Mock <IIncomingMessageHeaderStorage>();
                var incomingHeaders = new Dictionary <string, object>
                {
                    [Headers.OriginalMessageId] = "OriginalMessageId",
                    [Headers.CorrelationId]     = "CorrelationId"
                };

                storageMock.Setup(s => s.Load())
                .Returns(
                    incomingHeaders);
                var senderConfigMock = new Mock <ISenderConfiguration>();

                senderConfigMock.Setup(s => s.Options)
                .Returns(
                    new SenderOptions
                {
                    IncomingMessageHeaderStorage = new Maybe <IIncomingMessageHeaderStorage>(storageMock.Object)
                });
                senderConfigMock.Setup(s => s.Label)
                .Returns(MessageLabel.Any);

                IMessage sentMessage = null;
                var      sut         = new TestSender(
                    me =>
                {
                    sentMessage = me.Out;
                    me.In       = new Message(MessageLabel.Any, new object());
                    TaskCompletionSource <MessageExchange> tcs = new TaskCompletionSource <MessageExchange>();
                    tcs.SetResult(me);
                    return(tcs.Task);
                },
                    new Mock <IEndpoint>().Object,
                    senderConfigMock.Object,
                    Enumerable.Empty <IMessageExchangeFilter>());

                var r = sut.Request <object>(new { }, new RequestOptions()).Result;

                Assert.IsNotNull(sentMessage);
                Assert.AreEqual(incomingHeaders[Headers.OriginalMessageId], sentMessage.Headers[Headers.OriginalMessageId]);
                Assert.AreNotEqual(incomingHeaders[Headers.CorrelationId], sentMessage.Headers[Headers.CorrelationId]);
            }
コード例 #25
0
        public void TestSenderProvidesSpecificListener()
        {
            using (var sender1 = new TestSender())
                using (var sender2 = new TestSender())
                    using (var listener1 = sender1.Listener())
                        using (var listener2 = sender2.Listener())
                            using (var service1 = new BlockingReceiver <int>())
                                using (var service2 = new BlockingReceiver <int>())
                                {
                                    service1.SubscribeToEvents(listener1);
                                    service2.SubscribeToEvents(listener2);

                                    sender1.PublishEvent(3);
                                    sender2.PublishEvent(4);

                                    Assert.Equal(3, service1.Next());
                                    Assert.Equal(4, service2.Next());
                                }
        }
コード例 #26
0
        public void ReceivedCommandIsNotDeliveredTwice()
        {
            using (var sender = new TestSender())
            {
                sender.PublishCommand(3);

                using (var service = new BlockingReceiver <int>())
                    using (var listener = sender.Listener())
                    {
                        service.SubscribeToCommand(listener);
                        Assert.Equal(3, service.Next());
                    }

                using (var service = new BlockingReceiver <int>())
                    using (var listener = sender.Listener())
                    {
                        service.SubscribeToCommand(listener);
                        Assert.Throws <TimeoutException>(() => service.Next(TimeSpan.FromSeconds(1)));
                    }
            }
        }
コード例 #27
0
        public async Task When_SendMessageAsync_SendAsync_Throws_NonTransientExcption_SendTelemetryErrors_Is_Incremented()
        {
            const string deviceId      = "device1";
            var          configuration = new ConfigurationBuilder()
                                         .AddInMemoryCollection(new Dictionary <string, string>())
                                         .Build();

            var stats  = new RunnerStats();
            var config = RunnerConfiguration.Load(configuration, NullLogger.Instance);
            var sender = new TestSender(false, true, deviceId, config);

            var stopwatch = Stopwatch.StartNew();
            await sender.SendMessageAsync(stats, CancellationToken.None);

            stopwatch.Stop();

            Assert.InRange(stopwatch.ElapsedMilliseconds, sender.TransientErrorWaitTime, (sender.MaxNumberOfSendAttempts + 1) * sender.TransientErrorWaitTime);
            Assert.Equal(0, stats.MessagesSent);
            Assert.InRange(stats.TotalSendTelemetryErrors, 1, int.MaxValue);
            Assert.Empty(sender.TestMessages);
        }
コード例 #28
0
        public void PublishedMessageShouldBeDeliveredToSubscribedReceiversFromBothListeners()
        {
            // Arrange
            using (var sender = new TestSender())
                using (var listener1 = sender.Listener())
                    using (var listener2 = sender.Listener())
                        using (var service1 = new BlockingReceiver <Person>())
                            using (var service2 = new BlockingReceiver <Person>())
                            {
                                service1.SubscribeToEvents(listener1);
                                service2.SubscribeToEvents(listener2);

                                // Act
                                sender.PublishEvent(new Person {
                                    FirstName = "first"
                                });

                                // Assert
                                service1.Next();
                                service2.Next();
                            }
        }
コード例 #29
0
        public async Task When_SendMessageAsync_With_Header_Property_Is_Added()
        {
            const string deviceId      = "device1";
            const string propertyKey   = "myPropertyKey";
            const string propertyValue = "My Propert Value";
            var          rawTemplate   = $"{{ \"{propertyKey}\": \"{propertyValue}\" }}";
            var          configuration = new ConfigurationBuilder()
                                         .AddInMemoryCollection(new Dictionary <string, string>()
            {
                { "Header", rawTemplate }
            })
                                         .Build();

            var stats  = new RunnerStats();
            var config = RunnerConfiguration.Load(configuration, NullLogger.Instance);
            var sender = new TestSender(false, false, deviceId, config);

            await sender.SendMessageAsync(stats, CancellationToken.None);

            Assert.Equal(propertyValue, sender.TestMessages.Single().Properties[propertyKey]);
            Assert.Equal(1, stats.MessagesSent);
            Assert.Equal(0, stats.TotalSendTelemetryErrors);
            Assert.Single(sender.TestMessages);
        }
コード例 #30
0
 // Use this for initialization
 void Start()
 {
     sender = gameObject.AddComponent <TestSender>();
 }