Exemplo n.º 1
0
        public static void RunServerStreaming(TestService.ITestServiceClient client)
        {
            Task.Run(async() =>
            {
                Console.WriteLine("running server_streaming");

                var bodySizes = new List <int> {
                    31415, 9, 2653, 58979
                };

                var request = StreamingOutputCallRequest.CreateBuilder()
                              .SetResponseType(PayloadType.COMPRESSABLE)
                              .AddRangeResponseParameters(bodySizes.ConvertAll(
                                                              (size) => ResponseParameters.CreateBuilder().SetSize(size).Build()))
                              .Build();

                using (var call = client.StreamingOutputCall(request))
                {
                    var responseList = await call.ResponseStream.ToList();
                    foreach (var res in responseList)
                    {
                        Assert.AreEqual(PayloadType.COMPRESSABLE, res.Payload.Type);
                    }
                    CollectionAssert.AreEqual(bodySizes, responseList.ConvertAll((item) => item.Payload.Body.Length));
                }
                Console.WriteLine("Passed!");
            }).Wait();
        }
Exemplo n.º 2
0
        public static void RunCancelAfterFirstResponse(TestService.ITestServiceClient client)
        {
            Task.Run(async() =>
            {
                Console.WriteLine("running cancel_after_first_response");

                var cts = new CancellationTokenSource();
                using (var call = client.FullDuplexCall(cancellationToken: cts.Token))
                {
                    await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
                                                        .SetResponseType(PayloadType.COMPRESSABLE)
                                                        .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
                                                        .SetPayload(CreateZerosPayload(27182)).Build());

                    Assert.IsTrue(await call.ResponseStream.MoveNext());
                    Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
                    Assert.AreEqual(31415, call.ResponseStream.Current.Payload.Body.Length);

                    cts.Cancel();

                    try
                    {
                        await call.ResponseStream.MoveNext();
                        Assert.Fail();
                    }
                    catch (RpcException e)
                    {
                        Assert.AreEqual(StatusCode.Cancelled, e.Status.StatusCode);
                    }
                }
                Console.WriteLine("Passed!");
            }).Wait();
        }
Exemplo n.º 3
0
        public static void RunServerStreaming(TestServiceGrpc.ITestServiceClient client)
        {
            Console.WriteLine("running server_streaming");

            var bodySizes = new List <int> {
                31415, 9, 2653, 58979
            };

            var request = StreamingOutputCallRequest.CreateBuilder()
                          .SetResponseType(PayloadType.COMPRESSABLE)
                          .AddRangeResponseParameters(bodySizes.ConvertAll(
                                                          (size) => ResponseParameters.CreateBuilder().SetSize(size).Build()))
                          .Build();

            var recorder = new RecordingObserver <StreamingOutputCallResponse>();

            client.StreamingOutputCall(request, recorder);

            var responseList = recorder.ToList().Result;

            foreach (var res in responseList)
            {
                Assert.AreEqual(PayloadType.COMPRESSABLE, res.Payload.Type);
            }
            CollectionAssert.AreEqual(bodySizes, responseList.ConvertAll((item) => item.Payload.Body.Length));
            Console.WriteLine("Passed!");
        }
Exemplo n.º 4
0
        public static void RunPingPong(TestService.ITestServiceClient client)
        {
            Task.Run(async() =>
            {
                Console.WriteLine("running ping_pong");

                var call = client.FullDuplexCall();

                StreamingOutputCallResponse response;

                await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
                                               .SetResponseType(PayloadType.COMPRESSABLE)
                                               .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
                                               .SetPayload(CreateZerosPayload(27182)).Build());

                response = await call.ResponseStream.ReadNext();
                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
                Assert.AreEqual(31415, response.Payload.Body.Length);

                await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
                                               .SetResponseType(PayloadType.COMPRESSABLE)
                                               .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(9))
                                               .SetPayload(CreateZerosPayload(8)).Build());

                response = await call.ResponseStream.ReadNext();
                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
                Assert.AreEqual(9, response.Payload.Body.Length);

                await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
                                               .SetResponseType(PayloadType.COMPRESSABLE)
                                               .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(2653))
                                               .SetPayload(CreateZerosPayload(1828)).Build());

                response = await call.ResponseStream.ReadNext();
                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
                Assert.AreEqual(2653, response.Payload.Body.Length);

                await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
                                               .SetResponseType(PayloadType.COMPRESSABLE)
                                               .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(58979))
                                               .SetPayload(CreateZerosPayload(45904)).Build());

                response = await call.ResponseStream.ReadNext();
                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
                Assert.AreEqual(58979, response.Payload.Body.Length);

                await call.RequestStream.Close();

                response = await call.ResponseStream.ReadNext();
                Assert.AreEqual(null, response);

                Console.WriteLine("Passed!");
            }).Wait();
        }
