Skip to content

Commit 64b4220

Browse files
authored
xds_core_end2end_test: increase timeouts to fix flakiness (grpc#29803)
* xds_core_end2end_test: increase timeouts to fix flakiness * clang-format
1 parent a4cbeee commit 64b4220

File tree

1 file changed

+35
-19
lines changed

1 file changed

+35
-19
lines changed

test/cpp/end2end/xds/xds_core_end2end_test.cc

+35-19
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ class TimeoutTest : public XdsEnd2endTest {
378378
protected:
379379
void SetUp() override {
380380
InitClient(BootstrapBuilder(), /*lb_expected_authority=*/"",
381-
/*xds_resource_does_not_exist_timeout_ms=*/500);
381+
/*xds_resource_does_not_exist_timeout_ms=*/2000);
382382
}
383383
};
384384

@@ -394,12 +394,16 @@ INSTANTIATE_TEST_SUITE_P(
394394

395395
TEST_P(TimeoutTest, LdsServerIgnoresRequest) {
396396
balancer_->ads_service()->IgnoreResourceType(kLdsTypeUrl);
397-
CheckRpcSendFailure(DEBUG_LOCATION);
397+
CheckRpcSendFailure(DEBUG_LOCATION,
398+
CheckRpcSendFailureOptions().set_rpc_options(
399+
RpcOptions().set_timeout_ms(4000)));
398400
}
399401

400402
TEST_P(TimeoutTest, LdsResourceNotPresentInRequest) {
401403
balancer_->ads_service()->UnsetResource(kLdsTypeUrl, kServerName);
402-
CheckRpcSendFailure(DEBUG_LOCATION);
404+
CheckRpcSendFailure(DEBUG_LOCATION,
405+
CheckRpcSendFailureOptions().set_rpc_options(
406+
RpcOptions().set_timeout_ms(4000)));
403407
}
404408

405409
TEST_P(TimeoutTest, LdsSecondResourceNotPresentInRequest) {
@@ -410,7 +414,7 @@ TEST_P(TimeoutTest, LdsSecondResourceNotPresentInRequest) {
410414
CreateAndStartBackends(1);
411415
EdsResourceArgs args({{"locality0", CreateEndpointsForBackends()}});
412416
balancer_->ads_service()->SetEdsResource(BuildEdsResource(args));
413-
WaitForAllBackends(DEBUG_LOCATION);
417+
CheckRpcSendOk(DEBUG_LOCATION, 1, RpcOptions().set_timeout_ms(4000));
414418
// Create second channel for a new server name.
415419
// This should fail because there is no LDS resource for this server name.
416420
auto channel2 =
@@ -420,21 +424,25 @@ TEST_P(TimeoutTest, LdsSecondResourceNotPresentInRequest) {
420424
EchoRequest request;
421425
EchoResponse response;
422426
RpcOptions rpc_options;
423-
rpc_options.SetupRpc(&context, &request);
427+
rpc_options.set_timeout_ms(4000).SetupRpc(&context, &request);
424428
auto status =
425429
SendRpcMethod(stub2.get(), rpc_options, &context, request, &response);
426430
EXPECT_EQ(StatusCode::UNAVAILABLE, status.error_code());
427431
}
428432

429433
TEST_P(TimeoutTest, RdsServerIgnoresRequest) {
430434
balancer_->ads_service()->IgnoreResourceType(kRdsTypeUrl);
431-
CheckRpcSendFailure(DEBUG_LOCATION);
435+
CheckRpcSendFailure(DEBUG_LOCATION,
436+
CheckRpcSendFailureOptions().set_rpc_options(
437+
RpcOptions().set_timeout_ms(4000)));
432438
}
433439

434440
TEST_P(TimeoutTest, RdsResourceNotPresentInRequest) {
435441
balancer_->ads_service()->UnsetResource(kRdsTypeUrl,
436442
kDefaultRouteConfigurationName);
437-
CheckRpcSendFailure(DEBUG_LOCATION);
443+
CheckRpcSendFailure(DEBUG_LOCATION,
444+
CheckRpcSendFailureOptions().set_rpc_options(
445+
RpcOptions().set_timeout_ms(4000)));
438446
}
439447

440448
TEST_P(TimeoutTest, RdsSecondResourceNotPresentInRequest) {
@@ -445,6 +453,7 @@ TEST_P(TimeoutTest, RdsSecondResourceNotPresentInRequest) {
445453
CreateAndStartBackends(1);
446454
EdsResourceArgs args({{"locality0", CreateEndpointsForBackends()}});
447455
balancer_->ads_service()->SetEdsResource(BuildEdsResource(args));
456+
CheckRpcSendOk(DEBUG_LOCATION, 1, RpcOptions().set_timeout_ms(4000));
448457
// Add listener for 2nd channel, but no RDS resource.
449458
const char* kNewServerName = "new-server.example.com";
450459
Listener listener = default_listener_;
@@ -456,7 +465,6 @@ TEST_P(TimeoutTest, RdsSecondResourceNotPresentInRequest) {
456465
rds->mutable_config_source()->mutable_self();
457466
ClientHcmAccessor().Pack(http_connection_manager, &listener);
458467
balancer_->ads_service()->SetLdsResource(listener);
459-
WaitForAllBackends(DEBUG_LOCATION);
460468
// Create second channel for a new server name.
461469
// This should fail because the LDS resource points to a non-existent RDS
462470
// resource.
@@ -466,27 +474,31 @@ TEST_P(TimeoutTest, RdsSecondResourceNotPresentInRequest) {
466474
EchoRequest request;
467475
EchoResponse response;
468476
RpcOptions rpc_options;
469-
rpc_options.SetupRpc(&context, &request);
477+
rpc_options.set_timeout_ms(4000).SetupRpc(&context, &request);
470478
auto status =
471479
SendRpcMethod(stub2.get(), rpc_options, &context, request, &response);
472480
EXPECT_EQ(StatusCode::UNAVAILABLE, status.error_code());
473481
}
474482

475483
TEST_P(TimeoutTest, CdsServerIgnoresRequest) {
476484
balancer_->ads_service()->IgnoreResourceType(kCdsTypeUrl);
477-
CheckRpcSendFailure(DEBUG_LOCATION);
485+
CheckRpcSendFailure(DEBUG_LOCATION,
486+
CheckRpcSendFailureOptions().set_rpc_options(
487+
RpcOptions().set_timeout_ms(4000)));
478488
}
479489

480490
TEST_P(TimeoutTest, CdsResourceNotPresentInRequest) {
481491
balancer_->ads_service()->UnsetResource(kCdsTypeUrl, kDefaultClusterName);
482-
CheckRpcSendFailure(DEBUG_LOCATION);
492+
CheckRpcSendFailure(DEBUG_LOCATION,
493+
CheckRpcSendFailureOptions().set_rpc_options(
494+
RpcOptions().set_timeout_ms(4000)));
483495
}
484496

485497
TEST_P(TimeoutTest, CdsSecondResourceNotPresentInRequest) {
486498
CreateAndStartBackends(1);
487499
EdsResourceArgs args({{"locality0", CreateEndpointsForBackends()}});
488500
balancer_->ads_service()->SetEdsResource(BuildEdsResource(args));
489-
WaitForAllBackends(DEBUG_LOCATION);
501+
CheckRpcSendOk(DEBUG_LOCATION, 1, RpcOptions().set_timeout_ms(4000));
490502
// Change route config to point to non-existing cluster.
491503
const char* kNewClusterName = "new_cluster_name";
492504
RouteConfiguration route_config = default_route_config_;
@@ -497,7 +509,7 @@ TEST_P(TimeoutTest, CdsSecondResourceNotPresentInRequest) {
497509
balancer_->ads_service()->SetRdsResource(route_config);
498510
// New cluster times out.
499511
// May need to wait a bit for the change to propagate to the client.
500-
gpr_timespec deadline = grpc_timeout_seconds_to_deadline(10);
512+
gpr_timespec deadline = grpc_timeout_seconds_to_deadline(30);
501513
bool error_seen = false;
502514
do {
503515
auto status = SendRpc();
@@ -511,20 +523,24 @@ TEST_P(TimeoutTest, CdsSecondResourceNotPresentInRequest) {
511523

512524
TEST_P(TimeoutTest, EdsServerIgnoresRequest) {
513525
balancer_->ads_service()->IgnoreResourceType(kEdsTypeUrl);
514-
CheckRpcSendFailure(DEBUG_LOCATION);
526+
CheckRpcSendFailure(DEBUG_LOCATION,
527+
CheckRpcSendFailureOptions().set_rpc_options(
528+
RpcOptions().set_timeout_ms(4000)));
515529
}
516530

517531
TEST_P(TimeoutTest, EdsResourceNotPresentInRequest) {
518532
// No need to remove EDS resource, since the test suite does not add it
519533
// by default.
520-
CheckRpcSendFailure(DEBUG_LOCATION);
534+
CheckRpcSendFailure(DEBUG_LOCATION,
535+
CheckRpcSendFailureOptions().set_rpc_options(
536+
RpcOptions().set_timeout_ms(4000)));
521537
}
522538

523539
TEST_P(TimeoutTest, EdsSecondResourceNotPresentInRequest) {
524540
CreateAndStartBackends(1);
525541
EdsResourceArgs args({{"locality0", CreateEndpointsForBackends()}});
526542
balancer_->ads_service()->SetEdsResource(BuildEdsResource(args));
527-
WaitForAllBackends(DEBUG_LOCATION);
543+
CheckRpcSendOk(DEBUG_LOCATION, 1, RpcOptions().set_timeout_ms(4000));
528544
// New cluster that points to a non-existant EDS resource.
529545
const char* kNewClusterName = "new_cluster_name";
530546
Cluster cluster = default_cluster_;
@@ -541,7 +557,7 @@ TEST_P(TimeoutTest, EdsSecondResourceNotPresentInRequest) {
541557
balancer_->ads_service()->SetRdsResource(route_config);
542558
// New EDS resource times out.
543559
// May need to wait a bit for the RDS change to propagate to the client.
544-
gpr_timespec deadline = grpc_timeout_seconds_to_deadline(10);
560+
gpr_timespec deadline = grpc_timeout_seconds_to_deadline(30);
545561
bool error_seen = false;
546562
do {
547563
auto status = SendRpc(RpcOptions().set_rpc_method(METHOD_ECHO1));
@@ -557,7 +573,7 @@ TEST_P(TimeoutTest, ServerDoesNotResendAfterAdsStreamRestart) {
557573
CreateAndStartBackends(1);
558574
EdsResourceArgs args({{"locality0", CreateEndpointsForBackends(0, 1)}});
559575
balancer_->ads_service()->SetEdsResource(BuildEdsResource(args));
560-
WaitForAllBackends(DEBUG_LOCATION);
576+
CheckRpcSendOk(DEBUG_LOCATION, 1, RpcOptions().set_timeout_ms(4000));
561577
// Stop balancer.
562578
balancer_->Shutdown();
563579
// Tell balancer to require minimum version 1 for all resource types
@@ -577,7 +593,7 @@ TEST_P(TimeoutTest, ServerDoesNotResendAfterAdsStreamRestart) {
577593
// be sure that the channel continues to use the resources from before
578594
// the restart.
579595
absl::Time deadline =
580-
absl::Now() + (absl::Seconds(5) * grpc_test_slowdown_factor());
596+
absl::Now() + (absl::Seconds(30) * grpc_test_slowdown_factor());
581597
do {
582598
CheckRpcSendOk(DEBUG_LOCATION);
583599
} while (absl::Now() < deadline);

0 commit comments

Comments
 (0)