Beispiel #1
0
        private _HubRouter CreateHub(string root, string name, string cloudEP)
        {
            const string settings =
                @"
MsgRouter.AppName               = Test
MsgRouter.AppDescription        = Test Description
MsgRouter.RouterEP				= physical://{0}/{1}
MsgRouter.ParentEP              = 
MsgRouter.DiscoveryMode         = MULTICAST
MsgRouter.CloudEP               = {2}
MsgRouter.CloudAdapter          = ANY
MsgRouter.UdpEP					= ANY:0
MsgRouter.TcpEP					= ANY:0
MsgRouter.TcpBacklog			= 100
MsgRouter.TcpDelay				= off
MsgRouter.BkInterval			= 1s
MsgRouter.MaxIdle				= 3m
MsgRouter.AdvertiseTime			= 30s
MsgRouter.KeepAliveTime         = 1m
MsgRouter.DefMsgTTL				= 5
MsgRouter.SharedKey             = PLAINTEXT
MsgRouter.SessionCacheTime      = 2m
MsgRouter.SessionRetries        = 3
MsgRouter.SessionTimeout        = 10s
";

            _HubRouter router;

            Config.SetConfig(string.Format(settings, root, name, cloudEP));
            router = new _HubRouter();
            router.Start();

            return(router);
        }
