public async Task MethodCall_ReqRsp_WithStatefulLayers() { var layerProvider = new TestLayerProvider_StatefulAppend("Layer"); var layerStackProvider = new LayerStackProvider <Dummy>(layerProvider); transportBuilder.SetLayerStackProvider(layerStackProvider); await DefaultSetup(new CalculatorService(), 1); layerProvider.Layers.Clear(); var calculatorProxy = new CalculatorProxy <SimpleInMemConnection>(connections[0]); var request = new Message <PairedInput>(new PairedInput { First = 1, Second = 2 }); IMessage <Output> response = await calculatorProxy.AddAsync(request, CancellationToken.None); Assert.IsFalse(response.IsError); Assert.AreEqual(2, layerProvider.Layers.Count); Assert.AreEqual("Layer0SendLayer0Receive", layerProvider.Layers[0].State); Assert.AreEqual("Layer1ReceiveLayer1Send", layerProvider.Layers[1].State); request = new Message <PairedInput>(new PairedInput { First = 1, Second = 2 }); response = await calculatorProxy.AddAsync(request, CancellationToken.None); Assert.IsFalse(response.IsError); Assert.AreEqual(4, layerProvider.Layers.Count); Assert.AreEqual("Layer2SendLayer2Receive", layerProvider.Layers[2].State); Assert.AreEqual("Layer3ReceiveLayer3Send", layerProvider.Layers[3].State); }
public async Task MethodCall_Event_With_StatefulLayers() { var layerProvider = new TestLayerProvider_StatefulAppend("Layer"); var layerStackProvider = new LayerStackProvider <Dummy>(layerProvider); transportBuilder.SetLayerStackProvider(layerStackProvider); var testService = new DummyTestService(); await DefaultSetup(testService, 1); var proxy = new DummyTestProxy <SimpleInMemConnection>(connections[0]); var theEvent = new Dummy { int_value = 100 }; layerProvider.Layers.Clear(); ManualResetEventSlim waitForEvent = testService.CreateResetEvent(); proxy.EventMethodAsync(theEvent); bool wasSignaled = waitForEvent.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(wasSignaled, "Timed out waiting for event to fire"); testService.ClearResetEvent(); Assert.AreEqual(1, testService.EventCount); Assert.AreEqual(theEvent.int_value, testService.LastEventReceived.int_value); Assert.AreEqual(2, layerProvider.Layers.Count); Assert.AreEqual("Layer0Send", layerProvider.Layers[0].State); Assert.AreEqual("Layer1Receive", layerProvider.Layers[1].State); }
public async Task GeneratedService_GeneratedProxy_PayloadResponse_StatefulLayers() { var clientLayerProvider = new TestLayerProvider_StatefulAppend("Client"); var clientLayerStackProvider = new LayerStackProvider <Dummy>(clientLayerProvider); var serverLayerProvider = new TestLayerProvider_StatefulAppend("Server"); var serverLayerStackProvider = new LayerStackProvider <Dummy>(serverLayerProvider); TestClientServer <DummyTestService> testClientServer = await SetupTestClientServer <DummyTestService>(serverLayerStackProvider, clientLayerStackProvider); var proxy = new DummyTestProxy <EpoxyConnection>(testClientServer.ClientConnection); clientLayerProvider.Layers.Clear(); serverLayerProvider.Layers.Clear(); await AssertRequestResponseWorksAsync(proxy); Assert.AreEqual(1, clientLayerProvider.Layers.Count); Assert.AreEqual(1, serverLayerProvider.Layers.Count); Assert.AreEqual("Client0SendClient0Receive", clientLayerProvider.Layers[0].State); Assert.AreEqual("Server0ReceiveServer0Send", serverLayerProvider.Layers[0].State); await AssertRequestResponseWorksAsync(proxy); Assert.AreEqual(2, clientLayerProvider.Layers.Count); Assert.AreEqual(2, serverLayerProvider.Layers.Count); Assert.AreEqual("Client1SendClient1Receive", clientLayerProvider.Layers[1].State); Assert.AreEqual("Server1ReceiveServer1Send", serverLayerProvider.Layers[1].State); }
public async Task GeneratedService_GeneratedProxy_Event_StatefulLayers() { var clientLayerProvider = new TestLayerProvider_StatefulAppend("Client"); var clientLayerStackProvider = new LayerStackProvider <Dummy>(LoggerTests.BlackHole, clientLayerProvider); var serverLayerProvider = new TestLayerProvider_StatefulAppend("Server"); var serverLayerStackProvider = new LayerStackProvider <Dummy>(LoggerTests.BlackHole, serverLayerProvider); TestClientServer <DummyTestService> testClientServer = await SetupTestClientServer <DummyTestService>(serverLayerStackProvider, clientLayerStackProvider); var proxy = new DummyTestProxy <EpoxyConnection>(testClientServer.ClientConnection); var theEvent = new Dummy { int_value = 100 }; clientLayerProvider.Layers.Clear(); serverLayerProvider.Layers.Clear(); ManualResetEventSlim waitForEvent = testClientServer.Service.CreateResetEvent(); proxy.EventMethodAsync(theEvent); bool wasSignaled = waitForEvent.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(wasSignaled, "Timed out waiting for event to fire"); Assert.AreEqual(1, testClientServer.Service.EventCount); Assert.AreEqual(theEvent.int_value, testClientServer.Service.LastEventReceived.int_value); Assert.AreEqual(1, clientLayerProvider.Layers.Count); Assert.AreEqual(1, serverLayerProvider.Layers.Count); Assert.AreEqual("Client0Send", clientLayerProvider.Layers[0].State); Assert.AreEqual("Server0Receive", serverLayerProvider.Layers[0].State); theEvent.int_value = 101; waitForEvent = testClientServer.Service.CreateResetEvent(); proxy.EventMethodAsync(theEvent); wasSignaled = waitForEvent.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(wasSignaled, "Timed out waiting for event to fire"); Assert.AreEqual(2, testClientServer.Service.EventCount); Assert.AreEqual(theEvent.int_value, testClientServer.Service.LastEventReceived.int_value); Assert.AreEqual(2, clientLayerProvider.Layers.Count); Assert.AreEqual(2, serverLayerProvider.Layers.Count); Assert.AreEqual("Client1Send", clientLayerProvider.Layers[1].State); Assert.AreEqual("Server1Receive", serverLayerProvider.Layers[1].State); await testClientServer.ServiceTransport.StopAsync(); await testClientServer.ClientTransport.StopAsync(); }
public async Task GeneratedService_GeneratedProxy_PayloadResponse_StatefulLayers() { var clientLayerProvider = new TestLayerProvider_StatefulAppend("Client"); var clientLayerStackProvider = new LayerStackProvider <Dummy>(LoggerTests.BlackHole, clientLayerProvider); var serverLayerProvider = new TestLayerProvider_StatefulAppend("Server"); var serverLayerStackProvider = new LayerStackProvider <Dummy>(LoggerTests.BlackHole, serverLayerProvider); TestClientServer <DummyTestService> testClientServer = await SetupTestClientServer <DummyTestService>(serverLayerStackProvider, clientLayerStackProvider); var proxy = new DummyTestProxy <EpoxyConnection>(testClientServer.ClientConnection); var request = new Dummy { int_value = 100 }; clientLayerProvider.Layers.Clear(); serverLayerProvider.Layers.Clear(); IMessage <Dummy> response = await proxy.ReqRspMethodAsync(request); Assert.IsFalse(response.IsError); Assert.AreEqual(101, response.Payload.Deserialize().int_value); Assert.AreEqual(1, clientLayerProvider.Layers.Count); Assert.AreEqual(1, serverLayerProvider.Layers.Count); Assert.AreEqual("Client0SendClient0Receive", clientLayerProvider.Layers[0].State); Assert.AreEqual("Server0ReceiveServer0Send", serverLayerProvider.Layers[0].State); request.int_value = 101; response = await proxy.ReqRspMethodAsync(request); Assert.IsFalse(response.IsError); Assert.AreEqual(102, response.Payload.Deserialize().int_value); Assert.AreEqual(2, clientLayerProvider.Layers.Count); Assert.AreEqual(2, serverLayerProvider.Layers.Count); Assert.AreEqual("Client1SendClient1Receive", clientLayerProvider.Layers[1].State); Assert.AreEqual("Server1ReceiveServer1Send", serverLayerProvider.Layers[1].State); await testClientServer.ServiceTransport.StopAsync(); await testClientServer.ClientTransport.StopAsync(); }
public async Task MethodCall_Event_With_StatefulLayers() { var layerProvider = new TestLayerProvider_StatefulAppend("Layer"); var layerStackProvider = new LayerStackProvider<Dummy>(LoggerTests.BlackHole, layerProvider); transportBuilder.SetLayerStackProvider(layerStackProvider); var testService = new DummyTestService(); await DefaultSetup(testService, 1); var proxy = new DummyTestProxy<SimpleInMemConnection>(connections[0]); var theEvent = new Dummy { int_value = 100 }; layerProvider.Layers.Clear(); ManualResetEventSlim waitForEvent = testService.CreateResetEvent(); proxy.EventMethodAsync(theEvent); bool wasSignaled = waitForEvent.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(wasSignaled, "Timed out waiting for event to fire"); testService.ClearResetEvent(); Assert.AreEqual(1, testService.EventCount); Assert.AreEqual(theEvent.int_value, testService.LastEventReceived.int_value); Assert.AreEqual(2, layerProvider.Layers.Count); Assert.AreEqual("Layer0Send", layerProvider.Layers[0].State); Assert.AreEqual("Layer1Receive", layerProvider.Layers[1].State); }
public async Task MethodCall_ReqRsp_WithStatefulLayers() { var layerProvider = new TestLayerProvider_StatefulAppend("Layer"); var layerStackProvider = new LayerStackProvider<Dummy>(LoggerTests.BlackHole, layerProvider); transportBuilder.SetLayerStackProvider(layerStackProvider); await DefaultSetup(new CalculatorService(), 1); layerProvider.Layers.Clear(); var calculatorProxy = new CalculatorProxy<SimpleInMemConnection>(connections[0]); var request = new Message<PairedInput>(new PairedInput { First = 1, Second = 2 }); IMessage<Output> response = await calculatorProxy.AddAsync(request, CancellationToken.None); Assert.IsFalse(response.IsError); Assert.AreEqual(2, layerProvider.Layers.Count); Assert.AreEqual("Layer0SendLayer0Receive", layerProvider.Layers[0].State); Assert.AreEqual("Layer1ReceiveLayer1Send", layerProvider.Layers[1].State); request = new Message<PairedInput>(new PairedInput { First = 1, Second = 2 }); response = await calculatorProxy.AddAsync(request, CancellationToken.None); Assert.IsFalse(response.IsError); Assert.AreEqual(4, layerProvider.Layers.Count); Assert.AreEqual("Layer2SendLayer2Receive", layerProvider.Layers[2].State); Assert.AreEqual("Layer3ReceiveLayer3Send", layerProvider.Layers[3].State); }
public async Task GeneratedService_GeneratedProxy_Event_StatefulLayers() { var clientLayerProvider = new TestLayerProvider_StatefulAppend("Client"); var clientLayerStackProvider = new LayerStackProvider<Dummy>(LoggerTests.BlackHole, clientLayerProvider); var serverLayerProvider = new TestLayerProvider_StatefulAppend("Server"); var serverLayerStackProvider = new LayerStackProvider<Dummy>(LoggerTests.BlackHole, serverLayerProvider); TestClientServer<DummyTestService> testClientServer = await SetupTestClientServer<DummyTestService>(serverLayerStackProvider, clientLayerStackProvider); var proxy = new DummyTestProxy<EpoxyConnection>(testClientServer.ClientConnection); var theEvent = new Dummy { int_value = 100 }; clientLayerProvider.Layers.Clear(); serverLayerProvider.Layers.Clear(); ManualResetEventSlim waitForEvent = testClientServer.Service.CreateResetEvent(); proxy.EventMethodAsync(theEvent); bool wasSignaled = waitForEvent.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(wasSignaled, "Timed out waiting for event to fire"); Assert.AreEqual(1, testClientServer.Service.EventCount); Assert.AreEqual(theEvent.int_value, testClientServer.Service.LastEventReceived.int_value); Assert.AreEqual(1, clientLayerProvider.Layers.Count); Assert.AreEqual(1, serverLayerProvider.Layers.Count); Assert.AreEqual("Client0Send", clientLayerProvider.Layers[0].State); Assert.AreEqual("Server0Receive", serverLayerProvider.Layers[0].State); theEvent.int_value = 101; waitForEvent = testClientServer.Service.CreateResetEvent(); proxy.EventMethodAsync(theEvent); wasSignaled = waitForEvent.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(wasSignaled, "Timed out waiting for event to fire"); Assert.AreEqual(2, testClientServer.Service.EventCount); Assert.AreEqual(theEvent.int_value, testClientServer.Service.LastEventReceived.int_value); Assert.AreEqual(2, clientLayerProvider.Layers.Count); Assert.AreEqual(2, serverLayerProvider.Layers.Count); Assert.AreEqual("Client1Send", clientLayerProvider.Layers[1].State); Assert.AreEqual("Server1Receive", serverLayerProvider.Layers[1].State); await testClientServer.ServiceTransport.StopAsync(); await testClientServer.ClientTransport.StopAsync(); }
public async Task GeneratedService_GeneratedProxy_PayloadResponse_StatefulLayers() { var clientLayerProvider = new TestLayerProvider_StatefulAppend("Client"); var clientLayerStackProvider = new LayerStackProvider<Dummy>(LoggerTests.BlackHole, clientLayerProvider); var serverLayerProvider = new TestLayerProvider_StatefulAppend("Server"); var serverLayerStackProvider = new LayerStackProvider<Dummy>(LoggerTests.BlackHole, serverLayerProvider); TestClientServer<DummyTestService> testClientServer = await SetupTestClientServer<DummyTestService>(serverLayerStackProvider, clientLayerStackProvider); var proxy = new DummyTestProxy<EpoxyConnection>(testClientServer.ClientConnection); clientLayerProvider.Layers.Clear(); serverLayerProvider.Layers.Clear(); await AssertRequestResponseWorksAsync(proxy); Assert.AreEqual(1, clientLayerProvider.Layers.Count); Assert.AreEqual(1, serverLayerProvider.Layers.Count); Assert.AreEqual("Client0SendClient0Receive", clientLayerProvider.Layers[0].State); Assert.AreEqual("Server0ReceiveServer0Send", serverLayerProvider.Layers[0].State); await AssertRequestResponseWorksAsync(proxy); Assert.AreEqual(2, clientLayerProvider.Layers.Count); Assert.AreEqual(2, serverLayerProvider.Layers.Count); Assert.AreEqual("Client1SendClient1Receive", clientLayerProvider.Layers[1].State); Assert.AreEqual("Server1ReceiveServer1Send", serverLayerProvider.Layers[1].State); await testClientServer.ServiceTransport.StopAsync(); await testClientServer.ClientTransport.StopAsync(); }