public void Service_Handles_Object_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>(); CalculateRequest request = new CalculateRequest() { A = 1, B = 2 }; Assert.IsTrue(proxy.CalculateRequestProperty == null); proxy.CalculateRequestProperty = request; var value = proxy.CalculateRequestProperty; Assert.AreEqual(value.A + value.B, request.A + request.B); 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_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_Int32_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.Int32Property = 100; int value = proxy.Int32Property; Assert.AreEqual(value, 100); 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_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_Request_Method_With_Rpc_Attribute_Timeout_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 <TimeoutException>(() => { var response = proxy.CalculateWithAttributeShortTimeout(request); }); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Multi_Parameter_Void_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>(); proxy.CalculateMultiParameterVoid(10, 5); Assert.AreEqual(receivedRequest.A, 10); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_Request_Method_With_Rpc_Attribute_Timeout() { 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.CalculateWithAttributeTimeout(request); //The timeout is 10 seconds while the service method delay is 6 and default timeout is 5 or 2. t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_DateTime_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>(); DateTime date = DateTime.Now; proxy.DateProperty = date; var value = proxy.DateProperty; Assert.AreEqual(value.ToString(), date.ToString()); t1.Dispose(true); t2.Dispose(true); }
public void Service_Handles_No_Input_Method_Async() { 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 }; String s = proxy.GetStringNoInputAsync().GetAwaiter().GetResult(); Assert.AreEqual(s, "Test"); t1.Dispose(true); t2.Dispose(true); }
public void Transient_Service_3() { Reset(); ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); bool funcExecuted = false; t2.RegisterService <ITestService, TestService>(RpcServiceCreationType.Transient, () => { funcExecuted = true; return(new TestService()); }); var proxy = t1.CreateClientProxy <ITestService>(); var request = new CalculateRequest() { A = 10, B = 5 }; var response = proxy.Calculate(request); response = proxy.Calculate(request); Assert.IsTrue(funcExecuted); Assert.IsTrue(TestService.InstanceCount == 2); t1.Dispose(true); t2.Dispose(true); }
public void Singleton_Service_2() { Reset(); ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST")); ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST")); t1.Connect(); t2.Connect(); t2.RegisterService <ITestService, TestService>(RpcServiceCreationType.Singleton); var proxy = t1.CreateClientProxy <ITestService>(); var request = new CalculateRequest() { A = 10, B = 5 }; var response = proxy.Calculate(request); response = proxy.Calculate(request); Assert.IsTrue(TestService.InstanceCount == 1); t1.Dispose(true); t2.Dispose(true); }
public void Singleton_Service_1() { 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.Calculate(request); Assert.AreEqual(response.Sum, request.A + request.B); 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); }