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(); } }
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(); } }
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(); } }
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(); } }
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(); } }