Example #1
0
        public void TestPubSubTimer()
        {
            int            port1       = 55677;
            AutoResetEvent eventRaised = new AutoResetEvent(false);

            using (var poller = new PollerAdapter())
            {
                ISocket  pub           = poller.AddSocket(SocketType.Pub, $"tcp://127.0.0.1:{port1}", true, "TestServer");
                ISocket  sub           = poller.AddSocket(SocketType.Sub, $"tcp://127.0.0.1:{port1}", false, "TestClient");
                ITimer   heartBeat     = poller.AddTimer(2, pub);
                byte[][] heartBeatData = { Encoding.UTF8.GetBytes("HeartBeat"), Encoding.UTF8.GetBytes("ClientSend"), Encoding.UTF8.GetBytes("Alive") };
                heartBeat.SetTimerElapsed(heartBeatData);
                string[] topic = { "HeartBeat" };
                sub.Subscribe(topic);
                sub.Received += (s, e) =>
                {
                    List <string> receiveData = SubReceive(e.Item);
                    for (int i = 0; i < receiveData.Count; i++)
                    {
                        Assert.AreEqual(Encoding.UTF8.GetString(heartBeatData[i]), receiveData[i]);
                    }
                    eventRaised.Set();
                };
                poller.Start();
                Thread.Sleep(1000);
                Assert.IsTrue(eventRaised.WaitOne(2000), "No Receive any event");
                poller.StopAll();
            }
        }
Example #2
0
        public void TestPubSub()
        {
            int            port1       = 55677;
            AutoResetEvent eventRaised = new AutoResetEvent(false);

            using (var poller = new PollerAdapter())
            {
                ISocket  pub      = poller.AddSocket(SocketType.Pub, $"tcp://127.0.0.1:{port1}", true, "TestServer");
                ISocket  sub      = poller.AddSocket(SocketType.Sub, $"tcp://127.0.0.1:{port1}", false, "TestClient");
                byte[][] pubAData = { Encoding.UTF8.GetBytes("Topic A"), Encoding.UTF8.GetBytes("Message Conetxt") };
                string[] topic    = { "Topic A" };
                sub.Subscribe(topic);
                sub.Received += (s, e) =>
                {
                    List <string> receiveData = SubReceive(e.Item);
                    for (int i = 0; i < receiveData.Count; i++)
                    {
                        Assert.AreEqual(Encoding.UTF8.GetString(pubAData[i]), receiveData[i]);
                    }
                    eventRaised.Set();
                };
                poller.Start();

                Thread.Sleep(1000);
                pub.SendData(pubAData);
                Assert.IsTrue(eventRaised.WaitOne(2000), "No Receive any event");
                eventRaised.Reset();
                byte[][] pubBData = { Encoding.UTF8.GetBytes("Topic B"), Encoding.UTF8.GetBytes("Message Conetxt") };
                pub.SendData(pubBData);
                Assert.IsFalse(eventRaised.WaitOne(2000), "Subscribe has problem");
                poller.StopAll();
            }
        }
Example #3
0
        public void TestRouterDealer()
        {
            int            port1       = 55677;
            AutoResetEvent eventRaised = new AutoResetEvent(false);

            using (var poller = new PollerAdapter())
            {
                ISocket  router     = poller.AddSocket(SocketType.Router, $"tcp://127.0.0.1:{port1}", true, "TestServer", Guid.NewGuid().ToString());
                ISocket  client     = poller.AddSocket(SocketType.Dealer, $"tcp://127.0.0.1:{port1}", false, "TestClient", Guid.NewGuid().ToString());
                byte[][] clientData = { Encoding.UTF8.GetBytes("Hello") };
                string   replay     = "";
                router.Received += (s, e) =>
                {
                    byte[]        identity    = e.Item[0];
                    List <string> receiveData = RouterReceive(e.Item);
                    replay = "";
                    for (int i = 0; i < receiveData.Count; i++)
                    {
                        Assert.AreEqual(Encoding.UTF8.GetString(clientData[i]), receiveData[i]);
                        replay += receiveData[i];
                    }
                    byte[][] routerData = { e.Item[0], Encoding.UTF8.GetBytes("Receive->"), Encoding.UTF8.GetBytes(replay) };
                    router.SendData(routerData);
                };
                List <string> result = new List <string>();
                client.Received += (s, e) =>
                {
                    result = ClientReceive(e.Item);
                    eventRaised.Set();
                };
                poller.Start();

                client.SendData(clientData);

                Assert.AreEqual("TestClient", client.ZMQName);
                Assert.IsTrue(eventRaised.WaitOne(3000), "No Receive any event");
                Assert.AreEqual("Receive->", result[0]);
                Assert.AreEqual(replay, result[1]);
                poller.StopAll();
            }
        }
