@@ -651,12 +651,15 @@ TEST(AsyncWriterConnectionTest, UnexpectedQueryFailsWithoutError) {
651651TEST (AsyncWriterConnectionImpl, WriteHandleIsPropagatedAfterQuery) {
652652 AsyncSequencer<bool > sequencer;
653653 auto mock = std::make_unique<MockStream>();
654+ int write_call_count = 0 ;
654655 EXPECT_CALL (*mock, Write)
655- .WillOnce ([&](Request const & req, grpc::WriteOptions) {
656+ .Times (2 )
657+ .WillRepeatedly ([&](Request const & req, grpc::WriteOptions) {
656658 EXPECT_TRUE (req.has_append_object_spec ());
657659 EXPECT_TRUE (req.append_object_spec ().has_write_handle ());
658660 EXPECT_EQ (req.append_object_spec ().write_handle ().handle (),
659661 " test-handle" );
662+ ++write_call_count;
660663 return sequencer.PushBack (" Write" );
661664 });
662665 EXPECT_CALL (*mock, Read).WillOnce ([&]() {
@@ -679,11 +682,21 @@ TEST(AsyncWriterConnectionImpl, WriteHandleIsPropagatedAfterQuery) {
679682 TestOptions (), req, std::move (mock), hash, 0 );
680683
681684 EXPECT_THAT (tested->Query ().get (), IsOkAndHolds (42 ));
682- auto result = tested->Write (WritePayload (" payload" ));
683- auto next = sequencer.PopFrontWithName ();
684- ASSERT_THAT (next.second , " Write" );
685- next.first .set_value (true );
686- EXPECT_STATUS_OK (result.get ());
685+
686+ auto result1 = tested->Write (WritePayload (" payload1" ));
687+ auto next1 = sequencer.PopFrontWithName ();
688+ ASSERT_THAT (next1.second , " Write" );
689+ next1.first .set_value (true );
690+ EXPECT_STATUS_OK (result1.get ());
691+
692+ // Second write should also include write_handle.
693+ auto result2 = tested->Write (WritePayload (" payload2" ));
694+ auto next2 = sequencer.PopFrontWithName ();
695+ ASSERT_THAT (next2.second , " Write" );
696+ next2.first .set_value (true );
697+ EXPECT_STATUS_OK (result2.get ());
698+
699+ EXPECT_EQ (write_call_count, 2 );
687700}
688701
689702GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
0 commit comments