Example #1
0
        public void TC019_ErrorHandlerNotPedantic()
        {
            bool           errorThrown = false;
            AutoResetEvent resetEvent  = new AutoResetEvent(false);

            using (IReactor natsClient = ReactorFactory.GetReactor(typeof(Reactor)))
            {
                natsClient.OnError += new EventHandler <ReactorErrorEventArgs>(delegate(object sender, ReactorErrorEventArgs args)
                {
                    errorThrown = true;
                    resetEvent.Set();
                });
                natsClient.Start(natsEndpoint);

                int sid = natsClient.Subscribe("foo");
                natsClient.Unsubscribe(sid);
                natsClient.Unsubscribe(sid);

                resetEvent.WaitOne(5000);
                natsClient.Close();
            }
            Assert.IsFalse(errorThrown);
        }
Example #2
0
        public void TC012_RecieveMessageOnUnsubscription()
        {
            bool   errorThrown       = false;
            int    receivedCount     = 0;
            object receivedCountLock = new object();
            int    sid = 0;

            IReactor natsClient = ReactorFactory.GetReactor(typeof(Reactor));

            natsClient.OnError += new EventHandler <ReactorErrorEventArgs>(delegate(object sender, ReactorErrorEventArgs args)
            {
                errorThrown = true;
            });

            natsClient.Start(natsEndpoint);
            ManualResetEvent mre = new ManualResetEvent(false);

            sid = natsClient.Subscribe("foo", delegate(string msg, string reply, string subject)
            {
                lock (receivedCountLock)
                {
                    receivedCount++;
                    if (receivedCount == 2)
                    {
                        natsClient.Unsubscribe(sid);
                        mre.Set();
                    }
                }
            });

            natsClient.Publish("foo", () =>
            {
                natsClient.Publish("foo", () =>
                {
                    mre.WaitOne();
                    natsClient.Publish("foo", () => { }, "xxx");
                }, "xxx");
            }, "xxx");

            Thread.Sleep(5000);
            natsClient.Close();

            Assert.IsFalse(errorThrown);
            Assert.AreEqual(2, receivedCount);
        }
Example #3
0
        public void TC018_UnsubscribeWithinBlocks()
        {
            bool           errorThrown          = false;
            int            receivedMessageCount = 0;
            int            sid        = 0;
            AutoResetEvent resetEvent = new AutoResetEvent(false);
            object         receivedMessageCountLock = new object();

            using (IReactor natsClient = ReactorFactory.GetReactor(typeof(Reactor)))
            {
                natsClient.OnError += new EventHandler <ReactorErrorEventArgs>(delegate(object sender, ReactorErrorEventArgs args)
                {
                    errorThrown = true;
                    resetEvent.Set();
                });

                natsClient.Start(natsEndpoint);

                sid = natsClient.Subscribe("foo", delegate(string msg, string reply, string subject)
                {
                    lock (receivedMessageCountLock)
                    {
                        receivedMessageCount++;
                        natsClient.Unsubscribe(sid);
                    }
                });

                natsClient.Publish("foo", delegate()
                {
                    natsClient.Publish("foo", delegate()
                    {
                        resetEvent.Set();
                    }, "xxx");
                }, "xxx");


                resetEvent.WaitOne(5000);
                natsClient.Close();
            }
            Assert.IsFalse(errorThrown);
            Assert.AreEqual(1, receivedMessageCount);
        }
Example #4
0
        public void TC004_CheckServerError()
        {
            bool           errorThrown = false;
            AutoResetEvent resetEvent  = new AutoResetEvent(false);

            using (IReactor natsClient = ReactorFactory.GetReactor(typeof(Reactor)))
            {
                natsClient.Pedantic = true;
                natsClient.OnError += new EventHandler <ReactorErrorEventArgs>(delegate(object sender, ReactorErrorEventArgs args)
                {
                    errorThrown = true;
                    resetEvent.Set();
                });
                natsClient.Start(natsEndpoint);
                natsClient.Unsubscribe(10000);
                natsClient.Publish("done");
                resetEvent.WaitOne(10000);
                natsClient.Close();
            }
            Assert.IsTrue(errorThrown);
        }