diff options
author | Jan Tattermusch <jtattermusch@google.com> | 2018-01-22 13:26:16 +0100 |
---|---|---|
committer | Jan Tattermusch <jtattermusch@google.com> | 2018-01-22 13:26:16 +0100 |
commit | c14997be8e66f5cc8910092f51ffe0ffb74eec80 (patch) | |
tree | 6bc741e2329968ec10217cb3b5ea5379f1c65cc0 /src/csharp/Grpc.Core.Tests | |
parent | 298aa8a2d98a222a17b51ed954b52166261ca940 (diff) |
fix leak caused by csharp context pooling
Diffstat (limited to 'src/csharp/Grpc.Core.Tests')
-rw-r--r-- | src/csharp/Grpc.Core.Tests/Internal/DefaultObjectPoolTest.cs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/csharp/Grpc.Core.Tests/Internal/DefaultObjectPoolTest.cs b/src/csharp/Grpc.Core.Tests/Internal/DefaultObjectPoolTest.cs index b6bb0a9eae..9c6f8a2117 100644 --- a/src/csharp/Grpc.Core.Tests/Internal/DefaultObjectPoolTest.cs +++ b/src/csharp/Grpc.Core.Tests/Internal/DefaultObjectPoolTest.cs @@ -60,6 +60,16 @@ namespace Grpc.Core.Internal.Tests } [Test] + public void LeaseSetsReturnAction() + { + var pool = new DefaultObjectPool<TestPooledObject>(() => new TestPooledObject(), 10, 0); + var origLeased = pool.Lease(); + origLeased.ReturnAction(origLeased); + pool.Dispose(); + Assert.AreNotSame(origLeased, pool.Lease()); + } + + [Test] public void Constructor() { Assert.Throws<ArgumentNullException>(() => new DefaultObjectPool<TestPooledObject>(null, 10, 2)); @@ -67,8 +77,14 @@ namespace Grpc.Core.Internal.Tests Assert.Throws<ArgumentException>(() => new DefaultObjectPool<TestPooledObject>(() => new TestPooledObject(), 10, -1)); } - class TestPooledObject : IDisposable + class TestPooledObject : IPooledObject<TestPooledObject> { + public Action<TestPooledObject> ReturnAction; + + public void SetReturnToPoolAction(Action<TestPooledObject> returnAction) + { + this.ReturnAction = returnAction; + } public void Dispose() { |