From 1949efd54257f9036e1d94bf44f7de3420579c5c Mon Sep 17 00:00:00 2001 From: yang-g Date: Tue, 12 Jan 2016 09:32:40 -0800 Subject: [PATCH 01/11] Test for tsan error --- src/core/iomgr/pollset_multipoller_with_epoll.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index dae33e42f24..2c113048e21 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -90,6 +90,7 @@ static void remove_epoll_fd_from_global_list(int epoll_fd) { void grpc_remove_fd_from_all_epoll_sets(int fd) { int err; + gpr_once_init(&init_epoll_fd_list_mu, init_mu); gpr_mu_lock(&epoll_fd_list_mu); if (epoll_fd_global_list.count == 0) { return; From 2623014c60498bd1cee10a6fc1f9b9df9dc20d4d Mon Sep 17 00:00:00 2001 From: yang-g Date: Tue, 12 Jan 2016 10:38:14 -0800 Subject: [PATCH 02/11] unlock before return --- src/core/iomgr/pollset_multipoller_with_epoll.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index 2c113048e21..b15cf2300e1 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -93,6 +93,7 @@ void grpc_remove_fd_from_all_epoll_sets(int fd) { gpr_once_init(&init_epoll_fd_list_mu, init_mu); gpr_mu_lock(&epoll_fd_list_mu); if (epoll_fd_global_list.count == 0) { + gpr_mu_unlock(&epoll_fd_list_mu); return; } for (size_t i = 0; i < epoll_fd_global_list.count; i++) { From a6b9548c43325269d861f170cdb2c31b07046b56 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Wed, 13 Jan 2016 16:10:48 -0800 Subject: [PATCH 03/11] Add lcov php code coverage report --- src/php/ext/grpc/config.m4 | 66 ++++++++++++++++++++++++++ src/php/ext/grpc/package.xml | 11 +++-- src/php/ext/grpc/tests/grpc-basic.phpt | 10 ++++ tools/run_tests/build_php.sh | 6 ++- tools/run_tests/post_tests_php.sh | 46 ++++++++++++++++++ tools/run_tests/run_tests.py | 3 +- 6 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 src/php/ext/grpc/tests/grpc-basic.phpt create mode 100755 tools/run_tests/post_tests_php.sh diff --git a/src/php/ext/grpc/config.m4 b/src/php/ext/grpc/config.m4 index 79286879431..0fb843d51fd 100755 --- a/src/php/ext/grpc/config.m4 +++ b/src/php/ext/grpc/config.m4 @@ -1,6 +1,9 @@ PHP_ARG_ENABLE(grpc, whether to enable grpc support, [ --enable-grpc Enable grpc support]) +PHP_ARG_ENABLE(coverage, whether to include code coverage symbols, +[ --enable-coverage Enable coverage support], no, no) + if test "$PHP_GRPC" != "no"; then dnl Write more examples of tests here... @@ -75,3 +78,66 @@ if test "$PHP_GRPC" != "no"; then channel_credentials.c completion_queue.c timeval.c server.c \ server_credentials.c php_grpc.c, $ext_shared, , -Wall -Werror -std=c11) fi + +if test "$PHP_COVERAGE" = "yes"; then + + if test "$GCC" != "yes"; then + AC_MSG_ERROR([GCC is required for --enable-coverage]) + fi + + dnl Check if ccache is being used + case `$php_shtool path $CC` in + *ccache*[)] gcc_ccache=yes;; + *[)] gcc_ccache=no;; + esac + + if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then + AC_MSG_ERROR([ccache must be disabled when --enable-coverage option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.]) + fi + + lcov_version_list="1.5 1.6 1.7 1.9 1.10 1.11" + + AC_CHECK_PROG(LCOV, lcov, lcov) + AC_CHECK_PROG(GENHTML, genhtml, genhtml) + PHP_SUBST(LCOV) + PHP_SUBST(GENHTML) + + if test "$LCOV"; then + AC_CACHE_CHECK([for lcov version], php_cv_lcov_version, [ + php_cv_lcov_version=invalid + lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'` #' + for lcov_check_version in $lcov_version_list; do + if test "$lcov_version" = "$lcov_check_version"; then + php_cv_lcov_version="$lcov_check_version (ok)" + fi + done + ]) + else + lcov_msg="To enable code coverage reporting you must have one of the following LCOV versions installed: $lcov_version_list" + AC_MSG_ERROR([$lcov_msg]) + fi + + case $php_cv_lcov_version in + ""|invalid[)] + lcov_msg="You must have one of the following versions of LCOV: $lcov_version_list (found: $lcov_version)." + AC_MSG_ERROR([$lcov_msg]) + LCOV="exit 0;" + ;; + esac + + if test -z "$GENHTML"; then + AC_MSG_ERROR([Could not find genhtml from the LCOV package]) + fi + + PHP_ADD_MAKEFILE_FRAGMENT + + dnl Remove all optimization flags from CFLAGS + changequote({,}) + CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` + CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` + changequote([,]) + + dnl Add the special gcc flags + CFLAGS="$CFLAGS -O0 -ggdb -fprofile-arcs -ftest-coverage" + CXXFLAGS="$CXXFLAGS -ggdb -O0 -fprofile-arcs -ftest-coverage" +fi diff --git a/src/php/ext/grpc/package.xml b/src/php/ext/grpc/package.xml index 9c98f825403..daf2ee5a53d 100644 --- a/src/php/ext/grpc/package.xml +++ b/src/php/ext/grpc/package.xml @@ -10,8 +10,8 @@ grpc-packages@google.com yes - 2015-12-16 - + 2016-01-13 + 0.7.0 0.7.0 @@ -29,6 +29,7 @@ + @@ -41,9 +42,9 @@ - + - + @@ -142,7 +143,7 @@ Update to wrap gRPC C Core version 0.10.0 beta beta - 2015-12-16 + 2016-01-13 BSD - Breaking change to Credentials class (removed) #3765 diff --git a/src/php/ext/grpc/tests/grpc-basic.phpt b/src/php/ext/grpc/tests/grpc-basic.phpt new file mode 100644 index 00000000000..523cc4a59fd --- /dev/null +++ b/src/php/ext/grpc/tests/grpc-basic.phpt @@ -0,0 +1,10 @@ +--TEST-- +Check for grpc presence +--SKIPIF-- + +--FILE-- + +--EXPECT-- +grpc extension is available \ No newline at end of file diff --git a/tools/run_tests/build_php.sh b/tools/run_tests/build_php.sh index 1d81779b6ac..77a8abcfe70 100755 --- a/tools/run_tests/build_php.sh +++ b/tools/run_tests/build_php.sh @@ -44,5 +44,9 @@ cd src/php cd ext/grpc phpize -./configure --enable-grpc=$root +if [ "$CONFIG" != "gcov" ] ; then + ./configure --enable-grpc=$root +else + ./configure --enable-grpc=$root --enable-coverage +fi make diff --git a/tools/run_tests/post_tests_php.sh b/tools/run_tests/post_tests_php.sh new file mode 100755 index 00000000000..b4098066ea9 --- /dev/null +++ b/tools/run_tests/post_tests_php.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set -ex + +if [ "$CONFIG" != "gcov" ] ; then exit ; fi + +root=$(readlink -f $(dirname $0)/../..) +out=$root/reports/php_ext_coverage +tmp1=$(mktemp) +tmp2=$(mktemp) +cd $root +lcov --capture --directory . --output-file $tmp1 +lcov --extract $tmp1 "$root/src/php/ext/grpc/*" --output-file $tmp2 +genhtml $tmp2 --output-directory $out +rm $tmp2 +rm $tmp1 + +cp -rv $root/src/php/coverage $root/reports/php diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 0de20a634a4..127377fcf6f 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -245,7 +245,7 @@ class PhpLanguage(object): return [['tools/run_tests/build_php.sh']] def post_tests_steps(self): - return [] + return [['tools/run_tests/post_tests_php.sh']] def makefile_name(self): return 'Makefile' @@ -1092,4 +1092,3 @@ else: if BuildAndRunError.POST_TEST in errors: exit_code |= 4 sys.exit(exit_code) - From 469bd1bc3e4e61729147fb20a47c9d7dfc2b5693 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Thu, 14 Jan 2016 11:48:22 -0800 Subject: [PATCH 04/11] update copyright year --- tools/run_tests/build_php.sh | 2 +- tools/run_tests/post_tests_php.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/run_tests/build_php.sh b/tools/run_tests/build_php.sh index 77a8abcfe70..0f9cfe5e3af 100755 --- a/tools/run_tests/build_php.sh +++ b/tools/run_tests/build_php.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/run_tests/post_tests_php.sh b/tools/run_tests/post_tests_php.sh index b4098066ea9..01a44d03dc3 100755 --- a/tools/run_tests/post_tests_php.sh +++ b/tools/run_tests/post_tests_php.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without From afab541d01852aa086adfbf589be776a39c2aa3f Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Tue, 12 Jan 2016 17:57:25 -0800 Subject: [PATCH 05/11] revamp C# native library loader --- src/csharp/Grpc.Core.Tests/PInvokeTest.cs | 14 +- src/csharp/Grpc.Core/Grpc.Core.csproj | 23 +- src/csharp/Grpc.Core/GrpcEnvironment.cs | 16 +- .../Internal/BatchContextSafeHandle.cs | 70 +- .../Grpc.Core/Internal/CStringSafeHandle.cs | 5 +- .../Internal/CallCredentialsSafeHandle.cs | 10 +- .../Grpc.Core/Internal/CallSafeHandle.cs | 95 +- .../Internal/ChannelArgsSafeHandle.cs | 20 +- .../Internal/ChannelCredentialsSafeHandle.cs | 17 +- .../Grpc.Core/Internal/ChannelSafeHandle.cs | 36 +- .../Internal/CompletionQueueEvent.cs | 5 +- .../Internal/CompletionQueueSafeHandle.cs | 27 +- .../Internal/MetadataArraySafeHandle.cs | 35 +- .../Grpc.Core/Internal/NativeExtension.cs | 158 ++++ .../Grpc.Core/Internal/NativeLogRedirector.cs | 7 +- .../NativeMetadataCredentialsPlugin.cs | 15 +- .../Grpc.Core/Internal/NativeMethods.cs | 816 ++++++++++++++++++ src/csharp/Grpc.Core/Internal/PlatformApis.cs | 110 +++ .../Internal/ServerCredentialsSafeHandle.cs | 16 +- .../Grpc.Core/Internal/ServerSafeHandle.cs | 40 +- src/csharp/Grpc.Core/Internal/Timespec.cs | 28 +- .../Grpc.Core/Internal/UnmanagedLibrary.cs | 158 ++++ src/csharp/Grpc.Core/NativeDeps.Linux.targets | 9 + src/csharp/Grpc.Core/NativeDeps.Mac.targets | 9 + .../Grpc.Core/NativeDeps.Windows.targets | 9 + src/csharp/Grpc.Core/NativeDeps.targets | 28 + .../grpc_interop_csharp/build_interop.sh | 2 +- tools/run_tests/build_csharp.sh | 3 +- tools/run_tests/run_csharp.sh | 3 - 29 files changed, 1415 insertions(+), 369 deletions(-) create mode 100644 src/csharp/Grpc.Core/Internal/NativeExtension.cs create mode 100644 src/csharp/Grpc.Core/Internal/NativeMethods.cs create mode 100644 src/csharp/Grpc.Core/Internal/PlatformApis.cs create mode 100644 src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs create mode 100644 src/csharp/Grpc.Core/NativeDeps.Linux.targets create mode 100644 src/csharp/Grpc.Core/NativeDeps.Mac.targets create mode 100644 src/csharp/Grpc.Core/NativeDeps.Windows.targets create mode 100644 src/csharp/Grpc.Core/NativeDeps.targets diff --git a/src/csharp/Grpc.Core.Tests/PInvokeTest.cs b/src/csharp/Grpc.Core.Tests/PInvokeTest.cs index af55cb0566b..ea6572e7c01 100644 --- a/src/csharp/Grpc.Core.Tests/PInvokeTest.cs +++ b/src/csharp/Grpc.Core.Tests/PInvokeTest.cs @@ -45,13 +45,9 @@ namespace Grpc.Core.Tests { public class PInvokeTest { - int counter; - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_test_callback([MarshalAs(UnmanagedType.FunctionPtr)] OpCompletionDelegate callback); + static readonly NativeMethods Native = NativeMethods.Get(); - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_test_nop(IntPtr ptr); + int counter; /// /// (~1.26us .NET Windows) @@ -87,7 +83,7 @@ namespace Grpc.Core.Tests 1000000, 10000000, () => { - grpcsharp_test_callback(handler); + Native.grpcsharp_test_callback(handler); }); Assert.AreNotEqual(0, counter); } @@ -106,7 +102,7 @@ namespace Grpc.Core.Tests 10000, 10000, () => { - grpcsharp_test_callback(new OpCompletionDelegate(Handler)); + Native.grpcsharp_test_callback(new OpCompletionDelegate(Handler)); }); Assert.AreNotEqual(0, counter); } @@ -122,7 +118,7 @@ namespace Grpc.Core.Tests 1000000, 100000000, () => { - grpcsharp_test_nop(IntPtr.Zero); + Native.grpcsharp_test_nop(IntPtr.Zero); }); } diff --git a/src/csharp/Grpc.Core/Grpc.Core.csproj b/src/csharp/Grpc.Core/Grpc.Core.csproj index 852b2121143..ef4ec70a4a1 100644 --- a/src/csharp/Grpc.Core/Grpc.Core.csproj +++ b/src/csharp/Grpc.Core/Grpc.Core.csproj @@ -19,7 +19,6 @@ DEBUG; prompt 4 - Debug pdbonly @@ -27,7 +26,6 @@ bin\Release prompt 4 - Release pdbonly @@ -38,7 +36,6 @@ 4 True C:\keys\Grpc.snk - Release @@ -52,6 +49,10 @@ + + + + @@ -131,20 +132,6 @@ - - - - - - PreserveNewest - - - - - + - - - \ No newline at end of file diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs index e7c04185c23..3797100fc6d 100644 --- a/src/csharp/Grpc.Core/GrpcEnvironment.cs +++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs @@ -47,15 +47,6 @@ namespace Grpc.Core { const int THREAD_POOL_SIZE = 4; - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_init(); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_shutdown(); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_version_string(); // returns not-owned const char* - static object staticLock = new object(); static GrpcEnvironment instance; static int refCount; @@ -136,7 +127,6 @@ namespace Grpc.Core /// private GrpcEnvironment() { - NativeLogRedirector.Redirect(); GrpcNativeInit(); completionRegistry = new CompletionRegistry(this); threadPool = new GrpcThreadPool(this, THREAD_POOL_SIZE); @@ -181,18 +171,18 @@ namespace Grpc.Core /// internal static string GetCoreVersionString() { - var ptr = grpcsharp_version_string(); // the pointer is not owned + var ptr = NativeMethods.Get().grpcsharp_version_string(); // the pointer is not owned return Marshal.PtrToStringAnsi(ptr); } internal static void GrpcNativeInit() { - grpcsharp_init(); + NativeMethods.Get().grpcsharp_init(); } internal static void GrpcNativeShutdown() { - grpcsharp_shutdown(); + NativeMethods.Get().grpcsharp_shutdown(); } /// diff --git a/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs b/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs index 3a96414bea2..256d2e3c83c 100644 --- a/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs @@ -42,47 +42,7 @@ namespace Grpc.Core.Internal /// internal class BatchContextSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern BatchContextSafeHandle grpcsharp_batch_context_create(); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_recv_initial_metadata(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_recv_message_length(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_batch_context_recv_message_to_buffer(BatchContextSafeHandle ctx, byte[] buffer, UIntPtr bufferLen); - - [DllImport("grpc_csharp_ext.dll")] - static extern StatusCode grpcsharp_batch_context_recv_status_on_client_status(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_recv_status_on_client_details(BatchContextSafeHandle ctx); // returns const char* - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern CallSafeHandle grpcsharp_batch_context_server_rpc_new_call(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_server_rpc_new_method(BatchContextSafeHandle ctx); // returns const char* - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_server_rpc_new_host(BatchContextSafeHandle ctx); // returns const char* - - [DllImport("grpc_csharp_ext.dll")] - static extern Timespec grpcsharp_batch_context_server_rpc_new_deadline(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_batch_context_server_rpc_new_request_metadata(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern int grpcsharp_batch_context_recv_close_on_server_cancelled(BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_batch_context_destroy(IntPtr ctx); + static readonly NativeMethods Native = NativeMethods.Get(); private BatchContextSafeHandle() { @@ -90,7 +50,7 @@ namespace Grpc.Core.Internal public static BatchContextSafeHandle Create() { - return grpcsharp_batch_context_create(); + return Native.grpcsharp_batch_context_create(); } public IntPtr Handle @@ -104,17 +64,17 @@ namespace Grpc.Core.Internal // Gets data of recv_initial_metadata completion. public Metadata GetReceivedInitialMetadata() { - IntPtr metadataArrayPtr = grpcsharp_batch_context_recv_initial_metadata(this); + IntPtr metadataArrayPtr = Native.grpcsharp_batch_context_recv_initial_metadata(this); return MetadataArraySafeHandle.ReadMetadataFromPtrUnsafe(metadataArrayPtr); } // Gets data of recv_status_on_client completion. public ClientSideStatus GetReceivedStatusOnClient() { - string details = Marshal.PtrToStringAnsi(grpcsharp_batch_context_recv_status_on_client_details(this)); - var status = new Status(grpcsharp_batch_context_recv_status_on_client_status(this), details); + string details = Marshal.PtrToStringAnsi(Native.grpcsharp_batch_context_recv_status_on_client_details(this)); + var status = new Status(Native.grpcsharp_batch_context_recv_status_on_client_status(this), details); - IntPtr metadataArrayPtr = grpcsharp_batch_context_recv_status_on_client_trailing_metadata(this); + IntPtr metadataArrayPtr = Native.grpcsharp_batch_context_recv_status_on_client_trailing_metadata(this); var metadata = MetadataArraySafeHandle.ReadMetadataFromPtrUnsafe(metadataArrayPtr); return new ClientSideStatus(status, metadata); @@ -123,26 +83,26 @@ namespace Grpc.Core.Internal // Gets data of recv_message completion. public byte[] GetReceivedMessage() { - IntPtr len = grpcsharp_batch_context_recv_message_length(this); + IntPtr len = Native.grpcsharp_batch_context_recv_message_length(this); if (len == new IntPtr(-1)) { return null; } byte[] data = new byte[(int)len]; - grpcsharp_batch_context_recv_message_to_buffer(this, data, new UIntPtr((ulong)data.Length)); + Native.grpcsharp_batch_context_recv_message_to_buffer(this, data, new UIntPtr((ulong)data.Length)); return data; } // Gets data of server_rpc_new completion. public ServerRpcNew GetServerRpcNew(Server server) { - var call = grpcsharp_batch_context_server_rpc_new_call(this); + var call = Native.grpcsharp_batch_context_server_rpc_new_call(this); - var method = Marshal.PtrToStringAnsi(grpcsharp_batch_context_server_rpc_new_method(this)); - var host = Marshal.PtrToStringAnsi(grpcsharp_batch_context_server_rpc_new_host(this)); - var deadline = grpcsharp_batch_context_server_rpc_new_deadline(this); + var method = Marshal.PtrToStringAnsi(Native.grpcsharp_batch_context_server_rpc_new_method(this)); + var host = Marshal.PtrToStringAnsi(Native.grpcsharp_batch_context_server_rpc_new_host(this)); + var deadline = Native.grpcsharp_batch_context_server_rpc_new_deadline(this); - IntPtr metadataArrayPtr = grpcsharp_batch_context_server_rpc_new_request_metadata(this); + IntPtr metadataArrayPtr = Native.grpcsharp_batch_context_server_rpc_new_request_metadata(this); var metadata = MetadataArraySafeHandle.ReadMetadataFromPtrUnsafe(metadataArrayPtr); return new ServerRpcNew(server, call, method, host, deadline, metadata); @@ -151,12 +111,12 @@ namespace Grpc.Core.Internal // Gets data of receive_close_on_server completion. public bool GetReceivedCloseOnServerCancelled() { - return grpcsharp_batch_context_recv_close_on_server_cancelled(this) != 0; + return Native.grpcsharp_batch_context_recv_close_on_server_cancelled(this) != 0; } protected override bool ReleaseHandle() { - grpcsharp_batch_context_destroy(handle); + Native.grpcsharp_batch_context_destroy(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs index 92fbe8cf0f1..0221798d2af 100644 --- a/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs @@ -39,8 +39,7 @@ namespace Grpc.Core.Internal /// internal class CStringSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern void gprsharp_free(IntPtr ptr); + static readonly NativeMethods Native = NativeMethods.Get(); private CStringSafeHandle() { @@ -53,7 +52,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { - gprsharp_free(handle); + Native.gprsharp_free(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs index 3678c7dd86f..3095a340080 100644 --- a/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs @@ -40,11 +40,7 @@ namespace Grpc.Core.Internal /// internal class CallCredentialsSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_call_credentials_release(IntPtr credentials); + static readonly NativeMethods Native = NativeMethods.Get(); private CallCredentialsSafeHandle() { @@ -52,12 +48,12 @@ namespace Grpc.Core.Internal public static CallCredentialsSafeHandle CreateComposite(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2) { - return grpcsharp_composite_call_credentials_create(creds1, creds2); + return Native.grpcsharp_composite_call_credentials_create(creds1, creds2); } protected override bool ReleaseHandle() { - grpcsharp_call_credentials_release(handle); + Native.grpcsharp_call_credentials_release(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs index 69dbdfea5e7..454f88df083 100644 --- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs @@ -44,71 +44,12 @@ namespace Grpc.Core.Internal internal class CallSafeHandle : SafeHandleZeroIsInvalid, INativeCall { public static readonly CallSafeHandle NullInstance = new CallSafeHandle(); + static readonly NativeMethods Native = NativeMethods.Get(); const uint GRPC_WRITE_BUFFER_HINT = 1; CompletionRegistry completionRegistry; CompletionQueueSafeHandle completionQueue; - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_cancel(CallSafeHandle call); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_cancel_with_status(CallSafeHandle call, StatusCode status, string description); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_start_unary(CallSafeHandle call, - BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_start_client_streaming(CallSafeHandle call, - BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_start_server_streaming(CallSafeHandle call, - BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, - MetadataArraySafeHandle metadataArray, WriteFlags writeFlags); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_start_duplex_streaming(CallSafeHandle call, - BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_send_message(CallSafeHandle call, - BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_send_close_from_client(CallSafeHandle call, - BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_send_status_from_server(CallSafeHandle call, - BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_recv_message(CallSafeHandle call, - BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, - BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_start_serverside(CallSafeHandle call, - BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_send_initial_metadata(CallSafeHandle call, - BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_call_set_credentials(CallSafeHandle call, CallCredentialsSafeHandle credentials); - - [DllImport("grpc_csharp_ext.dll")] - static extern CStringSafeHandle grpcsharp_call_get_peer(CallSafeHandle call); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_call_destroy(IntPtr call); - private CallSafeHandle() { } @@ -121,7 +62,7 @@ namespace Grpc.Core.Internal public void SetCredentials(CallCredentialsSafeHandle credentials) { - grpcsharp_call_set_credentials(this, credentials).CheckOk(); + Native.grpcsharp_call_set_credentials(this, credentials).CheckOk(); } public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) @@ -130,7 +71,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); - grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) + Native.grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) .CheckOk(); } } @@ -139,7 +80,7 @@ namespace Grpc.Core.Internal { using (Profilers.ForCurrentThread().NewScope("CallSafeHandle.StartUnary")) { - grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) + Native.grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) .CheckOk(); } } @@ -150,7 +91,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); - grpcsharp_call_start_client_streaming(this, ctx, metadataArray).CheckOk(); + Native.grpcsharp_call_start_client_streaming(this, ctx, metadataArray).CheckOk(); } } @@ -160,7 +101,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); - grpcsharp_call_start_server_streaming(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags).CheckOk(); + Native.grpcsharp_call_start_server_streaming(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags).CheckOk(); } } @@ -170,7 +111,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); - grpcsharp_call_start_duplex_streaming(this, ctx, metadataArray).CheckOk(); + Native.grpcsharp_call_start_duplex_streaming(this, ctx, metadataArray).CheckOk(); } } @@ -180,7 +121,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); - grpcsharp_call_send_message(this, ctx, payload, new UIntPtr((ulong)payload.Length), writeFlags, sendEmptyInitialMetadata).CheckOk(); + Native.grpcsharp_call_send_message(this, ctx, payload, new UIntPtr((ulong)payload.Length), writeFlags, sendEmptyInitialMetadata).CheckOk(); } } @@ -190,7 +131,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); - grpcsharp_call_send_close_from_client(this, ctx).CheckOk(); + Native.grpcsharp_call_send_close_from_client(this, ctx).CheckOk(); } } @@ -200,7 +141,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); - grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata).CheckOk(); + Native.grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata).CheckOk(); } } @@ -210,7 +151,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedMessage())); - grpcsharp_call_recv_message(this, ctx).CheckOk(); + Native.grpcsharp_call_recv_message(this, ctx).CheckOk(); } } @@ -220,7 +161,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedInitialMetadata())); - grpcsharp_call_recv_initial_metadata(this, ctx).CheckOk(); + Native.grpcsharp_call_recv_initial_metadata(this, ctx).CheckOk(); } } @@ -230,7 +171,7 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedCloseOnServerCancelled())); - grpcsharp_call_start_serverside(this, ctx).CheckOk(); + Native.grpcsharp_call_start_serverside(this, ctx).CheckOk(); } } @@ -240,23 +181,23 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); - grpcsharp_call_send_initial_metadata(this, ctx, metadataArray).CheckOk(); + Native.grpcsharp_call_send_initial_metadata(this, ctx, metadataArray).CheckOk(); } } public void Cancel() { - grpcsharp_call_cancel(this).CheckOk(); + Native.grpcsharp_call_cancel(this).CheckOk(); } public void CancelWithStatus(Status status) { - grpcsharp_call_cancel_with_status(this, status.StatusCode, status.Detail).CheckOk(); + Native.grpcsharp_call_cancel_with_status(this, status.StatusCode, status.Detail).CheckOk(); } public string GetPeer() { - using (var cstring = grpcsharp_call_get_peer(this)) + using (var cstring = Native.grpcsharp_call_get_peer(this)) { return cstring.GetValue(); } @@ -264,7 +205,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { - grpcsharp_call_destroy(handle); + Native.grpcsharp_call_destroy(handle); return true; } diff --git a/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs index ea5b52374e3..00380242459 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs @@ -39,17 +39,7 @@ namespace Grpc.Core.Internal /// internal class ChannelArgsSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern ChannelArgsSafeHandle grpcsharp_channel_args_create(UIntPtr numArgs); - - [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] - static extern void grpcsharp_channel_args_set_string(ChannelArgsSafeHandle args, UIntPtr index, string key, string value); - - [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] - static extern void grpcsharp_channel_args_set_integer(ChannelArgsSafeHandle args, UIntPtr index, string key, int value); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_channel_args_destroy(IntPtr args); + static readonly NativeMethods Native = NativeMethods.Get(); private ChannelArgsSafeHandle() { @@ -62,22 +52,22 @@ namespace Grpc.Core.Internal public static ChannelArgsSafeHandle Create(int size) { - return grpcsharp_channel_args_create(new UIntPtr((uint)size)); + return Native.grpcsharp_channel_args_create(new UIntPtr((uint)size)); } public void SetString(int index, string key, string value) { - grpcsharp_channel_args_set_string(this, new UIntPtr((uint)index), key, value); + Native.grpcsharp_channel_args_set_string(this, new UIntPtr((uint)index), key, value); } public void SetInteger(int index, string key, int value) { - grpcsharp_channel_args_set_integer(this, new UIntPtr((uint)index), key, value); + Native.grpcsharp_channel_args_set_integer(this, new UIntPtr((uint)index), key, value); } protected override bool ReleaseHandle() { - grpcsharp_channel_args_destroy(handle); + Native.grpcsharp_channel_args_destroy(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs index 8a58c64478e..c85f55241a1 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs @@ -40,14 +40,7 @@ namespace Grpc.Core.Internal /// internal class ChannelCredentialsSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] - static extern ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey); - - [DllImport("grpc_csharp_ext.dll")] - static extern ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_channel_credentials_release(IntPtr credentials); + static readonly NativeMethods Native = NativeMethods.Get(); private ChannelCredentialsSafeHandle() { @@ -64,22 +57,22 @@ namespace Grpc.Core.Internal { if (keyCertPair != null) { - return grpcsharp_ssl_credentials_create(pemRootCerts, keyCertPair.CertificateChain, keyCertPair.PrivateKey); + return Native.grpcsharp_ssl_credentials_create(pemRootCerts, keyCertPair.CertificateChain, keyCertPair.PrivateKey); } else { - return grpcsharp_ssl_credentials_create(pemRootCerts, null, null); + return Native.grpcsharp_ssl_credentials_create(pemRootCerts, null, null); } } public static ChannelCredentialsSafeHandle CreateComposite(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds) { - return grpcsharp_composite_channel_credentials_create(channelCreds, callCreds); + return Native.grpcsharp_composite_channel_credentials_create(channelCreds, callCreds); } protected override bool ReleaseHandle() { - grpcsharp_channel_credentials_release(handle); + Native.grpcsharp_channel_credentials_release(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs index 4a5584121e1..1dbd1f4e34c 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs @@ -41,27 +41,7 @@ namespace Grpc.Core.Internal /// internal class ChannelSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern ChannelSafeHandle grpcsharp_insecure_channel_create(string target, ChannelArgsSafeHandle channelArgs); - - [DllImport("grpc_csharp_ext.dll")] - static extern ChannelSafeHandle grpcsharp_secure_channel_create(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs); - - [DllImport("grpc_csharp_ext.dll")] - static extern CallSafeHandle grpcsharp_channel_create_call(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline); - - [DllImport("grpc_csharp_ext.dll")] - static extern ChannelState grpcsharp_channel_check_connectivity_state(ChannelSafeHandle channel, int tryToConnect); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_channel_watch_connectivity_state(ChannelSafeHandle channel, ChannelState lastObservedState, - Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern CStringSafeHandle grpcsharp_channel_get_target(ChannelSafeHandle call); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_channel_destroy(IntPtr channel); + static readonly NativeMethods Native = NativeMethods.Get(); private ChannelSafeHandle() { @@ -72,7 +52,7 @@ namespace Grpc.Core.Internal // Increment reference count for the native gRPC environment to make sure we don't do grpc_shutdown() before destroying the server handle. // Doing so would make object finalizer crash if we end up abandoning the handle. GrpcEnvironment.GrpcNativeInit(); - return grpcsharp_insecure_channel_create(target, channelArgs); + return Native.grpcsharp_insecure_channel_create(target, channelArgs); } public static ChannelSafeHandle CreateSecure(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs) @@ -80,14 +60,14 @@ namespace Grpc.Core.Internal // Increment reference count for the native gRPC environment to make sure we don't do grpc_shutdown() before destroying the server handle. // Doing so would make object finalizer crash if we end up abandoning the handle. GrpcEnvironment.GrpcNativeInit(); - return grpcsharp_secure_channel_create(credentials, target, channelArgs); + return Native.grpcsharp_secure_channel_create(credentials, target, channelArgs); } public CallSafeHandle CreateCall(CompletionRegistry registry, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline, CallCredentialsSafeHandle credentials) { using (Profilers.ForCurrentThread().NewScope("ChannelSafeHandle.CreateCall")) { - var result = grpcsharp_channel_create_call(this, parentCall, propagationMask, cq, method, host, deadline); + var result = Native.grpcsharp_channel_create_call(this, parentCall, propagationMask, cq, method, host, deadline); if (credentials != null) { result.SetCredentials(credentials); @@ -99,7 +79,7 @@ namespace Grpc.Core.Internal public ChannelState CheckConnectivityState(bool tryToConnect) { - return grpcsharp_channel_check_connectivity_state(this, tryToConnect ? 1 : 0); + return Native.grpcsharp_channel_check_connectivity_state(this, tryToConnect ? 1 : 0); } public void WatchConnectivityState(ChannelState lastObservedState, Timespec deadline, CompletionQueueSafeHandle cq, @@ -107,12 +87,12 @@ namespace Grpc.Core.Internal { var ctx = BatchContextSafeHandle.Create(); completionRegistry.RegisterBatchCompletion(ctx, callback); - grpcsharp_channel_watch_connectivity_state(this, lastObservedState, deadline, cq, ctx); + Native.grpcsharp_channel_watch_connectivity_state(this, lastObservedState, deadline, cq, ctx); } public string GetTarget() { - using (var cstring = grpcsharp_channel_get_target(this)) + using (var cstring = Native.grpcsharp_channel_get_target(this)) { return cstring.GetValue(); } @@ -120,7 +100,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { - grpcsharp_channel_destroy(handle); + Native.grpcsharp_channel_destroy(handle); GrpcEnvironment.GrpcNativeShutdown(); return true; } diff --git a/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs b/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs index 3f517514a3e..288680792a6 100644 --- a/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs +++ b/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs @@ -42,8 +42,7 @@ namespace Grpc.Core.Internal [StructLayout(LayoutKind.Sequential)] internal struct CompletionQueueEvent { - [DllImport("grpc_csharp_ext.dll")] - static extern int grpcsharp_sizeof_grpc_event(); + static readonly NativeMethods Native = NativeMethods.Get(); public GRPCCompletionType type; public int success; @@ -53,7 +52,7 @@ namespace Grpc.Core.Internal { get { - return grpcsharp_sizeof_grpc_event(); + return Native.grpcsharp_sizeof_grpc_event(); } } } diff --git a/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs index 3754ad382e8..365de96fb73 100644 --- a/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs @@ -42,22 +42,9 @@ namespace Grpc.Core.Internal /// internal class CompletionQueueSafeHandle : SafeHandleZeroIsInvalid { - AtomicCounter shutdownRefcount = new AtomicCounter(1); - - [DllImport("grpc_csharp_ext.dll")] - static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create(); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_completion_queue_shutdown(CompletionQueueSafeHandle cq); + static readonly NativeMethods Native = NativeMethods.Get(); - [DllImport("grpc_csharp_ext.dll")] - static extern CompletionQueueEvent grpcsharp_completion_queue_next(CompletionQueueSafeHandle cq); - - [DllImport("grpc_csharp_ext.dll")] - static extern CompletionQueueEvent grpcsharp_completion_queue_pluck(CompletionQueueSafeHandle cq, IntPtr tag); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_completion_queue_destroy(IntPtr cq); + AtomicCounter shutdownRefcount = new AtomicCounter(1); private CompletionQueueSafeHandle() { @@ -65,20 +52,20 @@ namespace Grpc.Core.Internal public static CompletionQueueSafeHandle Create() { - return grpcsharp_completion_queue_create(); + return Native.grpcsharp_completion_queue_create(); } public CompletionQueueEvent Next() { - return grpcsharp_completion_queue_next(this); + return Native.grpcsharp_completion_queue_next(this); } public CompletionQueueEvent Pluck(IntPtr tag) { using (Profilers.ForCurrentThread().NewScope("CompletionQueueSafeHandle.Pluck")) { - return grpcsharp_completion_queue_pluck(this, tag); + return Native.grpcsharp_completion_queue_pluck(this, tag); } } @@ -98,7 +85,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { - grpcsharp_completion_queue_destroy(handle); + Native.grpcsharp_completion_queue_destroy(handle); return true; } @@ -106,7 +93,7 @@ namespace Grpc.Core.Internal { if (shutdownRefcount.Decrement() == 0) { - grpcsharp_completion_queue_shutdown(this); + Native.grpcsharp_completion_queue_shutdown(this); } } diff --git a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs index ed1bd244980..25735d5262d 100644 --- a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs @@ -40,26 +40,7 @@ namespace Grpc.Core.Internal /// internal class MetadataArraySafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern MetadataArraySafeHandle grpcsharp_metadata_array_create(UIntPtr capacity); - - [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] - static extern void grpcsharp_metadata_array_add(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength); - - [DllImport("grpc_csharp_ext.dll")] - static extern UIntPtr grpcsharp_metadata_array_count(IntPtr metadataArray); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_metadata_array_get_key(IntPtr metadataArray, UIntPtr index); - - [DllImport("grpc_csharp_ext.dll")] - static extern IntPtr grpcsharp_metadata_array_get_value(IntPtr metadataArray, UIntPtr index); - - [DllImport("grpc_csharp_ext.dll")] - static extern UIntPtr grpcsharp_metadata_array_get_value_length(IntPtr metadataArray, UIntPtr index); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_metadata_array_destroy_full(IntPtr array); + static readonly NativeMethods Native = NativeMethods.Get(); private MetadataArraySafeHandle() { @@ -70,11 +51,11 @@ namespace Grpc.Core.Internal using (Profilers.ForCurrentThread().NewScope("MetadataArraySafeHandle.Create")) { // TODO(jtattermusch): we might wanna check that the metadata is readonly - var metadataArray = grpcsharp_metadata_array_create(new UIntPtr((ulong)metadata.Count)); + var metadataArray = Native.grpcsharp_metadata_array_create(new UIntPtr((ulong)metadata.Count)); for (int i = 0; i < metadata.Count; i++) { var valueBytes = metadata[i].GetSerializedValueUnsafe(); - grpcsharp_metadata_array_add(metadataArray, metadata[i].Key, valueBytes, new UIntPtr((ulong)valueBytes.Length)); + Native.grpcsharp_metadata_array_add(metadataArray, metadata[i].Key, valueBytes, new UIntPtr((ulong)valueBytes.Length)); } return metadataArray; } @@ -90,15 +71,15 @@ namespace Grpc.Core.Internal return null; } - ulong count = grpcsharp_metadata_array_count(metadataArray).ToUInt64(); + ulong count = Native.grpcsharp_metadata_array_count(metadataArray).ToUInt64(); var metadata = new Metadata(); for (ulong i = 0; i < count; i++) { var index = new UIntPtr(i); - string key = Marshal.PtrToStringAnsi(grpcsharp_metadata_array_get_key(metadataArray, index)); - var bytes = new byte[grpcsharp_metadata_array_get_value_length(metadataArray, index).ToUInt64()]; - Marshal.Copy(grpcsharp_metadata_array_get_value(metadataArray, index), bytes, 0, bytes.Length); + string key = Marshal.PtrToStringAnsi(Native.grpcsharp_metadata_array_get_key(metadataArray, index)); + var bytes = new byte[Native.grpcsharp_metadata_array_get_value_length(metadataArray, index).ToUInt64()]; + Marshal.Copy(Native.grpcsharp_metadata_array_get_value(metadataArray, index), bytes, 0, bytes.Length); metadata.Add(Metadata.Entry.CreateUnsafe(key, bytes)); } return metadata; @@ -114,7 +95,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { - grpcsharp_metadata_array_destroy_full(handle); + Native.grpcsharp_metadata_array_destroy_full(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/NativeExtension.cs b/src/csharp/Grpc.Core/Internal/NativeExtension.cs new file mode 100644 index 00000000000..3a4ebf9c4e1 --- /dev/null +++ b/src/csharp/Grpc.Core/Internal/NativeExtension.cs @@ -0,0 +1,158 @@ +#region Copyright notice and license + +// Copyright 2015, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.IO; +using System.Reflection; + +using Grpc.Core.Logging; + +namespace Grpc.Core.Internal +{ + /// + /// Takes care of loading C# native extension and provides access to PInvoke calls the library exports. + /// + internal sealed class NativeExtension + { + const string NativeLibrariesDir = "nativelibs"; + + static readonly ILogger Logger = GrpcEnvironment.Logger.ForType(); + static readonly object staticLock = new object(); + static volatile NativeExtension instance; + + readonly NativeMethods nativeMethods; + + private NativeExtension() + { + this.nativeMethods = new NativeMethods(Load()); + + // Redirect the the native logs as the very first thing after loading the native extension + // to make sure we don't lose any logs. + NativeLogRedirector.Redirect(this.nativeMethods); + + Logger.Debug("gRPC native library loaded successfully."); + } + + /// + /// Gets singleton instance of this class. + /// The native extension is loaded when called for the first time. + /// + public static NativeExtension Get() + { + if (instance == null) + { + lock (staticLock) + { + if (instance == null) { + instance = new NativeExtension(); + } + } + } + return instance; + } + + /// + /// Provides access to the exported native methods. + /// + public NativeMethods NativeMethods + { + get { return this.nativeMethods; } + } + + /// + /// Detects which configuration of native extension to load and load it. + /// + private static UnmanagedLibrary Load() + { + // TODO: allow customizing path to native extension (possibly through exposing a GrpcEnvironment property). + + var libraryFlavor = string.Format("{0}_{1}", GetPlatformString(), GetArchitectureString()); + var fullPath = Path.Combine(GetExecutingAssemblyDirectory(), + NativeLibrariesDir, libraryFlavor, GetNativeLibraryFilename()); + return new UnmanagedLibrary(fullPath); + } + + private static string GetExecutingAssemblyDirectory() + { + return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + } + + private static string GetPlatformString() + { + if (PlatformApis.IsWindows) + { + return "windows"; + } + if (PlatformApis.IsLinux) + { + return "linux"; + } + if (PlatformApis.IsMacOSX) + { + return "macosx"; + } + throw new InvalidOperationException("Unsupported platform."); + } + + // Currently, only Intel platform is supported. + private static string GetArchitectureString() + { + if (PlatformApis.Is64Bit) + { + return "x64"; + } + else + { + return "x86"; + } + } + + // platform specific file name of the extension library + private static string GetNativeLibraryFilename() + { + if (PlatformApis.IsWindows) + { + return "grpc_csharp_ext.dll"; + } + if (PlatformApis.IsLinux) + { + return "libgrpc_csharp_ext.so"; + } + if (PlatformApis.IsMacOSX) + { + return "libgrpc_csharp_ext.dylib"; + } + throw new InvalidOperationException("Unsupported platform."); + } + } +} diff --git a/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs b/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs index b8a55c5fe85..3fcf8673ee7 100644 --- a/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs +++ b/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs @@ -51,20 +51,17 @@ namespace Grpc.Core.Internal static object staticLock = new object(); static GprLogDelegate writeCallback; - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_redirect_log(GprLogDelegate callback); - /// /// Redirects logs from native gRPC C core library to a general logger. /// - public static void Redirect() + public static void Redirect(NativeMethods native) { lock (staticLock) { if (writeCallback == null) { writeCallback = new GprLogDelegate(HandleWrite); - grpcsharp_redirect_log(writeCallback); + native.grpcsharp_redirect_log(writeCallback); } } } diff --git a/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs b/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs index 8bb646d303c..ab9b8e96a45 100644 --- a/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs +++ b/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs @@ -44,12 +44,7 @@ namespace Grpc.Core.Internal { const string GetMetadataExceptionMsg = "Exception occured in metadata credentials plugin."; static readonly ILogger Logger = GrpcEnvironment.Logger.ForType(); - - [DllImport("grpc_csharp_ext.dll")] - static extern CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin(NativeMetadataInterceptor interceptor); - - [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] - static extern void grpcsharp_metadata_credentials_notify_from_plugin(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails); + static readonly NativeMethods Native = NativeMethods.Get(); AsyncAuthInterceptor interceptor; GCHandle gcHandle; @@ -63,7 +58,7 @@ namespace Grpc.Core.Internal // Make sure the callback doesn't get garbage collected until it is destroyed. this.gcHandle = GCHandle.Alloc(this.nativeInterceptor, GCHandleType.Normal); - this.credentials = grpcsharp_metadata_credentials_create_from_plugin(nativeInterceptor); + this.credentials = Native.grpcsharp_metadata_credentials_create_from_plugin(nativeInterceptor); } public CallCredentialsSafeHandle Credentials @@ -87,7 +82,7 @@ namespace Grpc.Core.Internal } catch (Exception e) { - grpcsharp_metadata_credentials_notify_from_plugin(callbackPtr, userDataPtr, MetadataArraySafeHandle.Create(Metadata.Empty), StatusCode.Unknown, GetMetadataExceptionMsg); + Native.grpcsharp_metadata_credentials_notify_from_plugin(callbackPtr, userDataPtr, MetadataArraySafeHandle.Create(Metadata.Empty), StatusCode.Unknown, GetMetadataExceptionMsg); Logger.Error(e, GetMetadataExceptionMsg); } } @@ -101,12 +96,12 @@ namespace Grpc.Core.Internal using (var metadataArray = MetadataArraySafeHandle.Create(metadata)) { - grpcsharp_metadata_credentials_notify_from_plugin(callbackPtr, userDataPtr, metadataArray, StatusCode.OK, null); + Native.grpcsharp_metadata_credentials_notify_from_plugin(callbackPtr, userDataPtr, metadataArray, StatusCode.OK, null); } } catch (Exception e) { - grpcsharp_metadata_credentials_notify_from_plugin(callbackPtr, userDataPtr, MetadataArraySafeHandle.Create(Metadata.Empty), StatusCode.Unknown, GetMetadataExceptionMsg); + Native.grpcsharp_metadata_credentials_notify_from_plugin(callbackPtr, userDataPtr, MetadataArraySafeHandle.Create(Metadata.Empty), StatusCode.Unknown, GetMetadataExceptionMsg); Logger.Error(e, GetMetadataExceptionMsg); } } diff --git a/src/csharp/Grpc.Core/Internal/NativeMethods.cs b/src/csharp/Grpc.Core/Internal/NativeMethods.cs new file mode 100644 index 00000000000..b79d7c75652 --- /dev/null +++ b/src/csharp/Grpc.Core/Internal/NativeMethods.cs @@ -0,0 +1,816 @@ +#region Copyright notice and license + +// Copyright 2015, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Threading; + +using Grpc.Core.Logging; +using Grpc.Core.Utils; + +namespace Grpc.Core.Internal +{ + /// + /// Provides access to all native methods provided by NativeExtension. + /// An extra level of indirection is added to P/Invoke calls to allow intelligent loading + /// of the right configuration of the native extension based on current platform, architecture etc. + /// + internal class NativeMethods + { + #region Native methods + + public readonly Delegates.grpcsharp_init_delegate grpcsharp_init; + public readonly Delegates.grpcsharp_shutdown_delegate grpcsharp_shutdown; + public readonly Delegates.grpcsharp_version_string_delegate grpcsharp_version_string; + + public readonly Delegates.grpcsharp_batch_context_create_delegate grpcsharp_batch_context_create; + public readonly Delegates.grpcsharp_batch_context_recv_initial_metadata_delegate grpcsharp_batch_context_recv_initial_metadata; + public readonly Delegates.grpcsharp_batch_context_recv_message_length_delegate grpcsharp_batch_context_recv_message_length; + public readonly Delegates.grpcsharp_batch_context_recv_message_to_buffer_delegate grpcsharp_batch_context_recv_message_to_buffer; + public readonly Delegates.grpcsharp_batch_context_recv_status_on_client_status_delegate grpcsharp_batch_context_recv_status_on_client_status; + public readonly Delegates.grpcsharp_batch_context_recv_status_on_client_details_delegate grpcsharp_batch_context_recv_status_on_client_details; + public readonly Delegates.grpcsharp_batch_context_recv_status_on_client_trailing_metadata_delegate grpcsharp_batch_context_recv_status_on_client_trailing_metadata; + public readonly Delegates.grpcsharp_batch_context_server_rpc_new_call_delegate grpcsharp_batch_context_server_rpc_new_call; + public readonly Delegates.grpcsharp_batch_context_server_rpc_new_method_delegate grpcsharp_batch_context_server_rpc_new_method; + public readonly Delegates.grpcsharp_batch_context_server_rpc_new_host_delegate grpcsharp_batch_context_server_rpc_new_host; + public readonly Delegates.grpcsharp_batch_context_server_rpc_new_deadline_delegate grpcsharp_batch_context_server_rpc_new_deadline; + public readonly Delegates.grpcsharp_batch_context_server_rpc_new_request_metadata_delegate grpcsharp_batch_context_server_rpc_new_request_metadata; + public readonly Delegates.grpcsharp_batch_context_recv_close_on_server_cancelled_delegate grpcsharp_batch_context_recv_close_on_server_cancelled; + public readonly Delegates.grpcsharp_batch_context_destroy_delegate grpcsharp_batch_context_destroy; + + public readonly Delegates.grpcsharp_composite_call_credentials_create_delegate grpcsharp_composite_call_credentials_create; + public readonly Delegates.grpcsharp_call_credentials_release_delegate grpcsharp_call_credentials_release; + + public readonly Delegates.grpcsharp_call_cancel_delegate grpcsharp_call_cancel; + public readonly Delegates.grpcsharp_call_cancel_with_status_delegate grpcsharp_call_cancel_with_status; + public readonly Delegates.grpcsharp_call_start_unary_delegate grpcsharp_call_start_unary; + public readonly Delegates.grpcsharp_call_start_client_streaming_delegate grpcsharp_call_start_client_streaming; + public readonly Delegates.grpcsharp_call_start_server_streaming_delegate grpcsharp_call_start_server_streaming; + public readonly Delegates.grpcsharp_call_start_duplex_streaming_delegate grpcsharp_call_start_duplex_streaming; + public readonly Delegates.grpcsharp_call_send_message_delegate grpcsharp_call_send_message; + public readonly Delegates.grpcsharp_call_send_close_from_client_delegate grpcsharp_call_send_close_from_client; + public readonly Delegates.grpcsharp_call_send_status_from_server_delegate grpcsharp_call_send_status_from_server; + public readonly Delegates.grpcsharp_call_recv_message_delegate grpcsharp_call_recv_message; + public readonly Delegates.grpcsharp_call_recv_initial_metadata_delegate grpcsharp_call_recv_initial_metadata; + public readonly Delegates.grpcsharp_call_start_serverside_delegate grpcsharp_call_start_serverside; + public readonly Delegates.grpcsharp_call_send_initial_metadata_delegate grpcsharp_call_send_initial_metadata; + public readonly Delegates.grpcsharp_call_set_credentials_delegate grpcsharp_call_set_credentials; + public readonly Delegates.grpcsharp_call_get_peer_delegate grpcsharp_call_get_peer; + public readonly Delegates.grpcsharp_call_destroy_delegate grpcsharp_call_destroy; + + public readonly Delegates.grpcsharp_channel_args_create_delegate grpcsharp_channel_args_create; + public readonly Delegates.grpcsharp_channel_args_set_string_delegate grpcsharp_channel_args_set_string; + public readonly Delegates.grpcsharp_channel_args_set_integer_delegate grpcsharp_channel_args_set_integer; + public readonly Delegates.grpcsharp_channel_args_destroy_delegate grpcsharp_channel_args_destroy; + + public readonly Delegates.grpcsharp_ssl_credentials_create_delegate grpcsharp_ssl_credentials_create; + public readonly Delegates.grpcsharp_composite_channel_credentials_create_delegate grpcsharp_composite_channel_credentials_create; + public readonly Delegates.grpcsharp_channel_credentials_release_delegate grpcsharp_channel_credentials_release; + + public readonly Delegates.grpcsharp_insecure_channel_create_delegate grpcsharp_insecure_channel_create; + public readonly Delegates.grpcsharp_secure_channel_create_delegate grpcsharp_secure_channel_create; + public readonly Delegates.grpcsharp_channel_create_call_delegate grpcsharp_channel_create_call; + public readonly Delegates.grpcsharp_channel_check_connectivity_state_delegate grpcsharp_channel_check_connectivity_state; + public readonly Delegates.grpcsharp_channel_watch_connectivity_state_delegate grpcsharp_channel_watch_connectivity_state; + public readonly Delegates.grpcsharp_channel_get_target_delegate grpcsharp_channel_get_target; + public readonly Delegates.grpcsharp_channel_destroy_delegate grpcsharp_channel_destroy; + + public readonly Delegates.grpcsharp_sizeof_grpc_event_delegate grpcsharp_sizeof_grpc_event; + + public readonly Delegates.grpcsharp_completion_queue_create_delegate grpcsharp_completion_queue_create; + public readonly Delegates.grpcsharp_completion_queue_shutdown_delegate grpcsharp_completion_queue_shutdown; + public readonly Delegates.grpcsharp_completion_queue_next_delegate grpcsharp_completion_queue_next; + public readonly Delegates.grpcsharp_completion_queue_pluck_delegate grpcsharp_completion_queue_pluck; + public readonly Delegates.grpcsharp_completion_queue_destroy_delegate grpcsharp_completion_queue_destroy; + + public readonly Delegates.gprsharp_free_delegate gprsharp_free; + + public readonly Delegates.grpcsharp_metadata_array_create_delegate grpcsharp_metadata_array_create; + public readonly Delegates.grpcsharp_metadata_array_add_delegate grpcsharp_metadata_array_add; + public readonly Delegates.grpcsharp_metadata_array_count_delegate grpcsharp_metadata_array_count; + public readonly Delegates.grpcsharp_metadata_array_get_key_delegate grpcsharp_metadata_array_get_key; + public readonly Delegates.grpcsharp_metadata_array_get_value_delegate grpcsharp_metadata_array_get_value; + public readonly Delegates.grpcsharp_metadata_array_get_value_length_delegate grpcsharp_metadata_array_get_value_length; + public readonly Delegates.grpcsharp_metadata_array_destroy_full_delegate grpcsharp_metadata_array_destroy_full; + + public readonly Delegates.grpcsharp_redirect_log_delegate grpcsharp_redirect_log; + + public readonly Delegates.grpcsharp_metadata_credentials_create_from_plugin_delegate grpcsharp_metadata_credentials_create_from_plugin; + public readonly Delegates.grpcsharp_metadata_credentials_notify_from_plugin_delegate grpcsharp_metadata_credentials_notify_from_plugin; + + public readonly Delegates.grpcsharp_ssl_server_credentials_create_delegate grpcsharp_ssl_server_credentials_create; + public readonly Delegates.grpcsharp_server_credentials_release_delegate grpcsharp_server_credentials_release; + + public readonly Delegates.grpcsharp_server_create_delegate grpcsharp_server_create; + public readonly Delegates.grpcsharp_server_add_insecure_http2_port_delegate grpcsharp_server_add_insecure_http2_port; + public readonly Delegates.grpcsharp_server_add_secure_http2_port_delegate grpcsharp_server_add_secure_http2_port; + public readonly Delegates.grpcsharp_server_start_delegate grpcsharp_server_start; + public readonly Delegates.grpcsharp_server_request_call_delegate grpcsharp_server_request_call; + public readonly Delegates.grpcsharp_server_cancel_all_calls_delegate grpcsharp_server_cancel_all_calls; + public readonly Delegates.grpcsharp_server_shutdown_and_notify_callback_delegate grpcsharp_server_shutdown_and_notify_callback; + public readonly Delegates.grpcsharp_server_destroy_delegate grpcsharp_server_destroy; + + public readonly Delegates.gprsharp_now_delegate gprsharp_now; + public readonly Delegates.gprsharp_inf_future_delegate gprsharp_inf_future; + public readonly Delegates.gprsharp_inf_past_delegate gprsharp_inf_past; + public readonly Delegates.gprsharp_convert_clock_type_delegate gprsharp_convert_clock_type; + public readonly Delegates.gprsharp_sizeof_timespec_delegate gprsharp_sizeof_timespec; + + public readonly Delegates.grpcsharp_test_callback_delegate grpcsharp_test_callback; + public readonly Delegates.grpcsharp_test_nop_delegate grpcsharp_test_nop; + + #endregion + + public NativeMethods(UnmanagedLibrary library) + { + if (PlatformApis.IsLinux || PlatformApis.IsMacOSX) + { + this.grpcsharp_init = GetMethodDelegate(library); + this.grpcsharp_shutdown = GetMethodDelegate(library); + this.grpcsharp_version_string = GetMethodDelegate(library); + + this.grpcsharp_batch_context_create = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_initial_metadata = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_message_length = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_message_to_buffer = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_status_on_client_status = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_status_on_client_details = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_status_on_client_trailing_metadata = GetMethodDelegate(library); + this.grpcsharp_batch_context_server_rpc_new_call = GetMethodDelegate(library); + this.grpcsharp_batch_context_server_rpc_new_method = GetMethodDelegate(library); + this.grpcsharp_batch_context_server_rpc_new_host = GetMethodDelegate(library); + this.grpcsharp_batch_context_server_rpc_new_deadline = GetMethodDelegate(library); + this.grpcsharp_batch_context_server_rpc_new_request_metadata = GetMethodDelegate(library); + this.grpcsharp_batch_context_recv_close_on_server_cancelled = GetMethodDelegate(library); + this.grpcsharp_batch_context_destroy = GetMethodDelegate(library); + + this.grpcsharp_composite_call_credentials_create = GetMethodDelegate(library); + this.grpcsharp_call_credentials_release = GetMethodDelegate(library); + + this.grpcsharp_call_cancel = GetMethodDelegate(library); + this.grpcsharp_call_cancel_with_status = GetMethodDelegate(library); + this.grpcsharp_call_start_unary = GetMethodDelegate(library); + this.grpcsharp_call_start_client_streaming = GetMethodDelegate(library); + this.grpcsharp_call_start_server_streaming = GetMethodDelegate(library); + this.grpcsharp_call_start_duplex_streaming = GetMethodDelegate(library); + this.grpcsharp_call_send_message = GetMethodDelegate(library); + this.grpcsharp_call_send_close_from_client = GetMethodDelegate(library); + this.grpcsharp_call_send_status_from_server = GetMethodDelegate(library); + this.grpcsharp_call_recv_message = GetMethodDelegate(library); + this.grpcsharp_call_recv_initial_metadata = GetMethodDelegate(library); + this.grpcsharp_call_start_serverside = GetMethodDelegate(library); + this.grpcsharp_call_send_initial_metadata = GetMethodDelegate(library); + this.grpcsharp_call_set_credentials = GetMethodDelegate(library); + this.grpcsharp_call_get_peer = GetMethodDelegate(library); + this.grpcsharp_call_destroy = GetMethodDelegate(library); + + this.grpcsharp_channel_args_create = GetMethodDelegate(library); + this.grpcsharp_channel_args_set_string = GetMethodDelegate(library); + this.grpcsharp_channel_args_set_integer = GetMethodDelegate(library); + this.grpcsharp_channel_args_destroy = GetMethodDelegate(library); + + this.grpcsharp_ssl_credentials_create = GetMethodDelegate(library); + this.grpcsharp_composite_channel_credentials_create = GetMethodDelegate(library); + this.grpcsharp_channel_credentials_release = GetMethodDelegate(library); + + this.grpcsharp_insecure_channel_create = GetMethodDelegate(library); + this.grpcsharp_secure_channel_create = GetMethodDelegate(library); + this.grpcsharp_channel_create_call = GetMethodDelegate(library); + this.grpcsharp_channel_check_connectivity_state = GetMethodDelegate(library); + this.grpcsharp_channel_watch_connectivity_state = GetMethodDelegate(library); + this.grpcsharp_channel_get_target = GetMethodDelegate(library); + this.grpcsharp_channel_destroy = GetMethodDelegate(library); + + this.grpcsharp_sizeof_grpc_event = GetMethodDelegate(library); + + this.grpcsharp_completion_queue_create = GetMethodDelegate(library); + this.grpcsharp_completion_queue_shutdown = GetMethodDelegate(library); + this.grpcsharp_completion_queue_next = GetMethodDelegate(library); + this.grpcsharp_completion_queue_pluck = GetMethodDelegate(library); + this.grpcsharp_completion_queue_destroy = GetMethodDelegate(library); + + this.gprsharp_free = GetMethodDelegate(library); + + this.grpcsharp_metadata_array_create = GetMethodDelegate(library); + this.grpcsharp_metadata_array_add = GetMethodDelegate(library); + this.grpcsharp_metadata_array_count = GetMethodDelegate(library); + this.grpcsharp_metadata_array_get_key = GetMethodDelegate(library); + this.grpcsharp_metadata_array_get_value = GetMethodDelegate(library); + this.grpcsharp_metadata_array_get_value_length = GetMethodDelegate(library); + this.grpcsharp_metadata_array_destroy_full = GetMethodDelegate(library); + + this.grpcsharp_redirect_log = GetMethodDelegate(library); + + this.grpcsharp_metadata_credentials_create_from_plugin = GetMethodDelegate(library); + this.grpcsharp_metadata_credentials_notify_from_plugin = GetMethodDelegate(library); + + this.grpcsharp_ssl_server_credentials_create = GetMethodDelegate(library); + this.grpcsharp_server_credentials_release = GetMethodDelegate(library); + + this.grpcsharp_server_create = GetMethodDelegate(library); + this.grpcsharp_server_add_insecure_http2_port = GetMethodDelegate(library); + this.grpcsharp_server_add_secure_http2_port = GetMethodDelegate(library); + this.grpcsharp_server_start = GetMethodDelegate(library); + this.grpcsharp_server_request_call = GetMethodDelegate(library); + this.grpcsharp_server_cancel_all_calls = GetMethodDelegate(library); + this.grpcsharp_server_shutdown_and_notify_callback = GetMethodDelegate(library); + this.grpcsharp_server_destroy = GetMethodDelegate(library); + + this.gprsharp_now = GetMethodDelegate(library); + this.gprsharp_inf_future = GetMethodDelegate(library); + this.gprsharp_inf_past = GetMethodDelegate(library); + this.gprsharp_convert_clock_type = GetMethodDelegate(library); + this.gprsharp_sizeof_timespec = GetMethodDelegate(library); + + this.grpcsharp_test_callback = GetMethodDelegate(library); + this.grpcsharp_test_nop = GetMethodDelegate(library); + } + else + { + // Windows or fallback + this.grpcsharp_init = PInvokeMethods.grpcsharp_init; + this.grpcsharp_shutdown = PInvokeMethods.grpcsharp_shutdown; + this.grpcsharp_version_string = PInvokeMethods.grpcsharp_version_string; + + this.grpcsharp_batch_context_create = PInvokeMethods.grpcsharp_batch_context_create; + this.grpcsharp_batch_context_recv_initial_metadata = PInvokeMethods.grpcsharp_batch_context_recv_initial_metadata; + this.grpcsharp_batch_context_recv_message_length = PInvokeMethods.grpcsharp_batch_context_recv_message_length; + this.grpcsharp_batch_context_recv_message_to_buffer = PInvokeMethods.grpcsharp_batch_context_recv_message_to_buffer; + this.grpcsharp_batch_context_recv_status_on_client_status = PInvokeMethods.grpcsharp_batch_context_recv_status_on_client_status; + this.grpcsharp_batch_context_recv_status_on_client_details = PInvokeMethods.grpcsharp_batch_context_recv_status_on_client_details; + this.grpcsharp_batch_context_recv_status_on_client_trailing_metadata = PInvokeMethods.grpcsharp_batch_context_recv_status_on_client_trailing_metadata; + this.grpcsharp_batch_context_server_rpc_new_call = PInvokeMethods.grpcsharp_batch_context_server_rpc_new_call; + this.grpcsharp_batch_context_server_rpc_new_method = PInvokeMethods.grpcsharp_batch_context_server_rpc_new_method; + this.grpcsharp_batch_context_server_rpc_new_host = PInvokeMethods.grpcsharp_batch_context_server_rpc_new_host; + this.grpcsharp_batch_context_server_rpc_new_deadline = PInvokeMethods.grpcsharp_batch_context_server_rpc_new_deadline; + this.grpcsharp_batch_context_server_rpc_new_request_metadata = PInvokeMethods.grpcsharp_batch_context_server_rpc_new_request_metadata; + this.grpcsharp_batch_context_recv_close_on_server_cancelled = PInvokeMethods.grpcsharp_batch_context_recv_close_on_server_cancelled; + this.grpcsharp_batch_context_destroy = PInvokeMethods.grpcsharp_batch_context_destroy; + + this.grpcsharp_composite_call_credentials_create = PInvokeMethods.grpcsharp_composite_call_credentials_create; + this.grpcsharp_call_credentials_release = PInvokeMethods.grpcsharp_call_credentials_release; + + this.grpcsharp_call_cancel = PInvokeMethods.grpcsharp_call_cancel; + this.grpcsharp_call_cancel_with_status = PInvokeMethods.grpcsharp_call_cancel_with_status; + this.grpcsharp_call_start_unary = PInvokeMethods.grpcsharp_call_start_unary; + this.grpcsharp_call_start_client_streaming = PInvokeMethods.grpcsharp_call_start_client_streaming; + this.grpcsharp_call_start_server_streaming = PInvokeMethods.grpcsharp_call_start_server_streaming; + this.grpcsharp_call_start_duplex_streaming = PInvokeMethods.grpcsharp_call_start_duplex_streaming; + this.grpcsharp_call_send_message = PInvokeMethods.grpcsharp_call_send_message; + this.grpcsharp_call_send_close_from_client = PInvokeMethods.grpcsharp_call_send_close_from_client; + this.grpcsharp_call_send_status_from_server = PInvokeMethods.grpcsharp_call_send_status_from_server; + this.grpcsharp_call_recv_message = PInvokeMethods.grpcsharp_call_recv_message; + this.grpcsharp_call_recv_initial_metadata = PInvokeMethods.grpcsharp_call_recv_initial_metadata; + this.grpcsharp_call_start_serverside = PInvokeMethods.grpcsharp_call_start_serverside; + this.grpcsharp_call_send_initial_metadata = PInvokeMethods.grpcsharp_call_send_initial_metadata; + this.grpcsharp_call_set_credentials = PInvokeMethods.grpcsharp_call_set_credentials; + this.grpcsharp_call_get_peer = PInvokeMethods.grpcsharp_call_get_peer; + this.grpcsharp_call_destroy = PInvokeMethods.grpcsharp_call_destroy; + + this.grpcsharp_channel_args_create = PInvokeMethods.grpcsharp_channel_args_create; + this.grpcsharp_channel_args_set_string = PInvokeMethods.grpcsharp_channel_args_set_string; + this.grpcsharp_channel_args_set_integer = PInvokeMethods.grpcsharp_channel_args_set_integer; + this.grpcsharp_channel_args_destroy = PInvokeMethods.grpcsharp_channel_args_destroy; + + this.grpcsharp_ssl_credentials_create = PInvokeMethods.grpcsharp_ssl_credentials_create; + this.grpcsharp_composite_channel_credentials_create = PInvokeMethods.grpcsharp_composite_channel_credentials_create; + this.grpcsharp_channel_credentials_release = PInvokeMethods.grpcsharp_channel_credentials_release; + + this.grpcsharp_insecure_channel_create = PInvokeMethods.grpcsharp_insecure_channel_create; + this.grpcsharp_secure_channel_create = PInvokeMethods.grpcsharp_secure_channel_create; + this.grpcsharp_channel_create_call = PInvokeMethods.grpcsharp_channel_create_call; + this.grpcsharp_channel_check_connectivity_state = PInvokeMethods.grpcsharp_channel_check_connectivity_state; + this.grpcsharp_channel_watch_connectivity_state = PInvokeMethods.grpcsharp_channel_watch_connectivity_state; + this.grpcsharp_channel_get_target = PInvokeMethods.grpcsharp_channel_get_target; + this.grpcsharp_channel_destroy = PInvokeMethods.grpcsharp_channel_destroy; + + this.grpcsharp_sizeof_grpc_event = PInvokeMethods.grpcsharp_sizeof_grpc_event; + + this.grpcsharp_completion_queue_create = PInvokeMethods.grpcsharp_completion_queue_create; + this.grpcsharp_completion_queue_shutdown = PInvokeMethods.grpcsharp_completion_queue_shutdown; + this.grpcsharp_completion_queue_next = PInvokeMethods.grpcsharp_completion_queue_next; + this.grpcsharp_completion_queue_pluck = PInvokeMethods.grpcsharp_completion_queue_pluck; + this.grpcsharp_completion_queue_destroy = PInvokeMethods.grpcsharp_completion_queue_destroy; + + this.gprsharp_free = PInvokeMethods.gprsharp_free; + + this.grpcsharp_metadata_array_create = PInvokeMethods.grpcsharp_metadata_array_create; + this.grpcsharp_metadata_array_add = PInvokeMethods.grpcsharp_metadata_array_add; + this.grpcsharp_metadata_array_count = PInvokeMethods.grpcsharp_metadata_array_count; + this.grpcsharp_metadata_array_get_key = PInvokeMethods.grpcsharp_metadata_array_get_key; + this.grpcsharp_metadata_array_get_value = PInvokeMethods.grpcsharp_metadata_array_get_value; + this.grpcsharp_metadata_array_get_value_length = PInvokeMethods.grpcsharp_metadata_array_get_value_length; + this.grpcsharp_metadata_array_destroy_full = PInvokeMethods.grpcsharp_metadata_array_destroy_full; + + this.grpcsharp_redirect_log = PInvokeMethods.grpcsharp_redirect_log; + + this.grpcsharp_metadata_credentials_create_from_plugin = PInvokeMethods.grpcsharp_metadata_credentials_create_from_plugin; + this.grpcsharp_metadata_credentials_notify_from_plugin = PInvokeMethods.grpcsharp_metadata_credentials_notify_from_plugin; + + this.grpcsharp_ssl_server_credentials_create = PInvokeMethods.grpcsharp_ssl_server_credentials_create; + this.grpcsharp_server_credentials_release = PInvokeMethods.grpcsharp_server_credentials_release; + + this.grpcsharp_server_create = PInvokeMethods.grpcsharp_server_create; + this.grpcsharp_server_add_insecure_http2_port = PInvokeMethods.grpcsharp_server_add_insecure_http2_port; + this.grpcsharp_server_add_secure_http2_port = PInvokeMethods.grpcsharp_server_add_secure_http2_port; + this.grpcsharp_server_start = PInvokeMethods.grpcsharp_server_start; + this.grpcsharp_server_request_call = PInvokeMethods.grpcsharp_server_request_call; + this.grpcsharp_server_cancel_all_calls = PInvokeMethods.grpcsharp_server_cancel_all_calls; + this.grpcsharp_server_shutdown_and_notify_callback = PInvokeMethods.grpcsharp_server_shutdown_and_notify_callback; + this.grpcsharp_server_destroy = PInvokeMethods.grpcsharp_server_destroy; + + this.gprsharp_now = PInvokeMethods.gprsharp_now; + this.gprsharp_inf_future = PInvokeMethods.gprsharp_inf_future; + this.gprsharp_inf_past = PInvokeMethods.gprsharp_inf_past; + this.gprsharp_convert_clock_type = PInvokeMethods.gprsharp_convert_clock_type; + this.gprsharp_sizeof_timespec = PInvokeMethods.gprsharp_sizeof_timespec; + + this.grpcsharp_test_callback = PInvokeMethods.grpcsharp_test_callback; + this.grpcsharp_test_nop = PInvokeMethods.grpcsharp_test_nop; + } + } + + /// + /// Gets singleton instance of this class. + /// + public static NativeMethods Get() + { + return NativeExtension.Get().NativeMethods; + } + + static T GetMethodDelegate(UnmanagedLibrary library) + where T : class + { + var methodName = RemoveStringSuffix(typeof(T).Name, "_delegate"); + return library.GetNativeMethodDelegate(methodName); + } + + static string RemoveStringSuffix(string str, string toRemove) + { + if (!str.EndsWith(toRemove)) + { + return str; + } + return str.Substring(0, str.Length - toRemove.Length); + } + + /// + /// Delegate types for all published native methods. Declared under inner class to prevent scope pollution. + /// + public class Delegates + { + public delegate void grpcsharp_init_delegate(); + public delegate void grpcsharp_shutdown_delegate(); + public delegate IntPtr grpcsharp_version_string_delegate(); // returns not-owned const char* + + public delegate BatchContextSafeHandle grpcsharp_batch_context_create_delegate(); + public delegate IntPtr grpcsharp_batch_context_recv_initial_metadata_delegate(BatchContextSafeHandle ctx); + public delegate IntPtr grpcsharp_batch_context_recv_message_length_delegate(BatchContextSafeHandle ctx); + public delegate void grpcsharp_batch_context_recv_message_to_buffer_delegate(BatchContextSafeHandle ctx, byte[] buffer, UIntPtr bufferLen); + public delegate StatusCode grpcsharp_batch_context_recv_status_on_client_status_delegate(BatchContextSafeHandle ctx); + public delegate IntPtr grpcsharp_batch_context_recv_status_on_client_details_delegate(BatchContextSafeHandle ctx); // returns const char* + public delegate IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata_delegate(BatchContextSafeHandle ctx); + public delegate CallSafeHandle grpcsharp_batch_context_server_rpc_new_call_delegate(BatchContextSafeHandle ctx); + public delegate IntPtr grpcsharp_batch_context_server_rpc_new_method_delegate(BatchContextSafeHandle ctx); // returns const char* + public delegate IntPtr grpcsharp_batch_context_server_rpc_new_host_delegate(BatchContextSafeHandle ctx); // returns const char* + public delegate Timespec grpcsharp_batch_context_server_rpc_new_deadline_delegate(BatchContextSafeHandle ctx); + public delegate IntPtr grpcsharp_batch_context_server_rpc_new_request_metadata_delegate(BatchContextSafeHandle ctx); + public delegate int grpcsharp_batch_context_recv_close_on_server_cancelled_delegate(BatchContextSafeHandle ctx); + public delegate void grpcsharp_batch_context_destroy_delegate(IntPtr ctx); + + public delegate CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create_delegate(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2); + public delegate void grpcsharp_call_credentials_release_delegate(IntPtr credentials); + + public delegate GRPCCallError grpcsharp_call_cancel_delegate(CallSafeHandle call); + public delegate GRPCCallError grpcsharp_call_cancel_with_status_delegate(CallSafeHandle call, StatusCode status, string description); + public delegate GRPCCallError grpcsharp_call_start_unary_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags); + public delegate GRPCCallError grpcsharp_call_start_client_streaming_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); + public delegate GRPCCallError grpcsharp_call_start_server_streaming_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, + MetadataArraySafeHandle metadataArray, WriteFlags writeFlags); + public delegate GRPCCallError grpcsharp_call_start_duplex_streaming_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); + public delegate GRPCCallError grpcsharp_call_send_message_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata); + public delegate GRPCCallError grpcsharp_call_send_close_from_client_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx); + public delegate GRPCCallError grpcsharp_call_send_status_from_server_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata); + public delegate GRPCCallError grpcsharp_call_recv_message_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx); + public delegate GRPCCallError grpcsharp_call_recv_initial_metadata_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx); + public delegate GRPCCallError grpcsharp_call_start_serverside_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx); + public delegate GRPCCallError grpcsharp_call_send_initial_metadata_delegate(CallSafeHandle call, + BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); + public delegate GRPCCallError grpcsharp_call_set_credentials_delegate(CallSafeHandle call, CallCredentialsSafeHandle credentials); + public delegate CStringSafeHandle grpcsharp_call_get_peer_delegate(CallSafeHandle call); + public delegate void grpcsharp_call_destroy_delegate(IntPtr call); + + public delegate ChannelArgsSafeHandle grpcsharp_channel_args_create_delegate(UIntPtr numArgs); + public delegate void grpcsharp_channel_args_set_string_delegate(ChannelArgsSafeHandle args, UIntPtr index, string key, string value); + public delegate void grpcsharp_channel_args_set_integer_delegate(ChannelArgsSafeHandle args, UIntPtr index, string key, int value); + public delegate void grpcsharp_channel_args_destroy_delegate(IntPtr args); + + public delegate ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create_delegate(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey); + public delegate ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create_delegate(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds); + public delegate void grpcsharp_channel_credentials_release_delegate(IntPtr credentials); + + public delegate ChannelSafeHandle grpcsharp_insecure_channel_create_delegate(string target, ChannelArgsSafeHandle channelArgs); + public delegate ChannelSafeHandle grpcsharp_secure_channel_create_delegate(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs); + public delegate CallSafeHandle grpcsharp_channel_create_call_delegate(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline); + public delegate ChannelState grpcsharp_channel_check_connectivity_state_delegate(ChannelSafeHandle channel, int tryToConnect); + public delegate void grpcsharp_channel_watch_connectivity_state_delegate(ChannelSafeHandle channel, ChannelState lastObservedState, + Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); + public delegate CStringSafeHandle grpcsharp_channel_get_target_delegate(ChannelSafeHandle call); + public delegate void grpcsharp_channel_destroy_delegate(IntPtr channel); + + public delegate int grpcsharp_sizeof_grpc_event_delegate(); + + public delegate CompletionQueueSafeHandle grpcsharp_completion_queue_create_delegate(); + public delegate void grpcsharp_completion_queue_shutdown_delegate(CompletionQueueSafeHandle cq); + public delegate CompletionQueueEvent grpcsharp_completion_queue_next_delegate(CompletionQueueSafeHandle cq); + public delegate CompletionQueueEvent grpcsharp_completion_queue_pluck_delegate(CompletionQueueSafeHandle cq, IntPtr tag); + public delegate void grpcsharp_completion_queue_destroy_delegate(IntPtr cq); + + public delegate void gprsharp_free_delegate(IntPtr ptr); + + public delegate MetadataArraySafeHandle grpcsharp_metadata_array_create_delegate(UIntPtr capacity); + public delegate void grpcsharp_metadata_array_add_delegate(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength); + public delegate UIntPtr grpcsharp_metadata_array_count_delegate(IntPtr metadataArray); + public delegate IntPtr grpcsharp_metadata_array_get_key_delegate(IntPtr metadataArray, UIntPtr index); + public delegate IntPtr grpcsharp_metadata_array_get_value_delegate(IntPtr metadataArray, UIntPtr index); + public delegate UIntPtr grpcsharp_metadata_array_get_value_length_delegate(IntPtr metadataArray, UIntPtr index); + public delegate void grpcsharp_metadata_array_destroy_full_delegate(IntPtr array); + + public delegate void grpcsharp_redirect_log_delegate(GprLogDelegate callback); + + public delegate CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin_delegate(NativeMetadataInterceptor interceptor); + public delegate void grpcsharp_metadata_credentials_notify_from_plugin_delegate(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails); + + public delegate ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create_delegate(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, bool forceClientAuth); + public delegate void grpcsharp_server_credentials_release_delegate(IntPtr credentials); + + public delegate ServerSafeHandle grpcsharp_server_create_delegate(CompletionQueueSafeHandle cq, ChannelArgsSafeHandle args); + public delegate int grpcsharp_server_add_insecure_http2_port_delegate(ServerSafeHandle server, string addr); + public delegate int grpcsharp_server_add_secure_http2_port_delegate(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds); + public delegate void grpcsharp_server_start_delegate(ServerSafeHandle server); + public delegate GRPCCallError grpcsharp_server_request_call_delegate(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); + public delegate void grpcsharp_server_cancel_all_calls_delegate(ServerSafeHandle server); + public delegate void grpcsharp_server_shutdown_and_notify_callback_delegate(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); + public delegate void grpcsharp_server_destroy_delegate(IntPtr server); + + public delegate Timespec gprsharp_now_delegate(GPRClockType clockType); + public delegate Timespec gprsharp_inf_future_delegate(GPRClockType clockType); + public delegate Timespec gprsharp_inf_past_delegate(GPRClockType clockType); + + public delegate Timespec gprsharp_convert_clock_type_delegate(Timespec t, GPRClockType targetClock); + public delegate int gprsharp_sizeof_timespec_delegate(); + + public delegate GRPCCallError grpcsharp_test_callback_delegate([MarshalAs(UnmanagedType.FunctionPtr)] OpCompletionDelegate callback); + public delegate IntPtr grpcsharp_test_nop_delegate(IntPtr ptr); + } + + /// + /// Default PInvoke bindings for native methods that are used on Windows. + /// Alternatively, they can also be used as a fallback on Mono + /// (if libgrpc_csharp_ext is installed on your system, or is made accessible through e.g. LD_LIBRARY_PATH environment variable + /// or using Mono's dllMap feature). + /// + private class PInvokeMethods + { + // Environment + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_init(); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_shutdown(); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_version_string(); // returns not-owned const char* + + // BatchContextSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern BatchContextSafeHandle grpcsharp_batch_context_create(); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_recv_initial_metadata(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_recv_message_length(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_batch_context_recv_message_to_buffer(BatchContextSafeHandle ctx, byte[] buffer, UIntPtr bufferLen); + + [DllImport("grpc_csharp_ext.dll")] + public static extern StatusCode grpcsharp_batch_context_recv_status_on_client_status(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_details(BatchContextSafeHandle ctx); // returns const char* + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_recv_status_on_client_trailing_metadata(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern CallSafeHandle grpcsharp_batch_context_server_rpc_new_call(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_server_rpc_new_method(BatchContextSafeHandle ctx); // returns const char* + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_server_rpc_new_host(BatchContextSafeHandle ctx); // returns const char* + + [DllImport("grpc_csharp_ext.dll")] + public static extern Timespec grpcsharp_batch_context_server_rpc_new_deadline(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_batch_context_server_rpc_new_request_metadata(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern int grpcsharp_batch_context_recv_close_on_server_cancelled(BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_batch_context_destroy(IntPtr ctx); + + // CallCredentialsSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern CallCredentialsSafeHandle grpcsharp_composite_call_credentials_create(CallCredentialsSafeHandle creds1, CallCredentialsSafeHandle creds2); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_call_credentials_release(IntPtr credentials); + + // CallSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_cancel(CallSafeHandle call); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_cancel_with_status(CallSafeHandle call, StatusCode status, string description); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_start_unary(CallSafeHandle call, + BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_start_client_streaming(CallSafeHandle call, + BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_start_server_streaming(CallSafeHandle call, + BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, + MetadataArraySafeHandle metadataArray, WriteFlags writeFlags); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_start_duplex_streaming(CallSafeHandle call, + BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_send_message(CallSafeHandle call, + BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_send_close_from_client(CallSafeHandle call, + BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_send_status_from_server(CallSafeHandle call, + BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_recv_message(CallSafeHandle call, + BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, + BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_start_serverside(CallSafeHandle call, + BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_send_initial_metadata(CallSafeHandle call, + BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_call_set_credentials(CallSafeHandle call, CallCredentialsSafeHandle credentials); + + [DllImport("grpc_csharp_ext.dll")] + public static extern CStringSafeHandle grpcsharp_call_get_peer(CallSafeHandle call); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_call_destroy(IntPtr call); + + // ChannelArgsSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern ChannelArgsSafeHandle grpcsharp_channel_args_create(UIntPtr numArgs); + + [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] + public static extern void grpcsharp_channel_args_set_string(ChannelArgsSafeHandle args, UIntPtr index, string key, string value); + + [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] + public static extern void grpcsharp_channel_args_set_integer(ChannelArgsSafeHandle args, UIntPtr index, string key, int value); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_channel_args_destroy(IntPtr args); + + // ChannelCredentialsSafeHandle + + [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] + public static extern ChannelCredentialsSafeHandle grpcsharp_ssl_credentials_create(string pemRootCerts, string keyCertPairCertChain, string keyCertPairPrivateKey); + + [DllImport("grpc_csharp_ext.dll")] + public static extern ChannelCredentialsSafeHandle grpcsharp_composite_channel_credentials_create(ChannelCredentialsSafeHandle channelCreds, CallCredentialsSafeHandle callCreds); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_channel_credentials_release(IntPtr credentials); + + // ChannelSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern ChannelSafeHandle grpcsharp_insecure_channel_create(string target, ChannelArgsSafeHandle channelArgs); + + [DllImport("grpc_csharp_ext.dll")] + public static extern ChannelSafeHandle grpcsharp_secure_channel_create(ChannelCredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs); + + [DllImport("grpc_csharp_ext.dll")] + public static extern CallSafeHandle grpcsharp_channel_create_call(ChannelSafeHandle channel, CallSafeHandle parentCall, ContextPropagationFlags propagationMask, CompletionQueueSafeHandle cq, string method, string host, Timespec deadline); + + [DllImport("grpc_csharp_ext.dll")] + public static extern ChannelState grpcsharp_channel_check_connectivity_state(ChannelSafeHandle channel, int tryToConnect); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_channel_watch_connectivity_state(ChannelSafeHandle channel, ChannelState lastObservedState, + Timespec deadline, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern CStringSafeHandle grpcsharp_channel_get_target(ChannelSafeHandle call); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_channel_destroy(IntPtr channel); + + // CompletionQueueEvent + + [DllImport("grpc_csharp_ext.dll")] + public static extern int grpcsharp_sizeof_grpc_event(); + + // CompletionQueueSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern CompletionQueueSafeHandle grpcsharp_completion_queue_create(); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_completion_queue_shutdown(CompletionQueueSafeHandle cq); + + [DllImport("grpc_csharp_ext.dll")] + public static extern CompletionQueueEvent grpcsharp_completion_queue_next(CompletionQueueSafeHandle cq); + + [DllImport("grpc_csharp_ext.dll")] + public static extern CompletionQueueEvent grpcsharp_completion_queue_pluck(CompletionQueueSafeHandle cq, IntPtr tag); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_completion_queue_destroy(IntPtr cq); + + // CStringSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern void gprsharp_free(IntPtr ptr); + + // MetadataArraySafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern MetadataArraySafeHandle grpcsharp_metadata_array_create(UIntPtr capacity); + + [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] + public static extern void grpcsharp_metadata_array_add(MetadataArraySafeHandle array, string key, byte[] value, UIntPtr valueLength); + + [DllImport("grpc_csharp_ext.dll")] + public static extern UIntPtr grpcsharp_metadata_array_count(IntPtr metadataArray); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_metadata_array_get_key(IntPtr metadataArray, UIntPtr index); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_metadata_array_get_value(IntPtr metadataArray, UIntPtr index); + + [DllImport("grpc_csharp_ext.dll")] + public static extern UIntPtr grpcsharp_metadata_array_get_value_length(IntPtr metadataArray, UIntPtr index); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_metadata_array_destroy_full(IntPtr array); + + // NativeLogRedirector + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_redirect_log(GprLogDelegate callback); + + // NativeMetadataCredentialsPlugin + + [DllImport("grpc_csharp_ext.dll")] + public static extern CallCredentialsSafeHandle grpcsharp_metadata_credentials_create_from_plugin(NativeMetadataInterceptor interceptor); + + [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] + public static extern void grpcsharp_metadata_credentials_notify_from_plugin(IntPtr callbackPtr, IntPtr userData, MetadataArraySafeHandle metadataArray, StatusCode statusCode, string errorDetails); + + // ServerCredentialsSafeHandle + + [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] + public static extern ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, bool forceClientAuth); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_server_credentials_release(IntPtr credentials); + + // ServerSafeHandle + + [DllImport("grpc_csharp_ext.dll")] + public static extern ServerSafeHandle grpcsharp_server_create(CompletionQueueSafeHandle cq, ChannelArgsSafeHandle args); + + [DllImport("grpc_csharp_ext.dll")] + public static extern int grpcsharp_server_add_insecure_http2_port(ServerSafeHandle server, string addr); + + [DllImport("grpc_csharp_ext.dll")] + public static extern int grpcsharp_server_add_secure_http2_port(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_server_start(ServerSafeHandle server); + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_server_request_call(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_server_cancel_all_calls(ServerSafeHandle server); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_server_shutdown_and_notify_callback(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); + + [DllImport("grpc_csharp_ext.dll")] + public static extern void grpcsharp_server_destroy(IntPtr server); + + // Timespec + + [DllImport("grpc_csharp_ext.dll")] + public static extern Timespec gprsharp_now(GPRClockType clockType); + + [DllImport("grpc_csharp_ext.dll")] + public static extern Timespec gprsharp_inf_future(GPRClockType clockType); + + [DllImport("grpc_csharp_ext.dll")] + public static extern Timespec gprsharp_inf_past(GPRClockType clockType); + + [DllImport("grpc_csharp_ext.dll")] + public static extern Timespec gprsharp_convert_clock_type(Timespec t, GPRClockType targetClock); + + [DllImport("grpc_csharp_ext.dll")] + public static extern int gprsharp_sizeof_timespec(); + + // Testing + + [DllImport("grpc_csharp_ext.dll")] + public static extern GRPCCallError grpcsharp_test_callback([MarshalAs(UnmanagedType.FunctionPtr)] OpCompletionDelegate callback); + + [DllImport("grpc_csharp_ext.dll")] + public static extern IntPtr grpcsharp_test_nop(IntPtr ptr); + } + } +} diff --git a/src/csharp/Grpc.Core/Internal/PlatformApis.cs b/src/csharp/Grpc.Core/Internal/PlatformApis.cs new file mode 100644 index 00000000000..e6c5765b610 --- /dev/null +++ b/src/csharp/Grpc.Core/Internal/PlatformApis.cs @@ -0,0 +1,110 @@ +#region Copyright notice and license + +// Copyright 2015, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Threading; + +namespace Grpc.Core.Internal +{ + /// + /// Utility methods for detecting platform and architecture. + /// + internal static class PlatformApis + { + static readonly bool isLinux; + static readonly bool isMacOSX; + static readonly bool isWindows; + + static PlatformApis() + { + var platform = Environment.OSVersion.Platform; + + // PlatformID.MacOSX is never returned, commonly used trick is to identify Mac is by using uname. + isMacOSX = (platform == PlatformID.Unix && GetUname() == "Darwin"); + isLinux = (platform == PlatformID.Unix && !isMacOSX); + isWindows = (platform == PlatformID.Win32NT || platform == PlatformID.Win32S || platform == PlatformID.Win32Windows); + } + + public static bool IsLinux + { + get { return isLinux; } + } + + public static bool IsMacOSX + { + get { return isMacOSX; } + } + + public static bool IsWindows + { + get { return isWindows; } + } + + public static bool Is64Bit + { + get { return IntPtr.Size == 8; } + } + + [DllImport("libc")] + static extern int uname(IntPtr buf); + + static string GetUname() + { + var buffer = Marshal.AllocHGlobal(8192); + try + { + if (uname(buffer) == 0) + { + return Marshal.PtrToStringAnsi(buffer); + } + return string.Empty; + } + catch + { + return string.Empty; + } + finally + { + if (buffer != IntPtr.Zero) + { + Marshal.FreeHGlobal(buffer); + } + } + } + } +} diff --git a/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs index 51e352a18ba..d50e1c72698 100644 --- a/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs @@ -41,11 +41,7 @@ namespace Grpc.Core.Internal /// internal class ServerCredentialsSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll", CharSet = CharSet.Ansi)] - static extern ServerCredentialsSafeHandle grpcsharp_ssl_server_credentials_create(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, UIntPtr numKeyCertPairs, bool forceClientAuth); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_server_credentials_release(IntPtr credentials); + static readonly NativeMethods Native = NativeMethods.Get(); private ServerCredentialsSafeHandle() { @@ -54,15 +50,15 @@ namespace Grpc.Core.Internal public static ServerCredentialsSafeHandle CreateSslCredentials(string pemRootCerts, string[] keyCertPairCertChainArray, string[] keyCertPairPrivateKeyArray, bool forceClientAuth) { Preconditions.CheckArgument(keyCertPairCertChainArray.Length == keyCertPairPrivateKeyArray.Length); - return grpcsharp_ssl_server_credentials_create(pemRootCerts, - keyCertPairCertChainArray, keyCertPairPrivateKeyArray, - new UIntPtr((ulong)keyCertPairCertChainArray.Length), - forceClientAuth); + return Native.grpcsharp_ssl_server_credentials_create(pemRootCerts, + keyCertPairCertChainArray, keyCertPairPrivateKeyArray, + new UIntPtr((ulong)keyCertPairCertChainArray.Length), + forceClientAuth); } protected override bool ReleaseHandle() { - grpcsharp_server_credentials_release(handle); + Native.grpcsharp_server_credentials_release(handle); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs index 5ee7ac14e8f..6b5f70e2207 100644 --- a/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs @@ -44,29 +44,7 @@ namespace Grpc.Core.Internal /// internal sealed class ServerSafeHandle : SafeHandleZeroIsInvalid { - [DllImport("grpc_csharp_ext.dll")] - static extern ServerSafeHandle grpcsharp_server_create(CompletionQueueSafeHandle cq, ChannelArgsSafeHandle args); - - [DllImport("grpc_csharp_ext.dll")] - static extern int grpcsharp_server_add_insecure_http2_port(ServerSafeHandle server, string addr); - - [DllImport("grpc_csharp_ext.dll")] - static extern int grpcsharp_server_add_secure_http2_port(ServerSafeHandle server, string addr, ServerCredentialsSafeHandle creds); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_server_start(ServerSafeHandle server); - - [DllImport("grpc_csharp_ext.dll")] - static extern GRPCCallError grpcsharp_server_request_call(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_server_cancel_all_calls(ServerSafeHandle server); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_server_shutdown_and_notify_callback(ServerSafeHandle server, CompletionQueueSafeHandle cq, BatchContextSafeHandle ctx); - - [DllImport("grpc_csharp_ext.dll")] - static extern void grpcsharp_server_destroy(IntPtr server); + static readonly NativeMethods Native = NativeMethods.Get(); private ServerSafeHandle() { @@ -77,41 +55,41 @@ namespace Grpc.Core.Internal // Increment reference count for the native gRPC environment to make sure we don't do grpc_shutdown() before destroying the server handle. // Doing so would make object finalizer crash if we end up abandoning the handle. GrpcEnvironment.GrpcNativeInit(); - return grpcsharp_server_create(cq, args); + return Native.grpcsharp_server_create(cq, args); } public int AddInsecurePort(string addr) { - return grpcsharp_server_add_insecure_http2_port(this, addr); + return Native.grpcsharp_server_add_insecure_http2_port(this, addr); } public int AddSecurePort(string addr, ServerCredentialsSafeHandle credentials) { - return grpcsharp_server_add_secure_http2_port(this, addr, credentials); + return Native.grpcsharp_server_add_secure_http2_port(this, addr, credentials); } public void Start() { - grpcsharp_server_start(this); + Native.grpcsharp_server_start(this); } public void ShutdownAndNotify(BatchCompletionDelegate callback, GrpcEnvironment environment) { var ctx = BatchContextSafeHandle.Create(); environment.CompletionRegistry.RegisterBatchCompletion(ctx, callback); - grpcsharp_server_shutdown_and_notify_callback(this, environment.CompletionQueue, ctx); + Native.grpcsharp_server_shutdown_and_notify_callback(this, environment.CompletionQueue, ctx); } public void RequestCall(BatchCompletionDelegate callback, GrpcEnvironment environment) { var ctx = BatchContextSafeHandle.Create(); environment.CompletionRegistry.RegisterBatchCompletion(ctx, callback); - grpcsharp_server_request_call(this, environment.CompletionQueue, ctx).CheckOk(); + Native.grpcsharp_server_request_call(this, environment.CompletionQueue, ctx).CheckOk(); } protected override bool ReleaseHandle() { - grpcsharp_server_destroy(handle); + Native.grpcsharp_server_destroy(handle); GrpcEnvironment.GrpcNativeShutdown(); return true; } @@ -119,7 +97,7 @@ namespace Grpc.Core.Internal // Only to be called after ShutdownAndNotify. public void CancelAllCalls() { - grpcsharp_server_cancel_all_calls(this); + Native.grpcsharp_server_cancel_all_calls(this); } } } diff --git a/src/csharp/Grpc.Core/Internal/Timespec.cs b/src/csharp/Grpc.Core/Internal/Timespec.cs index 3031175c8ab..18bcd8c76d1 100644 --- a/src/csharp/Grpc.Core/Internal/Timespec.cs +++ b/src/csharp/Grpc.Core/Internal/Timespec.cs @@ -46,23 +46,9 @@ namespace Grpc.Core.Internal const long NanosPerTick = 100; const long TicksPerSecond = NanosPerSecond / NanosPerTick; + static readonly NativeMethods Native = NativeMethods.Get(); static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); - [DllImport("grpc_csharp_ext.dll")] - static extern Timespec gprsharp_now(GPRClockType clockType); - - [DllImport("grpc_csharp_ext.dll")] - static extern Timespec gprsharp_inf_future(GPRClockType clockType); - - [DllImport("grpc_csharp_ext.dll")] - static extern Timespec gprsharp_inf_past(GPRClockType clockType); - - [DllImport("grpc_csharp_ext.dll")] - static extern Timespec gprsharp_convert_clock_type(Timespec t, GPRClockType targetClock); - - [DllImport("grpc_csharp_ext.dll")] - static extern int gprsharp_sizeof_timespec(); - public Timespec(long tv_sec, int tv_nsec) : this(tv_sec, tv_nsec, GPRClockType.Realtime) { } @@ -85,7 +71,7 @@ namespace Grpc.Core.Internal { get { - return gprsharp_inf_future(GPRClockType.Realtime); + return Native.gprsharp_inf_future(GPRClockType.Realtime); } } @@ -96,7 +82,7 @@ namespace Grpc.Core.Internal { get { - return gprsharp_inf_past(GPRClockType.Realtime); + return Native.gprsharp_inf_past(GPRClockType.Realtime); } } @@ -107,7 +93,7 @@ namespace Grpc.Core.Internal { get { - return gprsharp_now(GPRClockType.Realtime); + return Native.gprsharp_now(GPRClockType.Realtime); } } @@ -138,7 +124,7 @@ namespace Grpc.Core.Internal /// public Timespec ToClockType(GPRClockType targetClock) { - return gprsharp_convert_clock_type(this, targetClock); + return Native.gprsharp_convert_clock_type(this, targetClock); } /// @@ -241,7 +227,7 @@ namespace Grpc.Core.Internal { get { - return gprsharp_now(GPRClockType.Precise); + return Native.gprsharp_now(GPRClockType.Precise); } } @@ -249,7 +235,7 @@ namespace Grpc.Core.Internal { get { - return gprsharp_sizeof_timespec(); + return Native.gprsharp_sizeof_timespec(); } } } diff --git a/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs b/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs new file mode 100644 index 00000000000..9a8b8ab6333 --- /dev/null +++ b/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs @@ -0,0 +1,158 @@ +#region Copyright notice and license + +// Copyright 2015, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Threading; + +using Grpc.Core.Logging; +using Grpc.Core.Utils; + +namespace Grpc.Core.Internal +{ + /// + /// Represents a dynamically loaded unmanaged library in a (partially) platform independent manner. + /// An important difference in library loading semantics is that on Windows, once we load a dynamic library using LoadLibrary, + /// that library becomes instantly available for DllImport P/Invoke calls referring to the same library name. + /// On Unix systems, dlopen has somewhat different semantics, so we need to use dlsym and Marshal.GetDelegateForFunctionPointer + /// to obtain delegates to native methods. + /// See http://stackoverflow.com/questions/13461989/p-invoke-to-dynamically-loaded-library-on-mono. + /// + internal class UnmanagedLibrary + { + static readonly ILogger Logger = GrpcEnvironment.Logger.ForType(); + + // flags for dlopen + const int RTLD_LAZY = 1; + const int RTLD_GLOBAL = 8; + + readonly string libraryPath; + readonly IntPtr handle; + + public UnmanagedLibrary(string libraryPath) + { + this.libraryPath = Preconditions.CheckNotNull(libraryPath); + + if (!File.Exists(this.libraryPath)) + { + throw new FileNotFoundException("Error loading native library. File does not exist.", this.libraryPath); + } + + Logger.Debug("Attempting to load native library \"{0}\"", this.libraryPath); + + this.handle = PlatformSpecificLoadLibrary(this.libraryPath); + + if (this.handle == IntPtr.Zero) + { + throw new IOException(string.Format("Error loading native library \"{0}\"", this.libraryPath)); + } + } + + /// + /// Loads symbol in a platform specific way. + /// + /// + /// + public IntPtr LoadSymbol(string symbolName) + { + if (PlatformApis.IsLinux) + { + return Linux.dlsym(this.handle, symbolName); + } + if (PlatformApis.IsMacOSX) + { + return MacOSX.dlsym(this.handle, symbolName); + } + throw new InvalidOperationException("Unsupported platform."); + } + + public T GetNativeMethodDelegate(string methodName) + where T : class + { + var ptr = LoadSymbol(methodName); + if (ptr == IntPtr.Zero) + { + throw new MissingMethodException(string.Format("The native method \"{0}\" does not exist", methodName)); + } + return Marshal.GetDelegateForFunctionPointer(ptr, typeof(T)) as T; + } + + /// + /// Loads library in a platform specific way. + /// + private static IntPtr PlatformSpecificLoadLibrary(string libraryPath) + { + if (PlatformApis.IsWindows) + { + return Windows.LoadLibrary(libraryPath); + } + if (PlatformApis.IsLinux) + { + return Linux.dlopen(libraryPath, RTLD_GLOBAL + RTLD_LAZY); + } + if (PlatformApis.IsMacOSX) + { + return MacOSX.dlopen(libraryPath, RTLD_GLOBAL + RTLD_LAZY); + } + throw new InvalidOperationException("Unsupported platform."); + } + + private static class Windows + { + [DllImport("kernel32.dll")] + internal static extern IntPtr LoadLibrary(string filename); + } + + private static class Linux + { + [DllImport("libdl.so")] + internal static extern IntPtr dlopen(string filename, int flags); + + [DllImport("libdl.so")] + internal static extern IntPtr dlsym(IntPtr handle, string symbol); + } + + private static class MacOSX + { + [DllImport("libSystem.dylib")] + internal static extern IntPtr dlopen(string filename, int flags); + + [DllImport("libSystem.dylib")] + internal static extern IntPtr dlsym(IntPtr handle, string symbol); + } + } +} diff --git a/src/csharp/Grpc.Core/NativeDeps.Linux.targets b/src/csharp/Grpc.Core/NativeDeps.Linux.targets new file mode 100644 index 00000000000..a3848c6f2ed --- /dev/null +++ b/src/csharp/Grpc.Core/NativeDeps.Linux.targets @@ -0,0 +1,9 @@ + + + + + PreserveNewest + nativelibs\linux_x64\libgrpc_csharp_ext.so + + + \ No newline at end of file diff --git a/src/csharp/Grpc.Core/NativeDeps.Mac.targets b/src/csharp/Grpc.Core/NativeDeps.Mac.targets new file mode 100644 index 00000000000..c3c6264fd3f --- /dev/null +++ b/src/csharp/Grpc.Core/NativeDeps.Mac.targets @@ -0,0 +1,9 @@ + + + + + PreserveNewest + nativelibs\macosx_x86\libgrpc_csharp_ext.dylib + + + \ No newline at end of file diff --git a/src/csharp/Grpc.Core/NativeDeps.Windows.targets b/src/csharp/Grpc.Core/NativeDeps.Windows.targets new file mode 100644 index 00000000000..f6a3405e29f --- /dev/null +++ b/src/csharp/Grpc.Core/NativeDeps.Windows.targets @@ -0,0 +1,9 @@ + + + + + PreserveNewest + nativelibs\windows_x86\grpc_csharp_ext.dll + + + \ No newline at end of file diff --git a/src/csharp/Grpc.Core/NativeDeps.targets b/src/csharp/Grpc.Core/NativeDeps.targets new file mode 100644 index 00000000000..66c5ec1292b --- /dev/null +++ b/src/csharp/Grpc.Core/NativeDeps.targets @@ -0,0 +1,28 @@ + + + + + Debug + Release + Release + + + + dbg + opt + opt + + + + + Windows + + + Mac + + + Linux + + + + \ No newline at end of file diff --git a/tools/jenkins/grpc_interop_csharp/build_interop.sh b/tools/jenkins/grpc_interop_csharp/build_interop.sh index 8fde687900a..88d44df4537 100755 --- a/tools/jenkins/grpc_interop_csharp/build_interop.sh +++ b/tools/jenkins/grpc_interop_csharp/build_interop.sh @@ -42,6 +42,6 @@ cd /var/local/git/grpc make install-certs # build C# interop client & server -make install_grpc_csharp_ext +make CONFIG=dbg grpc_csharp_ext (cd src/csharp && mono /var/local/NuGet.exe restore Grpc.sln) (cd src/csharp && xbuild Grpc.sln) diff --git a/tools/run_tests/build_csharp.sh b/tools/run_tests/build_csharp.sh index 55643ff9241..48ce11a10b7 100755 --- a/tools/run_tests/build_csharp.sh +++ b/tools/run_tests/build_csharp.sh @@ -32,4 +32,5 @@ set -ex cd $(dirname $0)/../../src/csharp -xbuild /p:Configuration=$MSBUILD_CONFIG Grpc.sln +# overriding NativeDependenciesConfigurationUnix is needed to make gcov code coverage work. +xbuild /p:Configuration=$MSBUILD_CONFIG /p:NativeDependenciesConfigurationUnix=$CONFIG Grpc.sln diff --git a/tools/run_tests/run_csharp.sh b/tools/run_tests/run_csharp.sh index 744df07e1ca..dad44c4e4f6 100755 --- a/tools/run_tests/run_csharp.sh +++ b/tools/run_tests/run_csharp.sh @@ -36,9 +36,6 @@ NUNIT_CONSOLE="mono packages/NUnit.Runners.2.6.4/tools/nunit-console.exe" # change to gRPC repo root cd $(dirname $0)/../.. -# path needs to be absolute -export LD_LIBRARY_PATH=$(pwd)/libs/$CONFIG - (cd src/csharp; $NUNIT_CONSOLE $@) if [ "$CONFIG" = "gcov" ] From 447ef7eaaac24bf236fff90c007e5b27b120b785 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 15 Jan 2016 15:47:31 -0800 Subject: [PATCH 06/11] extend copyright to 2016 --- src/core/census/initialize.c | 2 +- src/csharp/Grpc.Core.Tests/PInvokeTest.cs | 2 +- src/csharp/Grpc.Core/GrpcEnvironment.cs | 2 +- src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/CallSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs | 2 +- src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/NativeExtension.cs | 2 +- src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs | 2 +- .../Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs | 2 +- src/csharp/Grpc.Core/Internal/NativeMethods.cs | 2 +- src/csharp/Grpc.Core/Internal/PlatformApis.cs | 2 +- src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Internal/Timespec.cs | 2 +- src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs | 2 +- tools/jenkins/build_interop_stress_image.sh | 2 +- tools/jenkins/grpc_interop_csharp/build_interop.sh | 2 +- tools/jenkins/grpc_interop_stress_cxx/Dockerfile | 2 +- tools/jenkins/grpc_interop_stress_cxx/build_interop_stress.sh | 2 +- tools/jenkins/run_interop_stress.sh | 2 +- tools/run_tests/build_csharp.sh | 2 +- tools/run_tests/run_csharp.sh | 2 +- tools/run_tests/run_stress_tests.py | 2 +- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/core/census/initialize.c b/src/core/census/initialize.c index 989708d42cd..b7af714e0be 100644 --- a/src/core/census/initialize.c +++ b/src/core/census/initialize.c @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core.Tests/PInvokeTest.cs b/src/csharp/Grpc.Core.Tests/PInvokeTest.cs index ea6572e7c01..da0ea2e6dc9 100644 --- a/src/csharp/Grpc.Core.Tests/PInvokeTest.cs +++ b/src/csharp/Grpc.Core.Tests/PInvokeTest.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs index 3797100fc6d..f3aa3d79de6 100644 --- a/src/csharp/Grpc.Core/GrpcEnvironment.cs +++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs b/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs index 256d2e3c83c..944563ea741 100644 --- a/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs index 0221798d2af..4ae57aa773a 100644 --- a/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CStringSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs index 3095a340080..0f36337f113 100644 --- a/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallCredentialsSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs index 454f88df083..607424ce0da 100644 --- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs index 00380242459..f6aa710b214 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs index c85f55241a1..65cc2e019fd 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelCredentialsSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs index 1dbd1f4e34c..2199905cc60 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs b/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs index 288680792a6..36a92ecd8e8 100644 --- a/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs +++ b/src/csharp/Grpc.Core/Internal/CompletionQueueEvent.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs index 365de96fb73..9d7a990c427 100644 --- a/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs index 25735d5262d..81760d7a109 100644 --- a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/NativeExtension.cs b/src/csharp/Grpc.Core/Internal/NativeExtension.cs index 3a4ebf9c4e1..137533b3ef3 100644 --- a/src/csharp/Grpc.Core/Internal/NativeExtension.cs +++ b/src/csharp/Grpc.Core/Internal/NativeExtension.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs b/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs index 3fcf8673ee7..4bbbb4808ca 100644 --- a/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs +++ b/src/csharp/Grpc.Core/Internal/NativeLogRedirector.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs b/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs index ab9b8e96a45..36b865c09cc 100644 --- a/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs +++ b/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/NativeMethods.cs b/src/csharp/Grpc.Core/Internal/NativeMethods.cs index b79d7c75652..af37d61c731 100644 --- a/src/csharp/Grpc.Core/Internal/NativeMethods.cs +++ b/src/csharp/Grpc.Core/Internal/NativeMethods.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/PlatformApis.cs b/src/csharp/Grpc.Core/Internal/PlatformApis.cs index e6c5765b610..d71e7eccdd6 100644 --- a/src/csharp/Grpc.Core/Internal/PlatformApis.cs +++ b/src/csharp/Grpc.Core/Internal/PlatformApis.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs index d50e1c72698..a1d080c7f1c 100644 --- a/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs index 6b5f70e2207..a57fb3b7890 100644 --- a/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/Timespec.cs b/src/csharp/Grpc.Core/Internal/Timespec.cs index 18bcd8c76d1..148d877da5a 100644 --- a/src/csharp/Grpc.Core/Internal/Timespec.cs +++ b/src/csharp/Grpc.Core/Internal/Timespec.cs @@ -1,5 +1,5 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs b/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs index 9a8b8ab6333..e614cab6abf 100644 --- a/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs +++ b/src/csharp/Grpc.Core/Internal/UnmanagedLibrary.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/tools/jenkins/build_interop_stress_image.sh b/tools/jenkins/build_interop_stress_image.sh index 6b22dce6c02..395eaa32d9b 100755 --- a/tools/jenkins/build_interop_stress_image.sh +++ b/tools/jenkins/build_interop_stress_image.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/jenkins/grpc_interop_csharp/build_interop.sh b/tools/jenkins/grpc_interop_csharp/build_interop.sh index 88d44df4537..e87fe2f6928 100755 --- a/tools/jenkins/grpc_interop_csharp/build_interop.sh +++ b/tools/jenkins/grpc_interop_csharp/build_interop.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/jenkins/grpc_interop_stress_cxx/Dockerfile b/tools/jenkins/grpc_interop_stress_cxx/Dockerfile index 1fa19075330..58a8c32e344 100644 --- a/tools/jenkins/grpc_interop_stress_cxx/Dockerfile +++ b/tools/jenkins/grpc_interop_stress_cxx/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/jenkins/grpc_interop_stress_cxx/build_interop_stress.sh b/tools/jenkins/grpc_interop_stress_cxx/build_interop_stress.sh index 01f9a9c02e7..6ed3ccb3fa0 100755 --- a/tools/jenkins/grpc_interop_stress_cxx/build_interop_stress.sh +++ b/tools/jenkins/grpc_interop_stress_cxx/build_interop_stress.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/jenkins/run_interop_stress.sh b/tools/jenkins/run_interop_stress.sh index 22d81db8bcd..8166f34e055 100755 --- a/tools/jenkins/run_interop_stress.sh +++ b/tools/jenkins/run_interop_stress.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/run_tests/build_csharp.sh b/tools/run_tests/build_csharp.sh index 48ce11a10b7..aadd11e2054 100755 --- a/tools/run_tests/build_csharp.sh +++ b/tools/run_tests/build_csharp.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/run_tests/run_csharp.sh b/tools/run_tests/run_csharp.sh index dad44c4e4f6..10f1c285218 100755 --- a/tools/run_tests/run_csharp.sh +++ b/tools/run_tests/run_csharp.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/tools/run_tests/run_stress_tests.py b/tools/run_tests/run_stress_tests.py index b01a07af901..193ff2e53a3 100755 --- a/tools/run_tests/run_stress_tests.py +++ b/tools/run_tests/run_stress_tests.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without From caace811b496d27935632f3d1f86273252e876c4 Mon Sep 17 00:00:00 2001 From: vjpai Date: Mon, 18 Jan 2016 22:15:55 -0800 Subject: [PATCH 07/11] Fix asan error caused by mismatch in alloc/dealloc between new[] and regular delete... --- test/cpp/qps/client.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h index 15cfd7a2d71..97487fd0b22 100644 --- a/test/cpp/qps/client.h +++ b/test/cpp/qps/client.h @@ -112,7 +112,7 @@ class ClientRequestCreator { public: ClientRequestCreator(ByteBuffer* req, const PayloadConfig& payload_config) { if (payload_config.has_bytebuf_params()) { - std::unique_ptr buf( + std::unique_ptr buf( new char[payload_config.bytebuf_params().req_size()]); gpr_slice s = gpr_slice_from_copied_buffer( buf.get(), payload_config.bytebuf_params().req_size()); From 2a9244a9c4ff1d3065d0e6cb5e87780eb78ecdef Mon Sep 17 00:00:00 2001 From: Nathaniel Manista Date: Tue, 19 Jan 2016 16:27:51 +0000 Subject: [PATCH 08/11] Copyright date fixes for Python generator files These changes should have been included in dc8c32393918dc817f98e8844a. --- src/compiler/python_generator.cc | 2 +- src/compiler/python_generator.h | 2 +- src/compiler/python_plugin.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc index 2bb00509ac0..c754ae299b4 100644 --- a/src/compiler/python_generator.cc +++ b/src/compiler/python_generator.cc @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/compiler/python_generator.h b/src/compiler/python_generator.h index e56b6790ef9..68da18f9baa 100644 --- a/src/compiler/python_generator.h +++ b/src/compiler/python_generator.h @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/compiler/python_plugin.cc b/src/compiler/python_plugin.cc index 92a07b2f80a..d781ddbee58 100644 --- a/src/compiler/python_plugin.cc +++ b/src/compiler/python_plugin.cc @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without From fc051c9aa343807f18440d7416be2b3ed5086165 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 19 Jan 2016 08:39:37 -0800 Subject: [PATCH 09/11] Run nosec tests again --- test/core/end2end/gen_build_yaml.py | 2 +- tools/run_tests/tests.json | 852 ++++++++++++++-------------- 2 files changed, 427 insertions(+), 427 deletions(-) diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py index 6a4038da734..d52b5cc9942 100755 --- a/test/core/end2end/gen_build_yaml.py +++ b/test/core/end2end/gen_build_yaml.py @@ -257,7 +257,7 @@ def main(): for t in sorted(END2END_TESTS.keys()) if compatible(f, t) ] + [ { - 'name': '%s_test' % f, + 'name': '%s_nosec_test' % f, 'args': [t], 'exclude_configs': [], 'platforms': END2END_FIXTURES[f].platforms, diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 2757ce445d7..c8153940fcf 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -15208,7 +15208,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15229,7 +15229,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15250,7 +15250,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15271,7 +15271,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15292,7 +15292,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15313,7 +15313,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15334,7 +15334,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15355,7 +15355,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15376,7 +15376,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15397,7 +15397,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15418,7 +15418,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15439,7 +15439,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15460,7 +15460,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15481,7 +15481,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15502,7 +15502,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15523,7 +15523,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15544,7 +15544,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15565,7 +15565,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15586,7 +15586,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15607,7 +15607,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15628,7 +15628,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15649,7 +15649,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15670,7 +15670,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15691,7 +15691,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15712,7 +15712,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15733,7 +15733,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15754,7 +15754,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15775,7 +15775,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15796,7 +15796,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15817,7 +15817,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15838,7 +15838,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15859,7 +15859,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15880,7 +15880,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15901,7 +15901,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15922,7 +15922,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_census_test", + "name": "h2_census_nosec_test", "platforms": [ "windows", "linux", @@ -15943,7 +15943,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -15964,7 +15964,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -15985,7 +15985,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16006,7 +16006,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16027,7 +16027,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16048,7 +16048,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16069,7 +16069,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16090,7 +16090,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16111,7 +16111,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16132,7 +16132,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16153,7 +16153,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16174,7 +16174,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16195,7 +16195,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16216,7 +16216,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16237,7 +16237,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16258,7 +16258,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16279,7 +16279,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16300,7 +16300,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16321,7 +16321,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16342,7 +16342,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16363,7 +16363,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16384,7 +16384,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16405,7 +16405,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16426,7 +16426,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16447,7 +16447,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16468,7 +16468,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16489,7 +16489,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16510,7 +16510,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16531,7 +16531,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16552,7 +16552,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16573,7 +16573,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16594,7 +16594,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16615,7 +16615,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16636,7 +16636,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16657,7 +16657,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_compress_test", + "name": "h2_compress_nosec_test", "platforms": [ "windows", "linux", @@ -16678,7 +16678,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16699,7 +16699,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16720,7 +16720,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16741,7 +16741,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16762,7 +16762,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16783,7 +16783,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16804,7 +16804,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16825,7 +16825,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16846,7 +16846,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16867,7 +16867,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16888,7 +16888,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16909,7 +16909,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16930,7 +16930,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16951,7 +16951,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16972,7 +16972,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -16993,7 +16993,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17014,7 +17014,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17035,7 +17035,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17056,7 +17056,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17077,7 +17077,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17098,7 +17098,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17119,7 +17119,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17140,7 +17140,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17161,7 +17161,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17182,7 +17182,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17203,7 +17203,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17224,7 +17224,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17245,7 +17245,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17266,7 +17266,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17287,7 +17287,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17308,7 +17308,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17329,7 +17329,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17350,7 +17350,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17371,7 +17371,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17392,7 +17392,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full_test", + "name": "h2_full_nosec_test", "platforms": [ "windows", "linux", @@ -17410,7 +17410,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17425,7 +17425,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17440,7 +17440,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17455,7 +17455,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17470,7 +17470,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17485,7 +17485,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17500,7 +17500,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17515,7 +17515,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17530,7 +17530,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17545,7 +17545,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17560,7 +17560,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17575,7 +17575,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17590,7 +17590,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17605,7 +17605,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17620,7 +17620,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17635,7 +17635,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17650,7 +17650,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17665,7 +17665,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17680,7 +17680,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17695,7 +17695,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17710,7 +17710,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17725,7 +17725,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17740,7 +17740,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17755,7 +17755,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17770,7 +17770,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17785,7 +17785,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17800,7 +17800,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17815,7 +17815,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17830,7 +17830,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17845,7 +17845,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17860,7 +17860,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17875,7 +17875,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17890,7 +17890,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17905,7 +17905,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17920,7 +17920,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+pipe_test", + "name": "h2_full+pipe_nosec_test", "platforms": [ "linux" ] @@ -17935,7 +17935,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -17950,7 +17950,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -17965,7 +17965,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -17980,7 +17980,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -17995,7 +17995,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18010,7 +18010,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18025,7 +18025,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18040,7 +18040,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18055,7 +18055,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18070,7 +18070,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18085,7 +18085,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18100,7 +18100,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18115,7 +18115,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18130,7 +18130,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18145,7 +18145,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18160,7 +18160,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18175,7 +18175,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18190,7 +18190,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18205,7 +18205,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18220,7 +18220,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18235,7 +18235,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18250,7 +18250,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18265,7 +18265,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18280,7 +18280,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18295,7 +18295,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18310,7 +18310,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18325,7 +18325,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18340,7 +18340,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18355,7 +18355,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18370,7 +18370,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18385,7 +18385,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18400,7 +18400,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18415,7 +18415,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18430,7 +18430,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18445,7 +18445,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll_test", + "name": "h2_full+poll_nosec_test", "platforms": [ "linux" ] @@ -18460,7 +18460,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18475,7 +18475,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18490,7 +18490,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18505,7 +18505,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18520,7 +18520,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18535,7 +18535,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18550,7 +18550,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18565,7 +18565,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18580,7 +18580,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18595,7 +18595,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18610,7 +18610,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18625,7 +18625,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18640,7 +18640,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18655,7 +18655,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18670,7 +18670,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18685,7 +18685,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18700,7 +18700,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18715,7 +18715,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18730,7 +18730,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18745,7 +18745,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18760,7 +18760,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18775,7 +18775,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18790,7 +18790,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18805,7 +18805,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18820,7 +18820,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18835,7 +18835,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18850,7 +18850,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18865,7 +18865,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18880,7 +18880,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18895,7 +18895,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18910,7 +18910,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18925,7 +18925,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18940,7 +18940,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18955,7 +18955,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18970,7 +18970,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_full+poll+pipe_test", + "name": "h2_full+poll+pipe_nosec_test", "platforms": [ "linux" ] @@ -18987,7 +18987,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19007,7 +19007,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19027,7 +19027,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19047,7 +19047,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19067,7 +19067,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19087,7 +19087,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19107,7 +19107,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19127,7 +19127,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19147,7 +19147,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19167,7 +19167,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19187,7 +19187,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19207,7 +19207,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19227,7 +19227,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19247,7 +19247,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19267,7 +19267,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19287,7 +19287,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19307,7 +19307,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19327,7 +19327,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19347,7 +19347,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19367,7 +19367,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19387,7 +19387,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19407,7 +19407,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19427,7 +19427,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19447,7 +19447,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19467,7 +19467,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19487,7 +19487,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19507,7 +19507,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19527,7 +19527,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19547,7 +19547,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_proxy_test", + "name": "h2_proxy_nosec_test", "platforms": [ "windows", "linux", @@ -19567,7 +19567,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19587,7 +19587,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19607,7 +19607,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19627,7 +19627,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19647,7 +19647,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19667,7 +19667,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19687,7 +19687,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19707,7 +19707,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19727,7 +19727,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19747,7 +19747,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19767,7 +19767,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19787,7 +19787,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19807,7 +19807,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19827,7 +19827,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19847,7 +19847,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19867,7 +19867,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19887,7 +19887,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19907,7 +19907,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19927,7 +19927,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19947,7 +19947,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19967,7 +19967,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -19987,7 +19987,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20007,7 +20007,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20027,7 +20027,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20047,7 +20047,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20067,7 +20067,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20087,7 +20087,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20107,7 +20107,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20127,7 +20127,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20147,7 +20147,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_test", + "name": "h2_sockpair_nosec_test", "platforms": [ "windows", "linux", @@ -20168,7 +20168,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20189,7 +20189,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20210,7 +20210,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20231,7 +20231,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20252,7 +20252,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20273,7 +20273,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20294,7 +20294,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20315,7 +20315,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20336,7 +20336,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20357,7 +20357,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20378,7 +20378,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20399,7 +20399,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20420,7 +20420,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20441,7 +20441,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20462,7 +20462,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20483,7 +20483,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20504,7 +20504,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20525,7 +20525,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20546,7 +20546,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20567,7 +20567,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20588,7 +20588,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20609,7 +20609,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20630,7 +20630,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20651,7 +20651,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20672,7 +20672,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20693,7 +20693,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20714,7 +20714,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20735,7 +20735,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20756,7 +20756,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair+trace_test", + "name": "h2_sockpair+trace_nosec_test", "platforms": [ "windows", "linux", @@ -20776,7 +20776,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20796,7 +20796,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20816,7 +20816,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20836,7 +20836,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20856,7 +20856,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20876,7 +20876,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20896,7 +20896,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20916,7 +20916,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20936,7 +20936,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20956,7 +20956,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20976,7 +20976,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -20996,7 +20996,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21016,7 +21016,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21036,7 +21036,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21056,7 +21056,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21076,7 +21076,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21096,7 +21096,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21116,7 +21116,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21136,7 +21136,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21156,7 +21156,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21176,7 +21176,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21196,7 +21196,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21216,7 +21216,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21236,7 +21236,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21256,7 +21256,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21276,7 +21276,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21296,7 +21296,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21316,7 +21316,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21336,7 +21336,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21356,7 +21356,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_sockpair_1byte_test", + "name": "h2_sockpair_1byte_nosec_test", "platforms": [ "windows", "linux", @@ -21377,7 +21377,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21398,7 +21398,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21419,7 +21419,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21440,7 +21440,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21461,7 +21461,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21482,7 +21482,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21503,7 +21503,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21524,7 +21524,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21545,7 +21545,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21566,7 +21566,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21587,7 +21587,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21608,7 +21608,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21629,7 +21629,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21650,7 +21650,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21671,7 +21671,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21692,7 +21692,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21713,7 +21713,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21734,7 +21734,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21755,7 +21755,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21776,7 +21776,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21797,7 +21797,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21818,7 +21818,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21839,7 +21839,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21860,7 +21860,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21881,7 +21881,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21902,7 +21902,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21923,7 +21923,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21944,7 +21944,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21965,7 +21965,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -21986,7 +21986,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uchannel_test", + "name": "h2_uchannel_nosec_test", "platforms": [ "windows", "linux", @@ -22006,7 +22006,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22025,7 +22025,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22044,7 +22044,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22063,7 +22063,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22082,7 +22082,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22101,7 +22101,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22120,7 +22120,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22139,7 +22139,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22158,7 +22158,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22177,7 +22177,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22196,7 +22196,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22215,7 +22215,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22234,7 +22234,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22253,7 +22253,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22272,7 +22272,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22291,7 +22291,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22310,7 +22310,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22329,7 +22329,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22348,7 +22348,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22367,7 +22367,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22386,7 +22386,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22405,7 +22405,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22424,7 +22424,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22443,7 +22443,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22462,7 +22462,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22481,7 +22481,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22500,7 +22500,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22519,7 +22519,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22538,7 +22538,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22557,7 +22557,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22576,7 +22576,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22595,7 +22595,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22614,7 +22614,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22633,7 +22633,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds_test", + "name": "h2_uds_nosec_test", "platforms": [ "linux", "mac", @@ -22650,7 +22650,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22665,7 +22665,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22680,7 +22680,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22695,7 +22695,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22710,7 +22710,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22725,7 +22725,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22740,7 +22740,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22755,7 +22755,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22770,7 +22770,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22785,7 +22785,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22800,7 +22800,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22815,7 +22815,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22830,7 +22830,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22845,7 +22845,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22860,7 +22860,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22875,7 +22875,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22890,7 +22890,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22905,7 +22905,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22920,7 +22920,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22935,7 +22935,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22950,7 +22950,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22965,7 +22965,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22980,7 +22980,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -22995,7 +22995,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23010,7 +23010,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23025,7 +23025,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23040,7 +23040,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23055,7 +23055,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23070,7 +23070,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23085,7 +23085,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23100,7 +23100,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23115,7 +23115,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23130,7 +23130,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] @@ -23145,7 +23145,7 @@ "exclude_configs": [], "flaky": false, "language": "c", - "name": "h2_uds+poll_test", + "name": "h2_uds+poll_nosec_test", "platforms": [ "linux" ] From 9f1d863e4e6021f2f955c00bf4b31b1789e25069 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 19 Jan 2016 10:04:38 -0800 Subject: [PATCH 10/11] Revert "Disable ccache for the moment" --- tools/jenkins/grpc_jenkins_slave/Dockerfile | 9 +++++++++ tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/tools/jenkins/grpc_jenkins_slave/Dockerfile b/tools/jenkins/grpc_jenkins_slave/Dockerfile index b1ac024dfb3..48541b00adf 100644 --- a/tools/jenkins/grpc_jenkins_slave/Dockerfile +++ b/tools/jenkins/grpc_jenkins_slave/Dockerfile @@ -38,6 +38,7 @@ RUN apt-get update && apt-get install -y \ autotools-dev \ build-essential \ bzip2 \ + ccache \ curl \ gcc \ gcc-multilib \ @@ -61,6 +62,14 @@ RUN apt-get update && apt-get install -y \ wget \ zip && apt-get clean +# Prepare ccache +RUN ln -s /usr/bin/ccache /usr/local/bin/gcc +RUN ln -s /usr/bin/ccache /usr/local/bin/g++ +RUN ln -s /usr/bin/ccache /usr/local/bin/cc +RUN ln -s /usr/bin/ccache /usr/local/bin/c++ +RUN ln -s /usr/bin/ccache /usr/local/bin/clang +RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ + ################## # C++ dependencies RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang diff --git a/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile b/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile index 348a333d3e6..2323f233875 100644 --- a/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile +++ b/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile @@ -38,6 +38,7 @@ RUN apt-get update && apt-get install -y \ autotools-dev \ build-essential \ bzip2 \ + ccache \ curl \ gcc \ gcc-multilib \ @@ -61,6 +62,14 @@ RUN apt-get update && apt-get install -y \ wget \ zip && apt-get clean +# Prepare ccache +RUN ln -s /usr/bin/ccache /usr/local/bin/gcc +RUN ln -s /usr/bin/ccache /usr/local/bin/g++ +RUN ln -s /usr/bin/ccache /usr/local/bin/cc +RUN ln -s /usr/bin/ccache /usr/local/bin/c++ +RUN ln -s /usr/bin/ccache /usr/local/bin/clang +RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ + ################## # C++ dependencies RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang From ee36bce8810fc55fb7fd8905b840faceb09b8d3c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 19 Jan 2016 12:56:21 -0800 Subject: [PATCH 11/11] Update copyrights --- test/core/end2end/gen_build_yaml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py index d52b5cc9942..932ef2fd963 100755 --- a/test/core/end2end/gen_build_yaml.py +++ b/test/core/end2end/gen_build_yaml.py @@ -1,5 +1,5 @@ #!/usr/bin/env python2.7 -# Copyright 2015, Google Inc. +# Copyright 2015-2016, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without