@@ -38,6 +38,8 @@ class TFixture : public NUnitTest::TBaseFixture {
3838 void Write (const TString& message, NTable::TTransaction* tx = nullptr );
3939
4040 size_t AckCount () const { return WrittenAckCount + WrittenInTxAckCount; }
41+
42+ void WaitForEvent ();
4143 };
4244
4345 void SetUp (NUnitTest::TTestContext&) override ;
@@ -595,26 +597,31 @@ auto TFixture::GetTopicReadSession(const TString& topicPath,
595597void TFixture::TTopicWriteSessionContext::WaitForContinuationToken ()
596598{
597599 while (!ContinuationToken.Defined ()) {
598- Session->WaitEvent ().Wait ();
599- for (auto & event : Session->GetEvents ()) {
600- if (auto * e = std::get_if<NTopic::TWriteSessionEvent::TReadyToAcceptEvent>(&event)) {
601- ContinuationToken = std::move (e->ContinuationToken );
602- } else if (auto * e = std::get_if<NTopic::TWriteSessionEvent::TAcksEvent>(&event)) {
603- for (auto & ack : e->Acks ) {
604- switch (ack.State ) {
605- case NTopic::TWriteSessionEvent::TWriteAck::EES_WRITTEN:
606- ++WrittenAckCount;
607- break ;
608- case NTopic::TWriteSessionEvent::TWriteAck::EES_WRITTEN_IN_TX:
609- ++WrittenInTxAckCount;
610- break ;
611- default :
612- break ;
613- }
600+ WaitForEvent ();
601+ }
602+ }
603+
604+ void TFixture::TTopicWriteSessionContext::WaitForEvent ()
605+ {
606+ Session->WaitEvent ().Wait ();
607+ for (auto & event : Session->GetEvents ()) {
608+ if (auto * e = std::get_if<NTopic::TWriteSessionEvent::TReadyToAcceptEvent>(&event)) {
609+ ContinuationToken = std::move (e->ContinuationToken );
610+ } else if (auto * e = std::get_if<NTopic::TWriteSessionEvent::TAcksEvent>(&event)) {
611+ for (auto & ack : e->Acks ) {
612+ switch (ack.State ) {
613+ case NTopic::TWriteSessionEvent::TWriteAck::EES_WRITTEN:
614+ ++WrittenAckCount;
615+ break ;
616+ case NTopic::TWriteSessionEvent::TWriteAck::EES_WRITTEN_IN_TX:
617+ ++WrittenInTxAckCount;
618+ break ;
619+ default :
620+ break ;
614621 }
615- } else if (auto * e = std::get_if<NTopic::TSessionClosedEvent>(&event)) {
616- UNIT_FAIL (" " );
617622 }
623+ } else if (auto * e = std::get_if<NTopic::TSessionClosedEvent>(&event)) {
624+ UNIT_FAIL (" " );
618625 }
619626 }
620627}
@@ -713,27 +720,7 @@ void TFixture::WaitForAcks(const TString& topicPath, const TString& messageGroup
713720 UNIT_ASSERT (context.AckCount () <= context.WriteCount );
714721
715722 while (context.AckCount () < context.WriteCount ) {
716- context.Session ->WaitEvent ().Wait ();
717- for (auto & event : context.Session ->GetEvents ()) {
718- if (auto * e = std::get_if<NTopic::TWriteSessionEvent::TReadyToAcceptEvent>(&event)) {
719- context.ContinuationToken = std::move (e->ContinuationToken );
720- } else if (auto * e = std::get_if<NTopic::TWriteSessionEvent::TAcksEvent>(&event)) {
721- for (auto & ack : e->Acks ) {
722- switch (ack.State ) {
723- case NTopic::TWriteSessionEvent::TWriteAck::EES_WRITTEN:
724- ++context.WrittenAckCount ;
725- break ;
726- case NTopic::TWriteSessionEvent::TWriteAck::EES_WRITTEN_IN_TX:
727- ++context.WrittenInTxAckCount ;
728- break ;
729- default :
730- break ;
731- }
732- }
733- } else if (auto * e = std::get_if<NTopic::TSessionClosedEvent>(&event)) {
734- UNIT_FAIL (" " );
735- }
736- }
723+ context.WaitForEvent ();
737724 }
738725
739726 UNIT_ASSERT ((context.WrittenAckCount + context.WrittenInTxAckCount ) == context.WriteCount );
0 commit comments