@@ -303,6 +303,9 @@ TEST(PartialResultSetResume, TooManyTransients) {
303303 auto status = reader->Finish ();
304304 EXPECT_THAT (status,
305305 StatusIs (StatusCode::kUnavailable , HasSubstr (" Try again" )));
306+ EXPECT_THAT (status.error_info ().metadata (),
307+ ::testing::Contains (::testing::Pair(" gcloud-cpp.retry.reason" ,
308+ " retry-policy-exhausted" )));
306309}
307310
308311TEST (PartialResultSetResume, ResumptionStart) {
@@ -321,8 +324,9 @@ TEST(PartialResultSetResume, ResumptionStart) {
321324 response.push_back (r56);
322325
323326 MockFactory mock_factory;
327+ grpc::ClientContext context;
324328 EXPECT_CALL (mock_factory, MakeReader)
325- .WillOnce ([&response ](std::string const & token) {
329+ .WillOnce ([&](std::string const & token) {
326330 EXPECT_TRUE (token.empty ());
327331 auto mock = std::make_unique<MockPartialResultSetReader>();
328332 EXPECT_CALL (*mock, Read (_, _))
@@ -332,9 +336,13 @@ TEST(PartialResultSetResume, ResumptionStart) {
332336 EXPECT_CALL (*mock, TryCancel ()).Times (0 );
333337 EXPECT_CALL (*mock, Finish ())
334338 .WillOnce (Return (Status (StatusCode::kUnavailable , " Try again" )));
339+ EXPECT_CALL (*mock, context)
340+ .Times (1 )
341+ .WillRepeatedly (
342+ [&]() -> grpc::ClientContext const & { return context; });
335343 return mock;
336344 })
337- .WillOnce ([&response ](std::string const & token) {
345+ .WillOnce ([&](std::string const & token) {
338346 EXPECT_TRUE (token.empty ());
339347 auto mock = std::make_unique<MockPartialResultSetReader>();
340348 EXPECT_CALL (*mock, Read (_, _))
@@ -344,15 +352,19 @@ TEST(PartialResultSetResume, ResumptionStart) {
344352 .WillOnce (Return (false ));
345353 EXPECT_CALL (*mock, TryCancel ()).Times (0 );
346354 EXPECT_CALL (*mock, Finish ()).WillOnce (Return (Status ()));
355+ EXPECT_CALL (*mock, context)
356+ .Times (13 )
357+ .WillRepeatedly (
358+ [&]() -> grpc::ClientContext const & { return context; });
347359 return mock;
348360 });
349361
350362 auto factory = [&mock_factory](std::string const & token) {
351363 return mock_factory.MakeReader (token);
352364 };
353365 auto grpc_reader = MakeTestResume (factory, Idempotency::kIdempotent );
354- auto reader =
355- PartialResultSetSource::Create (metadata , std::move (grpc_reader));
366+ auto reader = PartialResultSetSource::Create (
367+ metadata, std::make_shared<OperationContext>() , std::move (grpc_reader));
356368 ASSERT_STATUS_OK (reader);
357369
358370 // Verify the returned rows are correct, despite the resumption from the
@@ -384,8 +396,9 @@ TEST(PartialResultSetResume, ResumptionMidway) {
384396 response.push_back (r56);
385397
386398 MockFactory mock_factory;
399+ grpc::ClientContext context;
387400 EXPECT_CALL (mock_factory, MakeReader)
388- .WillOnce ([&response ](std::string const & token) {
401+ .WillOnce ([&](std::string const & token) {
389402 EXPECT_TRUE (token.empty ());
390403 auto mock = std::make_unique<MockPartialResultSetReader>();
391404 EXPECT_CALL (*mock, Read (_, _))
@@ -395,25 +408,33 @@ TEST(PartialResultSetResume, ResumptionMidway) {
395408 EXPECT_CALL (*mock, TryCancel ()).Times (0 );
396409 EXPECT_CALL (*mock, Finish ())
397410 .WillOnce (Return (Status (StatusCode::kUnavailable , " Try again" )));
411+ EXPECT_CALL (*mock, context)
412+ .Times (9 )
413+ .WillRepeatedly (
414+ [&]() -> grpc::ClientContext const & { return context; });
398415 return mock;
399416 })
400- .WillOnce ([&response ](std::string const & token) {
417+ .WillOnce ([&](std::string const & token) {
401418 EXPECT_EQ (" resume-after-4" , token);
402419 auto mock = std::make_unique<MockPartialResultSetReader>();
403420 EXPECT_CALL (*mock, Read (_, _))
404421 .WillOnce (ReadAction (response[2 ], false ))
405422 .WillOnce (Return (false ));
406423 EXPECT_CALL (*mock, TryCancel ()).Times (0 );
407424 EXPECT_CALL (*mock, Finish ()).WillOnce (Return (Status ()));
425+ EXPECT_CALL (*mock, context)
426+ .Times (5 )
427+ .WillRepeatedly (
428+ [&]() -> grpc::ClientContext const & { return context; });
408429 return mock;
409430 });
410431
411432 auto factory = [&mock_factory](std::string const & token) {
412433 return mock_factory.MakeReader (token);
413434 };
414435 auto grpc_reader = MakeTestResume (factory, Idempotency::kIdempotent );
415- auto reader =
416- PartialResultSetSource::Create (metadata , std::move (grpc_reader));
436+ auto reader = PartialResultSetSource::Create (
437+ metadata, std::make_shared<OperationContext>() , std::move (grpc_reader));
417438 ASSERT_STATUS_OK (reader);
418439
419440 // Verify the returned rows are correct, despite the resumption from a
0 commit comments