示例#1
0
        public async Task <TimeSpan> Test()
        {
            _stopWatch.Reset();
            switch (Type)
            {
            case (int)Utilities.GrpcTypes.BiDirectionalStream:
                _stopWatch.Start();
                using (var call = _client.GetCustomersWithBidirectionalStream())
                {
                    var result = new ConcurrentBag <GrpcRequest>();

                    var read = Task.Run(async() =>
                    {
                        while (await call.ResponseStream.MoveNext(CancellationToken.None))
                        {
                            result.Add(new GrpcRequest {
                                Value = call.ResponseStream.Current.Value
                            });
                        }
                    });

                    foreach (var grpcRequest in GrpcRequests.ToList())
                    {
                        await call.RequestStream.WriteAsync(grpcRequest);
                    }

                    await call.RequestStream.CompleteAsync();

                    await read;
                }

                _stopWatch.Stop();
                var elapsedTime = _stopWatch.Elapsed;
                _stopWatch.Reset();

                return(elapsedTime);

            case (int)Utilities.GrpcTypes.RequestResponse:
                _stopWatch.Start();
                foreach (var grpcRequest in GrpcRequests.ToList())
                {
                    await _client.GetCustomerAsync(grpcRequest);
                }

                _stopWatch.Stop();
                break;

            default:
                throw new ArgumentException("Type not supported");
            }

            return(_stopWatch.Elapsed);
        }
示例#2
0
        public override async Task <GrpcResponses> GetCustomers(GrpcRequests request, ServerCallContext context)
        {
            Console.WriteLine("GetCustomers Server Received ");

            var response = new GrpcResponses();

            foreach (var grpcRequest in request.Request)
            {
                response.Response.Add(new GrpcResponse
                {
                    Value = grpcRequest.Value
                });
            }

            return(await Task.FromResult(response));
        }
示例#3
0
            public async Task Should_return_correct_value()
            {
                var result = new GrpcRequests();

                ;
                var responses = await Client.GetCustomersAsync(_sampleRequest);

                foreach (var grpcResponse in responses.Response)
                {
                    result.Request.Add(new GrpcRequest
                    {
                        Value = grpcResponse.Value
                    });
                }

                _sampleRequest.Should().BeEquivalentTo(result);
            }