Home | History | Annotate | Download | only in Internal
      1 #region Copyright notice and license
      2 
      3 // Copyright 2015 gRPC authors.
      4 //
      5 // Licensed under the Apache License, Version 2.0 (the "License");
      6 // you may not use this file except in compliance with the License.
      7 // You may obtain a copy of the License at
      8 //
      9 //     http://www.apache.org/licenses/LICENSE-2.0
     10 //
     11 // Unless required by applicable law or agreed to in writing, software
     12 // distributed under the License is distributed on an "AS IS" BASIS,
     13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 // See the License for the specific language governing permissions and
     15 // limitations under the License.
     16 
     17 #endregion
     18 
     19 using System;
     20 using System.Threading.Tasks;
     21 using Grpc.Core;
     22 using Grpc.Core.Internal;
     23 using Grpc.Core.Utils;
     24 using NUnit.Framework;
     25 
     26 namespace Grpc.Core.Internal.Tests
     27 {
     28     public class CompletionQueueSafeHandleTest
     29     {
     30         [Test]
     31         public void CreateSyncAndDestroy()
     32         {
     33             GrpcEnvironment.AddRef();
     34             var cq = CompletionQueueSafeHandle.CreateSync();
     35             cq.Dispose();
     36             GrpcEnvironment.ReleaseAsync().Wait();
     37         }
     38 
     39         [Test]
     40         public void CreateAsyncAndShutdown()
     41         {
     42             var env = GrpcEnvironment.AddRef();
     43             var cq = CompletionQueueSafeHandle.CreateAsync(new CompletionRegistry(env, () => BatchContextSafeHandle.Create(), () => RequestCallContextSafeHandle.Create()));
     44             cq.Shutdown();
     45             var ev = cq.Next();
     46             cq.Dispose();
     47             GrpcEnvironment.ReleaseAsync().Wait();
     48             Assert.AreEqual(CompletionQueueEvent.CompletionType.Shutdown, ev.type);
     49             Assert.AreNotEqual(IntPtr.Zero, ev.success);
     50             Assert.AreEqual(IntPtr.Zero, ev.tag);
     51         }
     52     }
     53 }
     54