public async Task ClientServiceStressTest1() { onConnectionEstablished = new TaskCompletionSource <bool>(); const int timeoutMs = 20000; var ct = new CancellationTokenSource(timeoutMs); ct.Token.Register(() => onConnectionEstablished.TrySetCanceled(), useSynchronizationContext: false); int port = 33254; var log = new UnitTestLogger(xUnitLog); TcpCommunicationController tcpClient; TcpCommunicationController tcpBackendService; StressTestService localService; { // init service var compositionHostService = new TalkCompositionHost(); //compositionHostService.AddAssembly(typeof(IStressTestService).Assembly); compositionHostService.AddAssembly(typeof(StressTestService).Assembly); compositionHostService.RegisterLocalSharedService <ILogger>(log); compositionHostService.RegisterLocalSharedService <IStressTestService>(); tcpBackendService = new TcpCommunicationController(log); compositionHostService.InitGenericCommunication(tcpBackendService); tcpBackendService.InitService(port); localService = (StressTestService)compositionHostService.GetExport <IStressTestService>(); } { // init client var compositionHostClient = new TalkCompositionHost(); //compositionHostClient.AddAssembly(typeof(IStressTestService).Assembly); compositionHostClient.RegisterLocalSharedService <ILogger>(log); compositionHostClient.RegisterRemoteService <IStressTestService>(); compositionHostClient.RegisterAsyncVoidMethod <IStressTestService>(nameof(IStressTestService.AsyncCallTest)); tcpClient = new TcpCommunicationController(log); compositionHostClient.SessionCreated += OnCompositionHostClient_SessionCreated; compositionHostClient.InitGenericCommunication(tcpClient); tcpClient.InitClient(IPAddress.Loopback.ToString(), port); } Assert.True(await onConnectionEstablished.Task); int number = 0; for (; number < 10000; number++) { currentStressTestServiceClientProxyInstance.AsyncCallTest(number); } for (; number < 20000; number++) { var result = currentStressTestServiceClientProxyInstance.SyncCallTest(number); Assert.Equal(number, result); } Assert.Equal(number, localService.CurrentNumber); string longTestData = "TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST"; for (; number < 25000; number++) { var data = new DataTransferTest { ID = number, Name = longTestData }; var result = currentStressTestServiceClientProxyInstance.ComplexCall(number, data); Assert.Equal(number, result); } Assert.Equal(number, localService.CurrentNumber); tcpClient.Shutdown(); tcpBackendService.Shutdown(); }
public async Task TestMethodBuildDataTransferInterfaceAsyncImplementation() { onConnectionEstablished = new TaskCompletionSource <bool>(); const int timeoutMs = 20000; var ct = new CancellationTokenSource(timeoutMs); ct.Token.Register(() => onConnectionEstablished.TrySetCanceled(), useSynchronizationContext: false); int port = 33255; var log = new UnitTestLogger(xUnitLog); TcpCommunicationController tcpClient; TcpCommunicationController tcpBackendService; MyRemoteAsyncTestService localService; { // init service var compositionHostService = new TalkCompositionHost(); compositionHostService.AddAssembly(typeof(MyRemoteAsyncTestService).Assembly); compositionHostService.RegisterLocalSharedService <ILogger>(log); compositionHostService.RegisterLocalSharedService <IMyRemoteAsyncAwaitTestService>(); tcpBackendService = new TcpCommunicationController(log); tcpBackendService.LogDataStream = true; compositionHostService.InitGenericCommunication(tcpBackendService); tcpBackendService.InitService(port); localService = (MyRemoteAsyncTestService)compositionHostService.GetExport <IMyRemoteAsyncAwaitTestService>(); } { // init client var compositionHostClient = new TalkCompositionHost(); //compositionHostClient.AddAssembly(typeof(IStressTestService).Assembly); compositionHostClient.RegisterLocalSharedService <ILogger>(log); compositionHostClient.RegisterRemoteService <IMyRemoteAsyncAwaitTestService>(); tcpClient = new TcpCommunicationController(log); tcpClient.LogDataStream = true; tcpClient.RequestTimeoutSeconds = 15; compositionHostClient.SessionCreated += OnCompositionHostClient_SessionCreated; compositionHostClient.InitGenericCommunication(tcpClient); tcpClient.InitClient(IPAddress.Loopback.ToString(), port); } Assert.True(await onConnectionEstablished.Task); var dataResponse = await currentAsyncAwaitTestServiceClientProxyInstance.GetDataAsync(); Assert.Equal("Hello world", dataResponse); int expected = 23134; var response2 = await currentAsyncAwaitTestServiceClientProxyInstance.GetDataAsync2(expected); Assert.Equal(expected, response2); // without return value MyRemoteAsyncTestService.RunSomeWorkCounter = 0; await currentAsyncAwaitTestServiceClientProxyInstance.RunSomeWork(); Assert.Equal(1, MyRemoteAsyncTestService.RunSomeWorkCounter); tcpClient.Shutdown(); tcpBackendService.Shutdown(); }