From 9f550a3e9901dbe855fe43e381db6bea23c18408 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 18 May 2015 16:00:36 -0700
Subject: [PATCH] changed tests and examples to use "using" for IDisposable
 calls

---
 .../MathClientServerTests.cs                  |  37 ++--
 src/csharp/Grpc.Examples/MathExamples.cs      |  33 ++--
 .../Grpc.IntegrationTesting/InteropClient.cs  | 163 +++++++++---------
 3 files changed, 128 insertions(+), 105 deletions(-)

diff --git a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
index 4997d3aa42..267852487c 100644
--- a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
+++ b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
@@ -114,11 +114,13 @@ namespace math.Tests
         {
             Task.Run(async () =>
             {
-                var call = client.Fib(new FibArgs.Builder { Limit = 6 }.Build());
+                using (var call = client.Fib(new FibArgs.Builder { Limit = 6 }.Build()))
+                {
+                    var responses = await call.ResponseStream.ToList();
+                    CollectionAssert.AreEqual(new List<long> { 1, 1, 2, 3, 5, 8 },
+                        responses.ConvertAll((n) => n.Num_));
 
-                var responses = await call.ResponseStream.ToList();
-                CollectionAssert.AreEqual(new List<long> { 1, 1, 2, 3, 5, 8 },
-                    responses.ConvertAll((n) => n.Num_));
+                }
             }).Wait();
         }
 
@@ -128,13 +130,15 @@ namespace math.Tests
         {
             Task.Run(async () =>
             {
-                var call = client.Sum();
-                var numbers = new List<long> { 10, 20, 30 }.ConvertAll(
-                         n => Num.CreateBuilder().SetNum_(n).Build());
+                using (var call = client.Sum())
+                {
+                    var numbers = new List<long> { 10, 20, 30 }.ConvertAll(
+                             n => Num.CreateBuilder().SetNum_(n).Build());
 
-                await call.RequestStream.WriteAll(numbers);
-                var result = await call.Result;
-                Assert.AreEqual(60, result.Num_);
+                    await call.RequestStream.WriteAll(numbers);
+                    var result = await call.Result;
+                    Assert.AreEqual(60, result.Num_);
+                }
             }).Wait();
         }
 
@@ -150,12 +154,15 @@ namespace math.Tests
                     new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build()
                 };
 
-                var call = client.DivMany();
-                await call.RequestStream.WriteAll(divArgsList);
-                var result = await call.ResponseStream.ToList();
 
-                CollectionAssert.AreEqual(new long[] { 3, 4, 3 }, result.ConvertAll((divReply) => divReply.Quotient));
-                CollectionAssert.AreEqual(new long[] { 1, 16, 1 }, result.ConvertAll((divReply) => divReply.Remainder));
+                using (var call = client.DivMany())
+                {
+                    await call.RequestStream.WriteAll(divArgsList);
+                    var result = await call.ResponseStream.ToList();
+
+                    CollectionAssert.AreEqual(new long[] { 3, 4, 3 }, result.ConvertAll((divReply) => divReply.Quotient));
+                    CollectionAssert.AreEqual(new long[] { 1, 16, 1 }, result.ConvertAll((divReply) => divReply.Remainder));
+                }
             }).Wait();
         }
     }
diff --git a/src/csharp/Grpc.Examples/MathExamples.cs b/src/csharp/Grpc.Examples/MathExamples.cs
index f028d582dc..d2cfbee18f 100644
--- a/src/csharp/Grpc.Examples/MathExamples.cs
+++ b/src/csharp/Grpc.Examples/MathExamples.cs
@@ -53,9 +53,11 @@ namespace math
 
         public static async Task FibExample(Math.IMathClient stub)
         {
-            var call = stub.Fib(new FibArgs.Builder { Limit = 5 }.Build());
-            List<Num> result = await call.ResponseStream.ToList();
-            Console.WriteLine("Fib Result: " + string.Join("|", result));
+            using (var call = stub.Fib(new FibArgs.Builder { Limit = 5 }.Build()))
+            {
+                List<Num> result = await call.ResponseStream.ToList();
+                Console.WriteLine("Fib Result: " + string.Join("|", result));
+            }
         }
 
         public static async Task SumExample(Math.IMathClient stub)