Exemplo n.º 5
0
        public static void RunPingPong(TestServiceGrpc.ITestServiceClient client)
        {
            Console.WriteLine("running ping_pong");

            var recorder = new RecordingQueue <StreamingOutputCallResponse>();
            var inputs   = client.FullDuplexCall(recorder);

            StreamingOutputCallResponse response;

            inputs.OnNext(StreamingOutputCallRequest.CreateBuilder()
                          .SetResponseType(PayloadType.COMPRESSABLE)
                          .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
                          .SetPayload(CreateZerosPayload(27182)).Build());

            response = recorder.Queue.Take();
            Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
            Assert.AreEqual(31415, response.Payload.Body.Length);

            inputs.OnNext(StreamingOutputCallRequest.CreateBuilder()
                          .SetResponseType(PayloadType.COMPRESSABLE)
                          .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(9))
                          .SetPayload(CreateZerosPayload(8)).Build());

            response = recorder.Queue.Take();
            Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
            Assert.AreEqual(9, response.Payload.Body.Length);

            inputs.OnNext(StreamingOutputCallRequest.CreateBuilder()
                          .SetResponseType(PayloadType.COMPRESSABLE)
                          .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(2653))
                          .SetPayload(CreateZerosPayload(1828)).Build());

            response = recorder.Queue.Take();
            Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
            Assert.AreEqual(2653, response.Payload.Body.Length);


            inputs.OnNext(StreamingOutputCallRequest.CreateBuilder()
                          .SetResponseType(PayloadType.COMPRESSABLE)
                          .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(58979))
                          .SetPayload(CreateZerosPayload(45904)).Build());

            response = recorder.Queue.Take();
            Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
            Assert.AreEqual(58979, response.Payload.Body.Length);

            inputs.OnCompleted();

            recorder.Finished.Wait();
            Assert.AreEqual(0, recorder.Queue.Count);

            Console.WriteLine("Passed!");
        }
Exemplo n.º 6
0
        public static async Task RunPingPongAsync(TestService.ITestServiceClient client)
        {
            Console.WriteLine("running ping_pong");

            using (var call = client.FullDuplexCall())
            {
                await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
                                                    .SetResponseType(PayloadType.COMPRESSABLE)
                                                    .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
                                                    .SetPayload(CreateZerosPayload(27182)).Build());

                Assert.IsTrue(await call.ResponseStream.MoveNext());
                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
                Assert.AreEqual(31415, call.ResponseStream.Current.Payload.Body.Length);

                await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
                                                    .SetResponseType(PayloadType.COMPRESSABLE)
                                                    .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(9))
                                                    .SetPayload(CreateZerosPayload(8)).Build());

                Assert.IsTrue(await call.ResponseStream.MoveNext());
                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
                Assert.AreEqual(9, call.ResponseStream.Current.Payload.Body.Length);

                await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
                                                    .SetResponseType(PayloadType.COMPRESSABLE)
                                                    .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(2653))
                                                    .SetPayload(CreateZerosPayload(1828)).Build());

                Assert.IsTrue(await call.ResponseStream.MoveNext());
                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
                Assert.AreEqual(2653, call.ResponseStream.Current.Payload.Body.Length);

                await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
                                                    .SetResponseType(PayloadType.COMPRESSABLE)
                                                    .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(58979))
                                                    .SetPayload(CreateZerosPayload(45904)).Build());

                Assert.IsTrue(await call.ResponseStream.MoveNext());
                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
                Assert.AreEqual(58979, call.ResponseStream.Current.Payload.Body.Length);

                await call.RequestStream.CompleteAsync();

                Assert.IsFalse(await call.ResponseStream.MoveNext());
            }
            Console.WriteLine("Passed!");
        }
Exemplo n.º 7
0
        public static async Task RunTimeoutOnSleepingServerAsync(TestService.ITestServiceClient client)
        {
            Console.WriteLine("running timeout_on_sleeping_server");

            var deadline = DateTime.UtcNow.AddMilliseconds(1);

            using (var call = client.FullDuplexCall(deadline: deadline))
            {
                try
                {
                    await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
                                                        .SetPayload(CreateZerosPayload(27182)).Build());
                }
                catch (InvalidOperationException)
                {
                    // Deadline was reached before write has started. Eat the exception and continue.
                }

                var ex = Assert.Throws <RpcException>(async() => await call.ResponseStream.MoveNext());
                Assert.AreEqual(StatusCode.DeadlineExceeded, ex.Status.StatusCode);
            }
            Console.WriteLine("Passed!");
        }