diff options
27 files changed, 157 insertions, 109 deletions
@@ -147,9 +147,9 @@ CC_tsan = clang CXX_tsan = clang++ LD_tsan = clang LDXX_tsan = clang++ -CFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -CXXFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -LDFLAGS_tsan = -fsanitize=thread +CFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -fPIE +CXXFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -fPIE +LDFLAGS_tsan = -fsanitize=thread -pie DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10 VALID_CONFIG_asan = 1 @@ -169,9 +169,9 @@ CC_msan = clang CXX_msan = clang++-libc++ LD_msan = clang LDXX_msan = clang++-libc++ -CFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -CXXFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 +CFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE +CXXFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE +LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -pie DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=4 VALID_CONFIG_ubsan = 1 diff --git a/src/core/httpcli/httpcli_security_connector.c b/src/core/httpcli/httpcli_security_connector.c index 4822d524bd..41ad1de6c0 100644 --- a/src/core/httpcli/httpcli_security_connector.c +++ b/src/core/httpcli/httpcli_security_connector.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/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c index b619b8c3db..a7282b9896 100644 --- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c +++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c @@ -144,7 +144,9 @@ static void multipoll_with_poll_pollset_maybe_work_and_unlock( GRPC_SCHEDULING_END_BLOCKING_REGION; if (r < 0) { - gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno)); + if (errno != EINTR) { + gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno)); + } for (i = 2; i < pfd_count; i++) { grpc_fd_end_poll(exec_ctx, &watchers[i], 0, 0); } diff --git a/src/core/security/client_auth_filter.c b/src/core/security/client_auth_filter.c index d6568f1cfd..57b367d00f 100644 --- a/src/core/security/client_auth_filter.c +++ b/src/core/security/client_auth_filter.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/core/security/credentials.c b/src/core/security/credentials.c index 8e33227458..8b56c57645 100644 --- a/src/core/security/credentials.c +++ b/src/core/security/credentials.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/core/security/security_connector.c b/src/core/security/security_connector.c index a115b942a6..61336a1057 100644 --- a/src/core/security/security_connector.c +++ b/src/core/security/security_connector.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/core/security/security_connector.h b/src/core/security/security_connector.h index cc6cc742c8..2b734109b3 100644 --- a/src/core/security/security_connector.h +++ b/src/core/security/security_connector.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/core/surface/init.c b/src/core/surface/init.c index ec314bd99b..19cea4c4f6 100644 --- a/src/core/surface/init.c +++ b/src/core/surface/init.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/core/transport/static_metadata.c b/src/core/transport/static_metadata.c index 5027ed5630..233e5c0d92 100644 --- a/src/core/transport/static_metadata.c +++ b/src/core/transport/static_metadata.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 @@ -30,7 +30,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ - + /* * WARNING: Auto-generated code. * diff --git a/src/core/transport/static_metadata.h b/src/core/transport/static_metadata.h index 87b5c385d0..3803a0488b 100644 --- a/src/core/transport/static_metadata.h +++ b/src/core/transport/static_metadata.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 @@ -30,7 +30,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ - + /* * WARNING: Auto-generated code. * diff --git a/templates/Makefile.template b/templates/Makefile.template index bbe409c43e..ba5a80659c 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -163,9 +163,9 @@ CXX_tsan = clang++ LD_tsan = clang LDXX_tsan = clang++ - CFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument - CXXFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument - LDFLAGS_tsan = -fsanitize=thread + CFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -fPIE + CXXFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -fPIE + LDFLAGS_tsan = -fsanitize=thread -pie DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10 VALID_CONFIG_asan = 1 @@ -185,9 +185,9 @@ CXX_msan = clang++-libc++ LD_msan = clang LDXX_msan = clang++-libc++ - CFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument - CXXFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument - LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 + CFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE + CXXFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE + LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -pie DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=4 VALID_CONFIG_ubsan = 1 diff --git a/templates/test/core/end2end/end2end_defs.include b/templates/test/core/end2end/end2end_defs.include index e95bd4a8b6..1b13bba94c 100644 --- a/templates/test/core/end2end/end2end_defs.include +++ b/templates/test/core/end2end/end2end_defs.include @@ -1,7 +1,7 @@ <%def name="end2end_selector(tests)"> /* * - * 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/templates/test/core/end2end/end2end_nosec_tests.c.template b/templates/test/core/end2end/end2end_nosec_tests.c.template index b70b724d50..3719ded75d 100644 --- a/templates/test/core/end2end/end2end_nosec_tests.c.template +++ b/templates/test/core/end2end/end2end_nosec_tests.c.template @@ -1,5 +1,4 @@ %YAML 1.2 --- | - <%namespace file="end2end_defs.include" import="*"/> + <%namespace file="end2end_defs.include" import="*"/>\ ${end2end_selector(k for k, v in core_end2end_tests.iteritems() if not v)} - diff --git a/templates/test/core/end2end/end2end_tests.c.template b/templates/test/core/end2end/end2end_tests.c.template index ecb1565e23..e6a49f2795 100644 --- a/templates/test/core/end2end/end2end_tests.c.template +++ b/templates/test/core/end2end/end2end_tests.c.template @@ -1,5 +1,4 @@ %YAML 1.2 --- | - <%namespace file="end2end_defs.include" import="*"/> + <%namespace file="end2end_defs.include" import="*"/>\ ${end2end_selector(core_end2end_tests.keys())} - diff --git a/templates/test/core/surface/public_headers_must_be_c89.c.template b/templates/test/core/surface/public_headers_must_be_c89.c.template index aff4ac5bcc..e132256cb8 100644 --- a/templates/test/core/surface/public_headers_must_be_c89.c.template +++ b/templates/test/core/surface/public_headers_must_be_c89.c.template @@ -54,6 +54,4 @@ #include <${hdr}> % endfor - int main(int argc, char **argv) { - return 0; - } + int main(int argc, char **argv) { return 0; } diff --git a/test/core/end2end/end2end_nosec_tests.c b/test/core/end2end/end2end_nosec_tests.c index c0bea7bb36..d9df5fd7f0 100644 --- a/test/core/end2end/end2end_nosec_tests.c +++ b/test/core/end2end/end2end_nosec_tests.c @@ -1,8 +1,7 @@ - /* * - * 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/test/core/end2end/end2end_tests.c b/test/core/end2end/end2end_tests.c index 4c3a018ad2..7b1471eb89 100644 --- a/test/core/end2end/end2end_tests.c +++ b/test/core/end2end/end2end_tests.c @@ -1,8 +1,7 @@ - /* * - * 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/test/core/support/alloc_test.c b/test/core/support/alloc_test.c index ea6306c1f9..a7051a46a1 100644 --- a/test/core/support/alloc_test.c +++ b/test/core/support/alloc_test.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/test/core/support/cpu_test.c b/test/core/support/cpu_test.c index f041166d08..a5c52442ad 100644 --- a/test/core/support/cpu_test.c +++ b/test/core/support/cpu_test.c @@ -72,15 +72,15 @@ struct cpu_test { uint32_t ncores; int is_done; gpr_cv done_cv; - int *used; /* is this core used? */ - int r; /* random number */ + int *used; /* is this core used? */ + unsigned r; /* random number */ }; static void worker_thread(void *arg) { struct cpu_test *ct = (struct cpu_test *)arg; uint32_t cpu; - int r = 12345678; - int i, j; + unsigned r = 12345678; + unsigned i, j; for (i = 0; i < 1000 / GRPC_TEST_SLOWDOWN_FACTOR; i++) { /* run for a bit - just calculate something random. */ for (j = 0; j < 1000000 / GRPC_TEST_SLOWDOWN_FACTOR; j++) { @@ -90,7 +90,13 @@ static void worker_thread(void *arg) { GPR_ASSERT(cpu < ct->ncores); gpr_mu_lock(&ct->mu); ct->used[cpu] = 1; + for (j = 0; j < ct->ncores; j++) { + if (!ct->used[j]) break; + } gpr_mu_unlock(&ct->mu); + if (j == ct->ncores) { + break; /* all cpus have been used - no further use in running this test */ + } } gpr_mu_lock(&ct->mu); ct->r = r; /* make it look like we care about r's value... */ diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c index 4a3ffbd09e..1e1524d098 100644 --- a/test/core/surface/public_headers_must_be_c89.c +++ b/test/core/surface/public_headers_must_be_c89.c @@ -58,6 +58,4 @@ #include <grpc/support/tls.h> #include <grpc/support/useful.h> -int main(int argc, char **argv) { - return 0; -} +int main(int argc, char **argv) { return 0; } diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index b7b3155a90..6747127c22 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -38,19 +38,19 @@ #include <fstream> #include <memory> +#include <grpc++/channel.h> +#include <grpc++/client_context.h> +#include <grpc++/security/credentials.h> #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> #include <grpc/support/useful.h> -#include <grpc++/channel.h> -#include <grpc++/client_context.h> -#include <grpc++/security/credentials.h> #include "src/core/transport/byte_stream.h" -#include "test/cpp/interop/client_helper.h" -#include "src/proto/grpc/testing/test.grpc.pb.h" #include "src/proto/grpc/testing/empty.grpc.pb.h" +#include "src/proto/grpc/testing/test.grpc.pb.h" #include "src/proto/grpc/testing/messages.grpc.pb.h" +#include "test/cpp/interop/client_helper.h" namespace grpc { namespace testing { @@ -145,13 +145,13 @@ void InteropClient::AssertOkOrPrintErrorStatus(const Status& s) { if (s.ok()) { return; } - gpr_log(GPR_INFO, "Error status code: %d, message: %s", s.error_code(), + gpr_log(GPR_ERROR, "Error status code: %d, message: %s", s.error_code(), s.error_message().c_str()); GPR_ASSERT(0); } void InteropClient::DoEmpty() { - gpr_log(GPR_INFO, "Sending an empty rpc..."); + gpr_log(GPR_DEBUG, "Sending an empty rpc..."); Empty request = Empty::default_instance(); Empty response = Empty::default_instance(); @@ -160,7 +160,7 @@ void InteropClient::DoEmpty() { Status s = serviceStub_.Get()->EmptyCall(&context, request, &response); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Empty rpc done."); + gpr_log(GPR_DEBUG, "Empty rpc done."); } void InteropClient::PerformLargeUnary(SimpleRequest* request, @@ -208,7 +208,7 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, void InteropClient::DoComputeEngineCreds( const grpc::string& default_service_account, const grpc::string& oauth_scope) { - gpr_log(GPR_INFO, + gpr_log(GPR_DEBUG, "Sending a large unary rpc with compute engine credentials ..."); SimpleRequest request; SimpleResponse response; @@ -216,19 +216,19 @@ void InteropClient::DoComputeEngineCreds( request.set_fill_oauth_scope(true); request.set_response_type(PayloadType::COMPRESSABLE); PerformLargeUnary(&request, &response); - gpr_log(GPR_INFO, "Got username %s", response.username().c_str()); - gpr_log(GPR_INFO, "Got oauth_scope %s", response.oauth_scope().c_str()); + gpr_log(GPR_DEBUG, "Got username %s", response.username().c_str()); + gpr_log(GPR_DEBUG, "Got oauth_scope %s", response.oauth_scope().c_str()); GPR_ASSERT(!response.username().empty()); GPR_ASSERT(response.username().c_str() == default_service_account); GPR_ASSERT(!response.oauth_scope().empty()); const char* oauth_scope_str = response.oauth_scope().c_str(); GPR_ASSERT(oauth_scope.find(oauth_scope_str) != grpc::string::npos); - gpr_log(GPR_INFO, "Large unary with compute engine creds done."); + gpr_log(GPR_DEBUG, "Large unary with compute engine creds done."); } void InteropClient::DoOauth2AuthToken(const grpc::string& username, const grpc::string& oauth_scope) { - gpr_log(GPR_INFO, + gpr_log(GPR_DEBUG, "Sending a unary rpc with raw oauth2 access token credentials ..."); SimpleRequest request; SimpleResponse response; @@ -245,11 +245,11 @@ void InteropClient::DoOauth2AuthToken(const grpc::string& username, GPR_ASSERT(username == response.username()); const char* oauth_scope_str = response.oauth_scope().c_str(); GPR_ASSERT(oauth_scope.find(oauth_scope_str) != grpc::string::npos); - gpr_log(GPR_INFO, "Unary with oauth2 access token credentials done."); + gpr_log(GPR_DEBUG, "Unary with oauth2 access token credentials done."); } void InteropClient::DoPerRpcCreds(const grpc::string& json_key) { - gpr_log(GPR_INFO, "Sending a unary rpc with per-rpc JWT access token ..."); + gpr_log(GPR_DEBUG, "Sending a unary rpc with per-rpc JWT access token ..."); SimpleRequest request; SimpleResponse response; request.set_fill_username(true); @@ -266,11 +266,12 @@ void InteropClient::DoPerRpcCreds(const grpc::string& json_key) { AssertOkOrPrintErrorStatus(s); GPR_ASSERT(!response.username().empty()); GPR_ASSERT(json_key.find(response.username()) != grpc::string::npos); - gpr_log(GPR_INFO, "Unary with per-rpc JWT access token done."); + gpr_log(GPR_DEBUG, "Unary with per-rpc JWT access token done."); } void InteropClient::DoJwtTokenCreds(const grpc::string& username) { - gpr_log(GPR_INFO, "Sending a large unary rpc with JWT token credentials ..."); + gpr_log(GPR_DEBUG, + "Sending a large unary rpc with JWT token credentials ..."); SimpleRequest request; SimpleResponse response; request.set_fill_username(true); @@ -278,16 +279,16 @@ void InteropClient::DoJwtTokenCreds(const grpc::string& username) { PerformLargeUnary(&request, &response); GPR_ASSERT(!response.username().empty()); GPR_ASSERT(username.find(response.username()) != grpc::string::npos); - gpr_log(GPR_INFO, "Large unary with JWT token creds done."); + gpr_log(GPR_DEBUG, "Large unary with JWT token creds done."); } void InteropClient::DoLargeUnary() { - gpr_log(GPR_INFO, "Sending a large unary rpc..."); + gpr_log(GPR_DEBUG, "Sending a large unary rpc..."); SimpleRequest request; SimpleResponse response; request.set_response_type(PayloadType::COMPRESSABLE); PerformLargeUnary(&request, &response); - gpr_log(GPR_INFO, "Large unary done."); + gpr_log(GPR_DEBUG, "Large unary done."); } void InteropClient::DoLargeCompressedUnary() { @@ -300,20 +301,21 @@ void InteropClient::DoLargeCompressedUnary() { CompressionType_Name(compression_types[j]).c_str(), PayloadType_Name(payload_types[i]).c_str()); - gpr_log(GPR_INFO, "Sending a large compressed unary rpc %s.", log_suffix); + gpr_log(GPR_DEBUG, "Sending a large compressed unary rpc %s.", + log_suffix); SimpleRequest request; SimpleResponse response; request.set_response_type(payload_types[i]); request.set_response_compression(compression_types[j]); PerformLargeUnary(&request, &response, CompressionChecks); - gpr_log(GPR_INFO, "Large compressed unary done %s.", log_suffix); + gpr_log(GPR_DEBUG, "Large compressed unary done %s.", log_suffix); gpr_free(log_suffix); } } } void InteropClient::DoRequestStreaming() { - gpr_log(GPR_INFO, "Sending request steaming rpc ..."); + gpr_log(GPR_DEBUG, "Sending request steaming rpc ..."); ClientContext context; StreamingInputCallRequest request; @@ -334,11 +336,11 @@ void InteropClient::DoRequestStreaming() { GPR_ASSERT(response.aggregated_payload_size() == aggregated_payload_size); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Request streaming done."); + gpr_log(GPR_DEBUG, "Request streaming done."); } void InteropClient::DoResponseStreaming() { - gpr_log(GPR_INFO, "Receiving response steaming rpc ..."); + gpr_log(GPR_DEBUG, "Receiving response steaming rpc ..."); ClientContext context; StreamingOutputCallRequest request; @@ -359,7 +361,7 @@ void InteropClient::DoResponseStreaming() { GPR_ASSERT(response_stream_sizes.size() == i); Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Response streaming done."); + gpr_log(GPR_DEBUG, "Response streaming done."); } void InteropClient::DoResponseCompressedStreaming() { @@ -376,7 +378,7 @@ void InteropClient::DoResponseCompressedStreaming() { CompressionType_Name(compression_types[j]).c_str(), PayloadType_Name(payload_types[i]).c_str()); - gpr_log(GPR_INFO, "Receiving response steaming rpc %s.", log_suffix); + gpr_log(GPR_DEBUG, "Receiving response steaming rpc %s.", log_suffix); request.set_response_type(payload_types[i]); request.set_response_compression(compression_types[j]); @@ -434,14 +436,14 @@ void InteropClient::DoResponseCompressedStreaming() { Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Response streaming done %s.", log_suffix); + gpr_log(GPR_DEBUG, "Response streaming done %s.", log_suffix); gpr_free(log_suffix); } } } void InteropClient::DoResponseStreamingWithSlowConsumer() { - gpr_log(GPR_INFO, "Receiving response steaming rpc with slow consumer ..."); + gpr_log(GPR_DEBUG, "Receiving response steaming rpc with slow consumer ..."); ClientContext context; StreamingOutputCallRequest request; @@ -458,7 +460,7 @@ void InteropClient::DoResponseStreamingWithSlowConsumer() { while (stream->Read(&response)) { GPR_ASSERT(response.payload().body() == grpc::string(kResponseMessageSize, '\0')); - gpr_log(GPR_INFO, "received message %d", i); + gpr_log(GPR_DEBUG, "received message %d", i); usleep(kReceiveDelayMilliSeconds * 1000); ++i; } @@ -466,11 +468,11 @@ void InteropClient::DoResponseStreamingWithSlowConsumer() { Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Response streaming done."); + gpr_log(GPR_DEBUG, "Response streaming done."); } void InteropClient::DoHalfDuplex() { - gpr_log(GPR_INFO, "Sending half-duplex streaming rpc ..."); + gpr_log(GPR_DEBUG, "Sending half-duplex streaming rpc ..."); ClientContext context; std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, @@ -495,11 +497,11 @@ void InteropClient::DoHalfDuplex() { GPR_ASSERT(response_stream_sizes.size() == i); Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Half-duplex streaming rpc done."); + gpr_log(GPR_DEBUG, "Half-duplex streaming rpc done."); } void InteropClient::DoPingPong() { - gpr_log(GPR_INFO, "Sending Ping Pong streaming rpc ..."); + gpr_log(GPR_DEBUG, "Sending Ping Pong streaming rpc ..."); ClientContext context; std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, @@ -524,11 +526,11 @@ void InteropClient::DoPingPong() { GPR_ASSERT(!stream->Read(&response)); Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Ping pong streaming done."); + gpr_log(GPR_DEBUG, "Ping pong streaming done."); } void InteropClient::DoCancelAfterBegin() { - gpr_log(GPR_INFO, "Sending request steaming rpc ..."); + gpr_log(GPR_DEBUG, "Sending request steaming rpc ..."); ClientContext context; StreamingInputCallRequest request; @@ -537,15 +539,15 @@ void InteropClient::DoCancelAfterBegin() { std::unique_ptr<ClientWriter<StreamingInputCallRequest>> stream( serviceStub_.Get()->StreamingInputCall(&context, &response)); - gpr_log(GPR_INFO, "Trying to cancel..."); + gpr_log(GPR_DEBUG, "Trying to cancel..."); context.TryCancel(); Status s = stream->Finish(); GPR_ASSERT(s.error_code() == StatusCode::CANCELLED); - gpr_log(GPR_INFO, "Canceling streaming done."); + gpr_log(GPR_DEBUG, "Canceling streaming done."); } void InteropClient::DoCancelAfterFirstResponse() { - gpr_log(GPR_INFO, "Sending Ping Pong streaming rpc ..."); + gpr_log(GPR_DEBUG, "Sending Ping Pong streaming rpc ..."); ClientContext context; std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, @@ -561,15 +563,16 @@ void InteropClient::DoCancelAfterFirstResponse() { GPR_ASSERT(stream->Write(request)); GPR_ASSERT(stream->Read(&response)); GPR_ASSERT(response.payload().body() == grpc::string(31415, '\0')); - gpr_log(GPR_INFO, "Trying to cancel..."); + gpr_log(GPR_DEBUG, "Trying to cancel..."); context.TryCancel(); Status s = stream->Finish(); - gpr_log(GPR_INFO, "Canceling pingpong streaming done."); + gpr_log(GPR_DEBUG, "Canceling pingpong streaming done."); } void InteropClient::DoTimeoutOnSleepingServer() { - gpr_log(GPR_INFO, "Sending Ping Pong streaming rpc with a short deadline..."); + gpr_log(GPR_DEBUG, + "Sending Ping Pong streaming rpc with a short deadline..."); ClientContext context; std::chrono::system_clock::time_point deadline = @@ -585,11 +588,11 @@ void InteropClient::DoTimeoutOnSleepingServer() { Status s = stream->Finish(); GPR_ASSERT(s.error_code() == StatusCode::DEADLINE_EXCEEDED); - gpr_log(GPR_INFO, "Pingpong streaming timeout done."); + gpr_log(GPR_DEBUG, "Pingpong streaming timeout done."); } void InteropClient::DoEmptyStream() { - gpr_log(GPR_INFO, "Starting empty_stream."); + gpr_log(GPR_DEBUG, "Starting empty_stream."); ClientContext context; std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, @@ -600,11 +603,12 @@ void InteropClient::DoEmptyStream() { GPR_ASSERT(stream->Read(&response) == false); Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "empty_stream done."); + gpr_log(GPR_DEBUG, "empty_stream done."); } void InteropClient::DoStatusWithMessage() { - gpr_log(GPR_INFO, "Sending RPC with a request for status code 2 and message"); + gpr_log(GPR_DEBUG, + "Sending RPC with a request for status code 2 and message"); ClientContext context; SimpleRequest request; @@ -618,7 +622,7 @@ void InteropClient::DoStatusWithMessage() { GPR_ASSERT(s.error_code() == grpc::StatusCode::UNKNOWN); GPR_ASSERT(s.error_message() == test_msg); - gpr_log(GPR_INFO, "Done testing Status and Message"); + gpr_log(GPR_DEBUG, "Done testing Status and Message"); } } // namespace testing diff --git a/test/cpp/interop/stress_interop_client.cc b/test/cpp/interop/stress_interop_client.cc index 5d2951e3ed..04671fb935 100644 --- a/test/cpp/interop/stress_interop_client.cc +++ b/test/cpp/interop/stress_interop_client.cc @@ -112,7 +112,7 @@ void StressTestInteropClient::MainLoop(std::shared_ptr<Gauge> qps_gauge) { gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) { // Select the test case to execute based on the weights and execute it TestCaseType test_case = test_selector_.GetNextTest(); - gpr_log(GPR_INFO, "%d - Executing the test case %d", test_id_, test_case); + gpr_log(GPR_DEBUG, "%d - Executing the test case %d", test_id_, test_case); RunTest(test_case); num_calls_per_interval++; diff --git a/test/cpp/interop/stress_test.cc b/test/cpp/interop/stress_test.cc index ce72febaaa..05d5f2e339 100644 --- a/test/cpp/interop/stress_test.cc +++ b/test/cpp/interop/stress_test.cc @@ -50,6 +50,10 @@ #include "src/proto/grpc/testing/metrics.grpc.pb.h" #include "src/proto/grpc/testing/metrics.pb.h" +extern "C" { +extern void gpr_default_log(gpr_log_func_args* args); +} + DEFINE_int32(metrics_port, 8081, "The metrics server port."); DEFINE_int32(metrics_collection_interval_secs, 5, @@ -94,6 +98,12 @@ DEFINE_string(test_cases, "", " 'large_unary', 10% of the time and 'empty_stream' the remaining" " 70% of the time"); +DEFINE_int32(log_level, GPR_LOG_SEVERITY_DEBUG, + "Severity level of messages that should be logged. Any messages " + "greater than or equal to the level set here will be logged. " + "The choices are: 0 (GPR_LOG_SEVERITY_DEBUG), 1 " + "(GPR_LOG_SEVERITY_INFO) and 2 (GPR_LOG_SEVERITY_ERROR."); + using grpc::testing::kTestCaseList; using grpc::testing::MetricsService; using grpc::testing::MetricsServiceImpl; @@ -102,6 +112,16 @@ using grpc::testing::TestCaseType; using grpc::testing::UNKNOWN_TEST; using grpc::testing::WeightedRandomTestSelector; +static int log_level = GPR_LOG_SEVERITY_DEBUG; + +// A simple wrapper to grp_default_log() function. This only logs messages at or +// above the current log level (set in 'log_level' variable) +void TestLogFunction(gpr_log_func_args* args) { + if (args->severity >= log_level) { + gpr_default_log(args); + } +} + TestCaseType GetTestTypeFromName(const grpc::string& test_name) { TestCaseType test_case = UNKNOWN_TEST; @@ -190,6 +210,18 @@ void LogParameterInfo(const std::vector<grpc::string>& addresses, int main(int argc, char** argv) { grpc::testing::InitTest(&argc, &argv, true); + if (FLAGS_log_level > GPR_LOG_SEVERITY_ERROR || + FLAGS_log_level < GPR_LOG_SEVERITY_DEBUG) { + gpr_log(GPR_ERROR, "log_level should be an integer between %d and %d", + GPR_LOG_SEVERITY_DEBUG, GPR_LOG_SEVERITY_ERROR); + return 1; + } + + // Change the default log function to TestLogFunction which respects the + // log_level setting. + log_level = FLAGS_log_level; + gpr_set_log_function(TestLogFunction); + srand(time(NULL)); // Parse the server addresses @@ -198,7 +230,7 @@ int main(int argc, char** argv) { // Parse test cases and weights if (FLAGS_test_cases.length() == 0) { - gpr_log(GPR_INFO, "Not running tests. The 'test_cases' string is empty"); + gpr_log(GPR_ERROR, "Not running tests. The 'test_cases' string is empty"); return 1; } @@ -270,6 +302,5 @@ int main(int argc, char** argv) { it->join(); } - metrics_server->Wait(); return 0; } diff --git a/tools/distrib/clang_format_code.sh b/tools/distrib/clang_format_code.sh index bc913cb6c1..612074acdf 100755 --- a/tools/distrib/clang_format_code.sh +++ b/tools/distrib/clang_format_code.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 @@ -37,5 +37,5 @@ cd $(dirname $0)/../.. docker build -t grpc_clang_format tools/dockerfile/grpc_clang_format # run clang-format against the checked out codebase -docker run -e TEST=$TEST --rm=true -v `pwd`:/local-code -t grpc_clang_format /clang_format_all_the_things.sh +docker run -e TEST=$TEST --rm=true -v ${HOST_GIT_ROOT:-`pwd`}:/local-code -t grpc_clang_format /clang_format_all_the_things.sh diff --git a/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh b/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh index 60fd30cd6f..ededc6e809 100755 --- a/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh +++ b/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.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 @@ -28,6 +28,8 @@ # (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 -e + # directories to run against DIRS="src/core src/cpp test/core test/cpp include" @@ -50,9 +52,17 @@ if [ "x$TEST" = "x" ] then echo $files | xargs $CLANG_FORMAT -i else + ok=yes for file in $files do - $CLANG_FORMAT $file | diff $file - + tmp=`mktemp` + $CLANG_FORMAT $file > $tmp + diff -u $file $tmp || ok=no + rm $tmp done + if [ $ok == no ] + then + false + fi fi diff --git a/tools/jenkins/build_docker_and_run_tests.sh b/tools/jenkins/build_docker_and_run_tests.sh index 4ab9909f9f..175b3d5651 100755 --- a/tools/jenkins/build_docker_and_run_tests.sh +++ b/tools/jenkins/build_docker_and_run_tests.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 @@ -64,6 +64,7 @@ docker run \ -e CCACHE_DIR=/tmp/ccache \ -e XDG_CACHE_HOME=/tmp/xdg-cache-home \ -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \ + -e HOST_GIT_ROOT=$git_root \ -i $TTY_FLAG \ -v "$git_root:/var/local/jenkins/grpc" \ -v /tmp/ccache:/tmp/ccache \ @@ -78,7 +79,7 @@ docker run \ if [ "$XML_REPORT" != "" ] then - docker cp "$CONTAINER_NAME:/var/local/git/grpc/$XML_REPORT" $git_root + docker cp "$CONTAINER_NAME:/var/local/git/grpc/$XML_REPORT" $git_root || true fi docker cp "$CONTAINER_NAME:/var/local/git/grpc/reports.zip" $git_root || true diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py index 48afbaf4cb..0b01bc4bec 100755 --- a/tools/run_tests/jobset.py +++ b/tools/run_tests/jobset.py @@ -178,7 +178,7 @@ class JobSpec(object): def __cmp__(self, other): return self.identity() == other.identity() - + def __repr__(self): return 'JobSpec(shortname=%s, cmdline=%s)' % (self.shortname, self.cmdline) @@ -191,7 +191,7 @@ class JobResult(object): self.num_failures = 0 self.retries = 0 self.message = '' - + class Job(object): """Manages one job.""" @@ -239,9 +239,11 @@ class Job(object): def state(self, update_cache): """Poll current state of the job. Prints messages at completion.""" - self._tempfile.seek(0) - stdout = self._tempfile.read() - self.result.message = stdout[-_MAX_RESULT_SIZE:] + def stdout(self=self): + self._tempfile.seek(0) + stdout = self._tempfile.read() + self.result.message = stdout[-_MAX_RESULT_SIZE:] + return stdout if self._state == _RUNNING and self._process.poll() is not None: elapsed = time.time() - self._start self.result.elapsed_time = elapsed @@ -249,7 +251,7 @@ class Job(object): if self._retries < self._spec.flake_retries: message('FLAKE', '%s [ret=%d, pid=%d]' % ( self._spec.shortname, self._process.returncode, self._process.pid), - stdout, do_newline=True) + stdout(), do_newline=True) self._retries += 1 self.result.num_failures += 1 self.result.retries = self._timeout_retries + self._retries @@ -259,7 +261,7 @@ class Job(object): if not self._suppress_failure_message: message('FAILED', '%s [ret=%d, pid=%d]' % ( self._spec.shortname, self._process.returncode, self._process.pid), - stdout, do_newline=True) + stdout(), do_newline=True) self.result.state = 'FAILED' self.result.num_failures += 1 self.result.returncode = self._process.returncode @@ -273,7 +275,7 @@ class Job(object): update_cache.finished(self._spec.identity(), self._bin_hash) elif self._state == _RUNNING and time.time() - self._start > self._spec.timeout_seconds: if self._timeout_retries < self._spec.timeout_retries: - message('TIMEOUT_FLAKE', '%s [pid=%d]' % (self._spec.shortname, self._process.pid), stdout, do_newline=True) + message('TIMEOUT_FLAKE', '%s [pid=%d]' % (self._spec.shortname, self._process.pid), stdout(), do_newline=True) self._timeout_retries += 1 self.result.num_failures += 1 self.result.retries = self._timeout_retries + self._retries @@ -282,7 +284,7 @@ class Job(object): self._process.terminate() self.start() else: - message('TIMEOUT', '%s [pid=%d]' % (self._spec.shortname, self._process.pid), stdout, do_newline=True) + message('TIMEOUT', '%s [pid=%d]' % (self._spec.shortname, self._process.pid), stdout(), do_newline=True) self.kill() self.result.state = 'TIMEOUT' self.result.num_failures += 1 @@ -297,7 +299,7 @@ class Job(object): def suppress_failure_message(self): self._suppress_failure_message = True - + class Jobset(object): """Manages one run of jobs.""" |