@@ -67,9 +69,11 @@ namespace math
                 new Num.Builder { Num_ = 3 }.Build()
             };
 
-            var call = stub.Sum();
-            await call.RequestStream.WriteAll(numbers);
-            Console.WriteLine("Sum Result: " + await call.Result);
+            using (var call = stub.Sum())
+            {
+                await call.RequestStream.WriteAll(numbers);
+                Console.WriteLine("Sum Result: " + await call.Result);
+            }
         }
 
         public static async Task DivManyExample(Math.IMathClient stub)
@@ -80,9 +84,11 @@ namespace math
                 new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(),
                 new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build()
             };
-            var call = stub.DivMany();
-            await call.RequestStream.WriteAll(divArgsList);
-            Console.WriteLine("DivMany Result: " + string.Join("|", await call.ResponseStream.ToList()));
+            using (var call = stub.DivMany())
+            { 
+                await call.RequestStream.WriteAll(divArgsList);
+                Console.WriteLine("DivMany Result: " + string.Join("|", await call.ResponseStream.ToList()));
+            }
         }
 
         public static async Task DependendRequestsExample(Math.IMathClient stub)
@@ -94,9 +100,12 @@ namespace math
                 new Num.Builder { Num_ = 3 }.Build()
             };
 
-            var sumCall = stub.Sum();
-            await sumCall.RequestStream.WriteAll(numbers);
-            Num sum = await sumCall.Result;
+            Num sum;
+            using (var sumCall = stub.Sum())
+            {
+                await sumCall.RequestStream.WriteAll(numbers);
+                sum = await sumCall.Result;
+            }
 
             DivReply result = await stub.DivAsync(new DivArgs.Builder { Dividend = sum.Num_, Divisor = numbers.Count }.Build());
             Console.WriteLine("Avg Result: " + result);
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index 024183c63a..dfaf18cae1 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -213,11 +213,13 @@ namespace Grpc.IntegrationTesting
 
                 var bodySizes = new List<int> { 27182, 8, 1828, 45904 }.ConvertAll((size) => StreamingInputCallRequest.CreateBuilder().SetPayload(CreateZerosPayload(size)).Build());
 
-                var call = client.StreamingInputCall();
-                await call.RequestStream.WriteAll(bodySizes);
+                using (var call = client.StreamingInputCall())
+                {
+                    await call.RequestStream.WriteAll(bodySizes);
 
-                var response = await call.Result;
-                Assert.AreEqual(74922, response.AggregatedPayloadSize);
+                    var response = await call.Result;
+                    Assert.AreEqual(74922, response.AggregatedPayloadSize);
+                }
                 Console.WriteLine("Passed!");
             }).Wait();
         }
@@ -236,14 +238,15 @@ namespace Grpc.IntegrationTesting
                     (size) => ResponseParameters.CreateBuilder().SetSize(size).Build()))
                 .Build();
 
-                var call = client.StreamingOutputCall(request);
-
-                var responseList = await call.ResponseStream.ToList();
-                foreach (var res in responseList)
+                using (var call = client.StreamingOutputCall(request))
                 {
-                    Assert.AreEqual(PayloadType.COMPRESSABLE, res.Payload.Type);
+                    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));
                 }
-                CollectionAssert.AreEqual(bodySizes, responseList.ConvertAll((item) => item.Payload.Body.Length));
                 Console.WriteLine("Passed!");
             }).Wait();
         }
@@ -254,48 +257,48 @@ namespace Grpc.IntegrationTesting
             {
                 Console.WriteLine("running ping_pong");
 
-                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);
+                using (var call = client.FullDuplexCall())
+                {
+                    await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
+                    .SetResponseType(PayloadType.COMPRESSABLE)
+                    .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
+                    .SetPayload(CreateZerosPayload(27182)).Build());
 
-                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(31415, call.ResponseStream.Current.Payload.Body.Length);
 
