public void Send_Standard_Message() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); bool received = false; t2.MessageReceived += (s, e) => { Assert.IsTrue(t1.TotalPendingOutgoingMessages == 0); CalculateRequest receivedRequest = e.Message.Object as CalculateRequest; Assert.IsTrue(receivedRequest.A == 10 && receivedRequest.B == 15); received = true; }; t1.Send(new CalculateRequest() { A = 10, B = 15 }); Thread.Sleep(500); Assert.IsTrue(received); t1.Dispose(true); t2.Dispose(true); }
public void Message_Handler_ACK() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); bool received = false; t2.RegisterMessageHandler <CalculateRequest>((t, message) => { received = true; }); t1.Send(new CalculateRequest() { A = 10, B = 15 }, new ResonanceMessageConfig() { RequireACK = true }); Thread.Sleep(500); Assert.IsTrue(received); t1.Dispose(true); t2.Dispose(true); }
public void Send_Standard_Message_With_Error_ACK_And_No_Reporting_Does_Not_Throws_Exception() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); bool received = false; t2.MessageReceived += (s, e) => { CalculateRequest receivedRequest = e.Message.Object as CalculateRequest; Assert.IsTrue(receivedRequest.A == 10 && receivedRequest.B == 15); received = true; throw new Exception("Test Error"); }; t1.Send(new CalculateRequest() { A = 10, B = 15 }, new ResonanceMessageConfig() { RequireACK = true }); Thread.Sleep(200); Assert.IsTrue(received); Assert.IsTrue(t1.TotalPendingOutgoingMessages == 0); t1.Dispose(true); t2.Dispose(true); }
public void Send_Object_Without_Expecting_Response() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); t2.RequestReceived += (s, e) => { CalculateRequest receivedRequest = e.Message.Object as CalculateRequest; Assert.IsTrue(receivedRequest.A == 10); }; var request = new CalculateRequest() { A = 10 }; for (int i = 0; i < 1000; i++) { t1.Send(new CalculateRequest() { A = 10 }); } Assert.IsTrue(t1.TotalPendingOutgoingMessages == 0); t1.Dispose(true); t2.Dispose(true); }
public void Message_Handler_Async_With_Transporter() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); Handlers handlers = new Handlers(); IDisposable handler = t2.CreateHandlerBuilder() .ForMessage <CalculateRequest>() .IncludeTransporter() .IsAsync() .Build(handlers.HandleMessageAsyncWithTransporter); var request = new CalculateRequest() { A = 10, B = 15 }; t1.Send(request); TestHelper.WaitWhile(() => _receivedRequest == null, TimeSpan.FromSeconds(5)); Assert.AreEqual(_receivedRequest.A + _receivedRequest.B, request.A + request.B); Assert.AreEqual(_receivedTransporter, t2); _receivedRequest = null; handler.Dispose(); t1.Send(request); Thread.Sleep(500); Assert.IsNull(_receivedRequest); t1.Dispose(true); t2.Dispose(true); }
public void Send_Standard_Message_ACK_Yes_x1000() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); ConcurrentList <int> indeces = new ConcurrentList <int>(); int count = 1; Exception exception = null; t2.MessageReceived += (s, e) => { try { CalculateRequest receivedRequest = e.Message.Object as CalculateRequest; Assert.IsTrue(receivedRequest.A == 10 && receivedRequest.B == 15); indeces.Add(count++); } catch (Exception ex) { exception = ex; } }; for (int i = 0; i < 1000; i++) { t1.Send(new CalculateRequest() { A = 10, B = 15 }, new ResonanceMessageConfig() { RequireACK = true }); } while (count < 1000 && exception == null) { Thread.Sleep(10); } if (exception != null) { Logger.LogError(exception, exception.Message); } t1.Dispose(true); t2.Dispose(true); }
public void Message_Handler_ACK_Throws_Exception() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t2.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors; t1.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors; t1.Connect(); t2.Connect(); bool received = false; t2.RegisterMessageHandler <CalculateRequest>((t, message) => { received = true; throw new Exception("Test Error"); }); Assert.ThrowsException <ResonanceResponseException>(() => { t1.Send(new CalculateRequest() { A = 10, B = 15 }, new ResonanceMessageConfig() { RequireACK = true }); }); Thread.Sleep(500); Assert.IsTrue(received); t1.Dispose(true); t2.Dispose(true); }
public void Send_Standard_Message_With_ACK() { ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors; t2.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors; t1.Connect(); t2.Connect(); bool received = false; t2.MessageReceived += (s, e) => { Assert.IsTrue(t1.TotalPendingOutgoingMessages == 1); CalculateRequest receivedRequest = e.Message.Object as CalculateRequest; Assert.IsTrue(receivedRequest.A == 10 && receivedRequest.B == 15); received = true; }; t1.Send(new CalculateRequest() { A = 10, B = 15 }, new ResonanceMessageConfig() { RequireACK = true }); Thread.Sleep(200); Assert.IsTrue(received); Assert.IsTrue(t1.TotalPendingOutgoingMessages == 0); t1.Dispose(true); t2.Dispose(true); }