@@ -513,8 +513,8 @@ func TestSessionsProse(t *testing.T) {
513513
514514 mt .ResetClient (options .Client ())
515515 client := mt .Client
516- heartbeatStarted := make (chan struct {})
517- heartbeatSucceeded := make (chan struct {})
516+ heartbeatStarted := make (chan struct {}, 1 )
517+ heartbeatSucceeded := make (chan struct {}, 1 )
518518 var clusterTimeAdvanced uint32
519519 serverMonitor := & event.ServerMonitor {
520520 ServerHeartbeatStarted : func (* event.ServerHeartbeatStartedEvent ) {
@@ -546,15 +546,25 @@ func TestSessionsProse(t *testing.T) {
546546 SetDirect (true )).
547547 ClientType (mtest .Pinned )
548548 mt .RunOpts ("20 Drivers do not gossip $clusterTime on SDAM commands" , pingOpts , func (mt * mtest.T ) {
549+ wait := func (mt * mtest.T , ch <- chan struct {}, label string ) {
550+ mt .Helper ()
551+
552+ select {
553+ case <- ch :
554+ case <- time .After (5 * time .Second ):
555+ mt .Fatalf ("timed out waiting for %s" , label )
556+ }
557+ }
558+
549559 err := mt .Client .Ping (context .Background (), readpref .Primary ())
550560 assert .NoError (mt , err , "expected no error, got: %v" , err )
551561
552562 _ , err = client .Database ("test" ).Collection ("test" ).InsertOne (context .Background (), bson.D {{"advance" , "$clusterTime" }})
553563 require .NoError (mt , err , "expected no error inserting document, got: %v" , err )
554564
555565 atomic .StoreUint32 (& clusterTimeAdvanced , 1 )
556- <- heartbeatStarted
557- <- heartbeatSucceeded
566+ wait ( mt , heartbeatStarted , "ServerHeartbeatStartedEvent" )
567+ wait ( mt , heartbeatSucceeded , "ServerHeartbeatSucceededEvent" )
558568
559569 err = mt .Client .Ping (context .Background (), readpref .Primary ())
560570 require .NoError (mt , err , "expected no error, got: %v" , err )
0 commit comments