-                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(9))
+                              .SetPayload(CreateZerosPayload(8)).Build());
 
-                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(9, call.ResponseStream.Current.Payload.Body.Length);
 
-                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(2653))
+                              .SetPayload(CreateZerosPayload(1828)).Build());
 
-                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(2653, call.ResponseStream.Current.Payload.Body.Length);
 
-                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.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
+                              .SetResponseType(PayloadType.COMPRESSABLE)
+                              .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(58979))
+                              .SetPayload(CreateZerosPayload(45904)).Build());
 
-                await call.RequestStream.CompleteAsync();
+                    Assert.IsTrue(await call.ResponseStream.MoveNext());
+                    Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
+                    Assert.AreEqual(58979, call.ResponseStream.Current.Payload.Body.Length);
 
-                Assert.IsFalse(await call.ResponseStream.MoveNext());
+                    await call.RequestStream.CompleteAsync();
 
+                    Assert.IsFalse(await call.ResponseStream.MoveNext());
+                }
                 Console.WriteLine("Passed!");
             }).Wait();
         }
@@ -305,12 +308,13 @@ namespace Grpc.IntegrationTesting
             Task.Run(async () =>
             {
                 Console.WriteLine("running empty_stream");
-                var call = client.FullDuplexCall();
-                await call.RequestStream.CompleteAsync();
-
-                var responseList = await call.ResponseStream.ToList();
-                Assert.AreEqual(0, responseList.Count);
+                using (var call = client.FullDuplexCall())
+                {
+                    await call.RequestStream.CompleteAsync();
 
+                    var responseList = await call.ResponseStream.ToList();
+                    Assert.AreEqual(0, responseList.Count);
+                }
                 Console.WriteLine("Passed!");
             }).Wait();
         }
@@ -362,19 +366,21 @@ namespace Grpc.IntegrationTesting
                 Console.WriteLine("running cancel_after_begin");
 
                 var cts = new CancellationTokenSource();
-                var call = client.StreamingInputCall(cts.Token);
-                // TODO(jtattermusch): we need this to ensure call has been initiated once we cancel it.
-                await Task.Delay(1000);
-                cts.Cancel();
-
-                try
+                using (var call = client.StreamingInputCall(cts.Token))
                 {
-                    var response = await call.Result;
-                    Assert.Fail();
-                } 
-                catch (RpcException e)
-                {
-                    Assert.AreEqual(StatusCode.Cancelled, e.Status.StatusCode);
+                    // TODO(jtattermusch): we need this to ensure call has been initiated once we cancel it.
+                    await Task.Delay(1000);
+                    cts.Cancel();
+
+                    try
+                    {
+                        var response = await call.Result;
+                        Assert.Fail();
+                    }
+                    catch (RpcException e)
+                    {
+                        Assert.AreEqual(StatusCode.Cancelled, e.Status.StatusCode);
+                    }
                 }
                 Console.WriteLine("Passed!");
             }).Wait();
@@ -387,27 +393,28 @@ namespace Grpc.IntegrationTesting
                 Console.WriteLine("running cancel_after_first_response");
 
                 var cts = new CancellationTokenSource();
-                var call = client.FullDuplexCall(cts.Token);
-
-                await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
-                    .SetResponseType(PayloadType.COMPRESSABLE)
-                    .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
-                    .SetPayload(CreateZerosPayload(27182)).Build());
+                using (var call = client.FullDuplexCall(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);
+                    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();
+                    cts.Cancel();
 
-                try
-                {
-                    await call.ResponseStream.MoveNext();
-                    Assert.Fail();
-                }
-                catch (RpcException e)
-                {
-                    Assert.AreEqual(StatusCode.Cancelled, e.Status.StatusCode);
+                    try
+                    {
+                        await call.ResponseStream.MoveNext();
+                        Assert.Fail();
+                    }
+                    catch (RpcException e)
+                    {
+                        Assert.AreEqual(StatusCode.Cancelled, e.Status.StatusCode);
+                    }
                 }
                 Console.WriteLine("Passed!");
             }).Wait();
-- 
GitLab