public void Service_Handles_Message_Method_Primitive_Int32() { Reset(); 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(); var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); int s = proxy.GetInt32Value(10); Assert.AreEqual(s, 10); t2.UnregisterService <ITestService>(); Assert.ThrowsException <ResonanceResponseException>(() => { proxy.GetStringValue("Test"); }); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_String_Property_Get_Set() { Reset(); 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(); var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); proxy.StringProperty = "Test"; String value = proxy.StringProperty; Assert.AreEqual(value, "Test"); t2.UnregisterService <ITestService>(); Assert.ThrowsException <ResonanceResponseException>(() => { proxy.StringProperty = "Test"; }); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Request_Method_Throws_Exception() { Reset(); ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); var request = new CalculateRequest() { A = 10, B = 5 }; Assert.ThrowsException <ResonanceResponseException>(() => { proxy.CalculateThrows(request); }, "Test Error"); t2.UnregisterService <ITestService>(); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Request_Async_Method() { Reset(); ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); var request = new CalculateRequest() { A = 10, B = 5 }; var response = proxy.CalculateAsync(request).GetAwaiter().GetResult(); Assert.AreEqual(response.Sum, request.A + request.B); t2.UnregisterService <ITestService>(); Assert.ThrowsException <ResonanceResponseException>(() => { proxy.CalculateAsync(request).GetAwaiter().GetResult(); }); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Event_Late_Bound() { Reset(); ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors; t2.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors; var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); List <double> sums = new List <double>(); proxy.CalculateResponseEvent += (x, response) => { sums.Add(response.Sum); }; //Connect after event registration... t2.Connect(); //Connect the event receiver first because event registration happens right after connection... t1.Connect(); Thread.Sleep(1000); testService.RaiseCalculateResponseEvent(new CalculateResponse() { Sum = 1 }); testService.RaiseCalculateResponseEvent(new CalculateResponse() { Sum = 2 }); testService.RaiseCalculateResponseEvent(new CalculateResponse() { Sum = 3 }); TestHelper.WaitWhile(() => sums.Count < 3, TimeSpan.FromSeconds(5)); Assert.AreEqual(sums[0], 1); Assert.AreEqual(sums[1], 2); Assert.AreEqual(sums[2], 3); t2.UnregisterService <ITestService>(); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Event_With_EventArgs() { Reset(); 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(); var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); List <double> sums = new List <double>(); proxy.CalculateResponseEventWithArgs += (x, e) => { sums.Add(e.Response.Sum); }; Thread.Sleep(1000); testService.RaiseCalculateResponseEventWithArgs(new CalculateResponse() { Sum = 1 }); testService.RaiseCalculateResponseEventWithArgs(new CalculateResponse() { Sum = 2 }); testService.RaiseCalculateResponseEventWithArgs(new CalculateResponse() { Sum = 3 }); TestHelper.WaitWhile(() => sums.Count < 3, TimeSpan.FromSeconds(5)); Assert.AreEqual(sums[0], 1); Assert.AreEqual(sums[1], 2); Assert.AreEqual(sums[2], 3); t2.UnregisterService <ITestService>(); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Message_Async_Method() { Reset(); 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(); var testService = new TestService(); t2.RegisterService <ITestService, TestService>(testService); var proxy = t1.CreateClientProxy <ITestService>(); var request = new CalculateRequest() { A = 10, B = 5 }; proxy.CalculateVoidAsync(request).GetAwaiter().GetResult(); Assert.AreEqual(receivedRequest.A + receivedRequest.B, request.A + request.B); t2.UnregisterService <ITestService>(); Assert.ThrowsException <ResonanceResponseException>(() => { proxy.CalculateVoidAsync(request).GetAwaiter().GetResult(); }); t1.Dispose(true); t2.Dispose(true); }