From 615495913810745dd08b00bf947ec3b11932a270 Mon Sep 17 00:00:00 2001 From: Vignesh Babu Date: Tue, 16 Aug 2022 18:07:06 -0700 Subject: [PATCH] Fix flakiness in invoke_large_test (#30597) * Reduce transferred data size in invoke_large_test to reduce flakiness * Reduce number of test cases instead of reducing exchanged data size * update * Automated change: Fix sanity tests Co-authored-by: Vignesh2208 --- .../end2end/tests/invoke_large_request.cc | 62 +++++-------------- 1 file changed, 17 insertions(+), 45 deletions(-) diff --git a/test/core/end2end/tests/invoke_large_request.cc b/test/core/end2end/tests/invoke_large_request.cc index 97f316de6a7..87612bcc172 100644 --- a/test/core/end2end/tests/invoke_large_request.cc +++ b/test/core/end2end/tests/invoke_large_request.cc @@ -19,10 +19,6 @@ #include #include -#include - -#include "absl/strings/str_format.h" - #include #include #include @@ -31,6 +27,7 @@ #include #include "src/core/lib/gpr/useful.h" +#include "src/core/lib/gprpp/time.h" #include "test/core/end2end/cq_verifier.h" #include "test/core/end2end/end2end_tests.h" #include "test/core/util/test_config.h" @@ -87,32 +84,26 @@ static void end_test(grpc_end2end_test_fixture* f) { grpc_completion_queue_destroy(f->cq); } -static grpc_slice large_slice(void) { - grpc_slice slice = grpc_slice_malloc(1000000); +static grpc_slice make_slice(int message_size) { + GPR_ASSERT(message_size > 0); + grpc_slice slice = grpc_slice_malloc(message_size); memset(GRPC_SLICE_START_PTR(slice), 'x', GRPC_SLICE_LENGTH(slice)); return slice; } static void test_invoke_large_request(grpc_end2end_test_config config, - int max_frame_size, int lookahead_bytes) { - std::string name = absl::StrFormat( - "test_invoke_large_request:max_frame_size=%d:lookahead_bytes=%d", - max_frame_size, lookahead_bytes); - - grpc_arg args[2]; + int message_size) { + grpc_arg args[1]; args[0].type = GRPC_ARG_INTEGER; - args[0].key = const_cast(GRPC_ARG_HTTP2_MAX_FRAME_SIZE); - args[0].value.integer = max_frame_size; - args[1].type = GRPC_ARG_INTEGER; - args[1].key = const_cast(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES); - args[1].value.integer = lookahead_bytes; + args[0].key = const_cast(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH); + args[0].value.integer = message_size; grpc_channel_args channel_args = {GPR_ARRAY_SIZE(args), args}; - grpc_end2end_test_fixture f = - begin_test(config, name.c_str(), &channel_args, &channel_args); + grpc_end2end_test_fixture f = begin_test(config, "test_invoke_large_request", + &channel_args, &channel_args); - grpc_slice request_payload_slice = large_slice(); - grpc_slice response_payload_slice = large_slice(); + grpc_slice request_payload_slice = make_slice(message_size); + grpc_slice response_payload_slice = make_slice(message_size); grpc_call* c; grpc_call* s; grpc_byte_buffer* request_payload = @@ -133,7 +124,7 @@ static void test_invoke_large_request(grpc_end2end_test_config config, grpc_slice details; int was_cancelled = 2; - gpr_timespec deadline = n_seconds_from_now(30); + gpr_timespec deadline = n_seconds_from_now(300); c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS, f.cq, grpc_slice_from_static_string("/foo"), nullptr, deadline, nullptr); @@ -186,7 +177,7 @@ static void test_invoke_large_request(grpc_end2end_test_config config, &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cqv.Expect(tag(101), true); - cqv.Verify(); + cqv.Verify(grpc_core::Duration::Seconds(60)); memset(ops, 0, sizeof(ops)); op = ops; @@ -205,7 +196,7 @@ static void test_invoke_large_request(grpc_end2end_test_config config, GPR_ASSERT(GRPC_CALL_OK == error); cqv.Expect(tag(102), true); - cqv.Verify(); + cqv.Verify(grpc_core::Duration::Seconds(60)); memset(ops, 0, sizeof(ops)); op = ops; @@ -233,7 +224,7 @@ static void test_invoke_large_request(grpc_end2end_test_config config, cqv.Expect(tag(103), true); cqv.Expect(tag(1), true); - cqv.Verify(); + cqv.Verify(grpc_core::Duration::Seconds(60)); GPR_ASSERT(status == GRPC_STATUS_UNIMPLEMENTED); GPR_ASSERT(0 == grpc_slice_str_cmp(details, "xyz")); @@ -261,26 +252,7 @@ static void test_invoke_large_request(grpc_end2end_test_config config, } void invoke_large_request(grpc_end2end_test_config config) { - test_invoke_large_request(config, 16384, 65536); - test_invoke_large_request(config, 32768, 65536); - - test_invoke_large_request(config, 1000000 - 1, 65536); - test_invoke_large_request(config, 1000000, 65536); - test_invoke_large_request(config, 1000000 + 1, 65536); - test_invoke_large_request(config, 1000000 + 2, 65536); - test_invoke_large_request(config, 1000000 + 3, 65536); - test_invoke_large_request(config, 1000000 + 4, 65536); - test_invoke_large_request(config, 1000000 + 5, 65536); - test_invoke_large_request(config, 1000000 + 6, 65536); - - test_invoke_large_request(config, 1000000 - 1, 2000000); - test_invoke_large_request(config, 1000000, 2000000); - test_invoke_large_request(config, 1000000 + 1, 2000000); - test_invoke_large_request(config, 1000000 + 2, 2000000); - test_invoke_large_request(config, 1000000 + 3, 2000000); - test_invoke_large_request(config, 1000000 + 4, 2000000); - test_invoke_large_request(config, 1000000 + 5, 2000000); - test_invoke_large_request(config, 1000000 + 6, 2000000); + test_invoke_large_request(config, 10 * 1024 * 1024); } void invoke_large_request_pre_init(void) {}