Example #1
0
        public void WhenSubscribingMoreThanOneObserverToTheObservableOnlyOneServerSubscriptionShouldBeSetup()
        {
            sync = TestSync.FourActors();
            var subject = "eaa520002f1f42b0b5e2d0e162822780";
            var payload = SamplePayload.Random();

            using (NATSServer.CreateFastAndVerify(Context.Server1.Port))
            {
                using (var cn = Context.OpenConnection(Context.Server1.Port))
                {
                    using (var observable = cn.Observe(subject))
                    {
                        var interceptingOb     = new TestObserver(_ => sync.SignalComplete());
                        var interceptingSafeOb = new TestObserver(_ => sync.SignalComplete());

                        observable.Subscribe(interceptingOb);
                        observable.Subscribe(interceptingSafeOb);
                        observable.Subscribe(_ => sync.SignalComplete());
                        observable.SubscribeSafe(_ => sync.SignalComplete());

                        cn.Publish(subject, payload);

                        sync.WaitForAll();
                        Assert.Equal(1, cn.SubscriptionCount);
                    }
                }
            }
        }
Example #2
0
        public void WhenSubscribingMoreThanOneObserverToTheObservableOnlyOneServerSubscriptionShouldBeSetup()
        {
            sync = TestSync.FourActors();
            var subject = "42016e8229d340c9869c8c2e30fec4f6";
            var payload = SamplePayload.Random();

            using (Context.StartStreamingServerWithEmbedded(Context.Server1))
            {
                using (var cn = Context.GetStanConnection(Context.Server1))
                {
                    var initialSubscriptionCount = cn.NATSConnection.SubscriptionCount;

                    using (var observable = cn.Observe(subject))
                    {
                        var interceptingOb     = new TestObserver(_ => sync.SignalComplete());
                        var interceptingSafeOb = new TestObserver(_ => sync.SignalComplete());

                        observable.Subscribe(interceptingOb);
                        observable.Subscribe(interceptingSafeOb);
                        observable.Subscribe(_ => sync.SignalComplete());
                        observable.SubscribeSafe(_ => sync.SignalComplete());

                        cn.Publish(subject, payload);

                        sync.WaitForAll();
                        Assert.Equal(1, cn.NATSConnection.SubscriptionCount - initialSubscriptionCount);
                    }
                }
            }
        }
Example #3
0
        public void WhenPublishingAllSubscribedObserversShouldGetTheMessage()
        {
            sync = TestSync.FourActors();
            var subject = "132dc3101ef74ede90913c70baa542de";
            var payload = SamplePayload.Random();

            using (NATSServer.CreateFastAndVerify(Context.Server1.Port))
            {
                using (var cn = Context.OpenConnection(Context.Server1.Port))
                {
                    using (var observable = cn.Observe(subject))
                    {
                        var interceptingOb = new TestObserver(_ => sync.SignalComplete());
                        var interceptingSafeOb = new TestObserver(_ => sync.SignalComplete());
                        Msg delegatingObIntercept = null, safeDelegatingObIntercept = null;

                        observable.Subscribe(interceptingOb);
                        observable.SubscribeSafe(interceptingSafeOb);
                        observable.Subscribe(msg =>
                        {
                            delegatingObIntercept = msg;
                            sync.SignalComplete();
                        });
                        observable.SubscribeSafe(msg =>
                        {
                            safeDelegatingObIntercept = msg;
                            sync.SignalComplete();
                        });

                        cn.Publish(subject, payload);

                        sync.WaitForAll();
                        Assert.Equal(payload, interceptingOb.OnNextResults.Single());
                        Assert.Equal(payload, interceptingSafeOb.OnNextResults.Single());
                        Assert.Equal(payload, delegatingObIntercept);
                        Assert.Equal(payload, safeDelegatingObIntercept);
                    }
                }
            }
        }
Example #4
0
        public void WhenPublishingAllSubscribedObserversShouldGetTheMessage()
        {
            sync = TestSync.FourActors();
            var subject = "008f9155d7b84821a26d2e41f73a9a7f";
            var payload = SamplePayload.Random();

            using (Context.StartStreamingServerWithEmbedded(Context.Server1))
            {
                using (var cn = Context.GetStanConnection(Context.Server1))
                {
                    using (var observable = cn.Observe(subject))
                    {
                        var     interceptingOb = new TestObserver(_ => sync.SignalComplete());
                        var     interceptingSafeOb = new TestObserver(_ => sync.SignalComplete());
                        StanMsg delegatingObIntercept = null, safeDelegatingObIntercept = null;

                        observable.Subscribe(interceptingOb);
                        observable.SubscribeSafe(interceptingSafeOb);
                        observable.Subscribe(msg =>
                        {
                            delegatingObIntercept = msg;
                            sync.SignalComplete();
                        });
                        observable.SubscribeSafe(msg =>
                        {
                            safeDelegatingObIntercept = msg;
                            sync.SignalComplete();
                        });

                        cn.Publish(subject, payload);

                        sync.WaitForAll();
                        Assert.Equal(payload, interceptingOb.OnNextResults.Single());
                        Assert.Equal(payload, interceptingSafeOb.OnNextResults.Single());
                        Assert.Equal(payload, delegatingObIntercept);
                        Assert.Equal(payload, safeDelegatingObIntercept);
                    }
                }
            }
        }