예제 #1
0
        public async Task ShouldMakeSubscription()
        {
            var subscription1 = Subscription.Matching <DatabaseStatus>(status => status.DatacenterName == "Paris" && status.Status == "Ko");
            var subscription2 = Subscription.Any <DoSomething>();

            var command = new DoSomething();

            Assert.AreEqual(0, GlobalTestContext.Get());

            var @event = new DatabaseStatus()
            {
                DatacenterName = "Paris",
                Status         = "Ko"
            };

            _bus.Start();

            //registration
            Assert.AreEqual(1, TestBusTransportTestContext.TransportHitCounter);

            await _bus.Subscribe(new SubscriptionRequest(subscription1));

            Assert.AreEqual(2, TestBusTransportTestContext.TransportHitCounter);

            await _bus.Subscribe(new SubscriptionRequest(subscription2));

            Assert.AreEqual(3, TestBusTransportTestContext.TransportHitCounter);

            //as the transport is mocked, register manually
            await _directory.RegisterAsync(_bus.Self, _bus.GetSubscriptions());

            //register directory transport call
            Assert.AreEqual(4, TestBusTransportTestContext.TransportHitCounter);

            _bus.Publish(@event);

            Assert.AreEqual(5, TestBusTransportTestContext.TransportHitCounter);

            await _bus.Send(command);

            Assert.AreEqual(6, TestBusTransportTestContext.TransportHitCounter);
        }
예제 #2
0
        public async Task ShouldTestE2E()
        {
            GlobalTestContext.Reset();

            var subscription1 = Subscription.Matching <DatabaseStatus>(status => status.DatacenterName == "Paris" && status.Status == "Ko");
            var subscription2 = Subscription.Any <DoSomething>();

            Assert.AreEqual(0, GlobalTestContext.Get());

            await _bus.Subscribe(new SubscriptionRequest(subscription1));

            await Task.Delay(50);

            await _bus.Subscribe(new SubscriptionRequest(subscription2));

            await Task.Delay(50);

            //should be consumed
            var command = new DoSomething();

            await _bus.Send(command);

            await Task.Delay(50);

            Assert.AreEqual(1, GlobalTestContext.Get());

            //should be consumed
            var @event = new DatabaseStatus()
            {
                DatacenterName = "Paris",
                Status         = "Ko"
            };

            _bus.Publish(@event);

            await Task.Delay(50);

            Assert.AreEqual(2, GlobalTestContext.Get());

            //should be consumed
            @event = new DatabaseStatus()
            {
                DatacenterName = "Paris",
                Status         = "Ko"
            };

            _bus.Publish(@event);

            await Task.Delay(50);

            Assert.AreEqual(3, GlobalTestContext.Get());

            //should not be consumed
            @event = new DatabaseStatus()
            {
                DatacenterName = "Paris",
                Status         = "Ok"
            };

            _bus.Publish(@event);

            await Task.Delay(50);

            Assert.AreEqual(3, GlobalTestContext.Get());
        }
예제 #3
0
 public void Handle(DatabaseStatus message)
 {
     GlobalTestContext.Increment();
 }
예제 #4
0
 public void Handle(DoSomething message)
 {
     GlobalTestContext.Increment();
 }