Example #4
0
        public void TestRouterDealerTimer()
        {
            int            port1       = 55677;
            int            count       = 0;
            AutoResetEvent eventRaised = new AutoResetEvent(false);

            using (var poller = new PollerAdapter())
            {
                ISocket router    = poller.AddSocket(SocketType.Router, $"tcp://127.0.0.1:{port1}", true, "TestServer", Guid.NewGuid().ToString());
                ISocket client    = poller.AddSocket(SocketType.Dealer, $"tcp://127.0.0.1:{port1}", false, "TestClient", Guid.NewGuid().ToString());
                ITimer  heartBeat = poller.AddTimer(2, client);
                poller.Start();
                byte[][] heartBeatData = { Encoding.UTF8.GetBytes("ClientSend"), Encoding.UTF8.GetBytes("Alive") };
                heartBeat.SetTimerElapsed(heartBeatData);
                router.Received += (s, e) =>
                {
                    byte[]        identity    = e.Item[0];
                    List <string> receiveData = RouterReceive(e.Item);
                    Assert.AreEqual("ClientSend", receiveData[0]);
                    Assert.AreEqual("Alive", receiveData[1]);
                    count += 1;
                    byte[][] router1Data = { e.Item[0], Encoding.UTF8.GetBytes("Receive HeartBeat"), Encoding.UTF8.GetBytes($"{count}") };
                    router.SendData(router1Data);
                };
                List <string> result = new List <string>();
                client.Received += (s, e) =>
                {
                    result = ClientReceive(e.Item);
                    if (count == 2)
                    {
                        eventRaised.Set();
                    }
                };
                Assert.IsTrue(eventRaised.WaitOne(5000), "No Receive any event");
                Assert.IsTrue(result[0].Contains("HeartBeat"), "No Receive any HeartBeat");
                Assert.AreEqual(count.ToString(), result[1]);
                poller.StopAll();
            }
        }
Example #5
0
        public void TestReqRep()
        {
            int            port1       = 55677;
            AutoResetEvent eventRaised = new AutoResetEvent(false);

            using (var poller = new PollerAdapter())
            {
                ISocket  rep      = poller.AddSocket(SocketType.Response, $"tcp://127.0.0.1:{port1}", true, "TestServer");
                ISocket  req      = poller.AddSocket(SocketType.Request, $"tcp://127.0.0.1:{port1}", false, "TestClient");
                byte[][] Response = { Encoding.UTF8.GetBytes("Topic A"), Encoding.UTF8.GetBytes("Message Conetxt") };
                byte[][] Request  = { Encoding.UTF8.GetBytes("Topic A"), Encoding.UTF8.GetBytes("Message Request") };
                req.Received += (s, e) =>
                {
                    List <string> receiveData = ReqReceive(e.Item);
                    for (int i = 0; i < receiveData.Count; i++)
                    {
                        Assert.AreEqual(Encoding.UTF8.GetString(Response[i]), receiveData[i]);
                    }
                    eventRaised.Set();
                };
                rep.Received += (s, e) =>
                {
                    List <string> receiveData = ReqReceive(e.Item);
                    for (int i = 0; i < receiveData.Count; i++)
                    {
                        Assert.AreEqual(Encoding.UTF8.GetString(Request[i]), receiveData[i]);
                    }
                    rep.SendData(Response);
                };
                poller.Start();

                Thread.Sleep(1000);
                req.SendData(Request);
                Assert.IsTrue(eventRaised.WaitOne(2000), "No Receive any event");
                poller.StopAll();
            }
        }