Beispiel #2
0
        public void PhysicalQuery_LongQuery_Self()
        {
            _HubRouter hub = null;
            TestAck    ack;
            string     s;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub = CreateHub("detached", "hub0", group);
                Thread.Sleep(InitDelay);

                // Verify a long running q/r between a single router,
                // verifying that query was not sent multiple times.

                s   = "Hello World!";
                ack = (TestAck)hub.Query(hub.RouterEP, new NotCachedMsg("Sleep", s));
                Assert.AreEqual(s, ack.Value);
                Assert.IsTrue(hub.ReceiveCount == 1);
            }
            finally
            {
                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #3
0
        public void LogicalQueryViaUdpBroadcast_LongQuery_Self()
        {
            _HubRouter hub = null;
            TestAck    ack;
            string     s;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub = CreateHub("detached", "hub0", group);
                Thread.Sleep(InitDelay);

                // Verify a q/r between two routers

                s   = "Hello World!";
                ack = (TestAck)hub.Query("logical://hub", new NotCachedMsg("Sleep", s));
                Assert.AreEqual(s, ack.Value);
                Assert.IsTrue(hub.ReceiveCount > 0);
            }
            finally
            {
                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #4
0
        public void PhysicalQuery_Cached_Remote()
        {
            _HubRouter  hub  = null;
            _LeafRouter leaf = null;
            CachedMsg   query;
            TestAck     ack1;
            TestAck     ack2;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                // Verify that sessions and replies are cached

                query = new CachedMsg("ActionCount", string.Empty);

                ack1 = (TestAck)leaf.Query(hub.RouterEP, query);
                Assert.AreEqual(1, hub.ReceiveCount);

                // Simulate the resending of the query message and wait
                // for another reply.  The second reply should hold the
                // same value as the first.

                query            = new CachedMsg("ActionCount", string.Empty);
                query._ToEP      = leaf.RouterEP;
                query._SessionID = ack1._SessionID;
                query._Flags    |= MsgFlag.OpenSession | MsgFlag.ServerSession | MsgFlag.KeepSessionID;

                ack2 = (TestAck)leaf.Query(hub.RouterEP, query);
                Assert.AreEqual(1, hub.ReceiveCount);
                Assert.AreEqual(ack1.Value, ack2.Value);
            }
            finally
            {
                if (hub != null)
                {
                    hub.Stop();
                }

                if (leaf != null)
                {
                    leaf.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #5
0
        public void PhysicalQuery_Timeout_Remote_Cached()
        {
            _LeafRouter leaf = null;
            _HubRouter  hub  = null;
            TestAck     ack;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                // Verify that retries and timeout works

                try
                {
                    ack = (TestAck)leaf.Query(hub.RouterEP, new CachedMsg("Ignore", string.Empty));
                    Assert.Fail("Should have seen a TimeoutException");
                }
                catch (TimeoutException)
                {
                    // Verify that since the CachedMsg handlers are tagged with
                    // [MsgHandler[Idempotent=true)] that we have not
                    // seen any retry messages

                    Assert.AreEqual(1, hub.ReceiveCount);
                }
            }
            finally
            {
                if (leaf != null)
                {
                    leaf.Stop();
                }

                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #6
0
        public void LogicalQueryViaUdpBroadcast_Timeout_Remote()
        {
            _LeafRouter leaf = null;
            _HubRouter  hub  = null;
            TestAck     ack;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                // Verify that retries and timeout works

                try
                {
                    ack = (TestAck)leaf.Query("logical://hub", new NotCachedMsg("Ignore", string.Empty));
                    Assert.Fail("Should have seen a TimeoutException");
                }
                catch (TimeoutException)
                {
                    // Verify that since the NotCachedMsg handlers are not tagged with
                    // [MsgHandler[Idempotent=true)] that we should have seen
                    // all of the retry messages as well.

                    Assert.AreEqual(leaf.SessionRetries, hub.ReceiveCount);
                }
            }
            finally
            {
                if (leaf != null)
                {
                    leaf.Stop();
                }

                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #7
0
        private _HubRouter CreateHub(string root, string name, string cloudEP)
        {
            const string settings =
                @"
MsgRouter.AppName               = Test
MsgRouter.AppDescription        = Test Description
MsgRouter.RouterEP				= physical://{0}/{1}
MsgRouter.ParentEP              = 
MsgRouter.DiscoveryMode         = UDPBROADCAST
MsgRouter.CloudEP               = {2}
MsgRouter.CloudAdapter          = ANY
MsgRouter.UdpEP					= ANY:0
MsgRouter.TcpEP					= ANY:0
MsgRouter.TcpBacklog			= 100
MsgRouter.TcpDelay				= off
MsgRouter.BkInterval			= 1s
MsgRouter.MaxIdle				= 3m
MsgRouter.AdvertiseTime			= 30s
MsgRouter.KeepAliveTime         = 1m
MsgRouter.DefMsgTTL				= 5
MsgRouter.SharedKey             = PLAINTEXT
MsgRouter.SessionCacheTime      = 2m
MsgRouter.SessionRetries        = 3
MsgRouter.SessionTimeout        = 10s

MsgRouter.BroadcastSettings.NetworkBinding        = ANY
MsgRouter.BroadcastSettings.SocketBufferSize      = 1M
MsgRouter.BroadcastSettings.Server[0]             = localhost:UDP-BROADCAST
MsgRouter.BroadcastSettings.SharedKey             = aes:NtSkj76eyCAsJE4TnTqmPOuKd5hDDWwSS7ccTfeKEL8=:S9Xc6skGFWtxoxBaoTxJlQ==
MsgRouter.BroadcastSettings.MessageTTL            = 15m
MsgRouter.BroadcastSettings.BroadcastGroup        = 0
MsgRouter.BroadcastSettings.BkTaskInterval        = 1s
MsgRouter.BroadcastSettings.KeepAliveInterval     = 30s
MsgRouter.BroadcastSettings.ServerResolveInterval = 5m
";

            _HubRouter router;

            Config.SetConfig(string.Format(settings, root, name, cloudEP));
            router = new _HubRouter();
            router.Start();

            return(router);
        }
Beispiel #8
0
        public void PhysicalQuery_Exception()
        {
            _LeafRouter leaf = null;
            _HubRouter  hub  = null;
            TestAck     ack;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                // Verify that retries and timeout works

                try
                {
                    ack = (TestAck)leaf.Query(hub.RouterEP, new NotCachedMsg("Exception", "Test Exception"));
                    Assert.Fail("Should have seen a TimeoutException");
                }
                catch (SessionException e)
                {
                    Assert.AreEqual("Test Exception", e.Message);
                }
            }
            finally
            {
                if (leaf != null)
                {
                    leaf.Stop();
                }

                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #9
0
        public void PhysicalQuery_Basic_Remote_Blast()
        {
            _LeafRouter leaf = null;
            _HubRouter  hub  = null;
            TestAck     ack;
            string      s;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                for (int i = 0; i < BlastCount; i++)
                {
                    // Verify a q/r between two routers

                    s   = "Hello World: " + i.ToString();
                    ack = (TestAck)hub.Query(leaf.RouterEP, new NotCachedMsg("Normal", s));
                    Assert.AreEqual(s, ack.Value);
                }
            }
            finally
            {
                if (leaf != null)
                {
                    leaf.Stop();
                }

                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #10
0
        public void PhysicalQueryViaUdpBroadcast_LongQuery_Remote()
        {
            _LeafRouter leaf = null;
            _HubRouter  hub  = null;
            TestAck     ack;
            string      s;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                // Verify a long running q/r between two routers,
                // verifying that the query was not sent multiple times.

                s   = "Hello World!";
                ack = (TestAck)hub.Query(leaf.RouterEP, new NotCachedMsg("Sleep", s));
                Assert.AreEqual(s, ack.Value);
                Assert.IsTrue(leaf.ReceiveCount == 1);
            }
            finally
            {
                if (leaf != null)
                {
                    leaf.Stop();
                }

                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }
Beispiel #11
0
        public void LogicalQueryViaUdpBroadcast_Basic_Remote()
        {
            _LeafRouter leaf = null;
            _HubRouter  hub  = null;
            TestAck     ack;
            string      s;

            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            try
            {
                hub  = CreateHub("detached", "hub0", group);
                leaf = CreateLeaf("detached", "hub0", "leaf0", group);
                Thread.Sleep(InitDelay);

                // Verify a q/r between two routers

                s   = "Hello World!";
                ack = (TestAck)hub.Query("logical://leaf", new NotCachedMsg("Normal", s));
                Assert.AreEqual(s, ack.Value);
            }
            finally
            {
                if (leaf != null)
                {
                    leaf.Stop();
                }

                if (hub != null)
                {
                    hub.Stop();
                }

                Config.SetConfig(null);
            }
        }