@@ -589,12 +589,49 @@ func TestSessionsProse(t *testing.T) {
589589
590590 require .Len (mt , pingStartedCommands , 2 , "expected 2 pings started, got: %v" , len (pingStartedCommands ))
591591 require .Len (mt , pingSucceededCommands , 2 , "expected 2 pings succeeded, got: %v" , len (pingSucceededCommands ))
592- initialClusterTime , err := pingStartedCommands [0 ].LookupErr ("$clusterTime" )
592+ initialClusterTime , err := pingSucceededCommands [0 ].LookupErr ("$clusterTime" )
593593 require .NoError (mt , err , "$clusterTime not found in response" )
594594 currentClusterTime , err := pingStartedCommands [1 ].LookupErr ("$clusterTime" )
595595 require .NoError (mt , err , "$clusterTime not found in command" )
596596 assert .Equal (mt , initialClusterTime , currentClusterTime , "expected same cluster time, got %v and %v" , initialClusterTime , currentClusterTime )
597- mt .Fatalf ("$clusterTime: %v %v" , initialClusterTime , currentClusterTime )
597+ })
598+
599+ mt .Run ("ping test" , func (mt * mtest.T ) {
600+ serverMonitor := & event.ServerMonitor {
601+ ServerHeartbeatStarted : func (e * event.ServerHeartbeatStartedEvent ) {
602+ fmt .Println ("Server heartbeat started:" , e .ConnectionID )
603+ },
604+ ServerHeartbeatSucceeded : func (e * event.ServerHeartbeatSucceededEvent ) {
605+ fmt .Println ("Server heartbeat succeeded:" , e .ConnectionID , e .Duration , e .Reply )
606+ },
607+ }
608+
609+ commandMonitor := & event.CommandMonitor {
610+ Started : func (_ context.Context , cse * event.CommandStartedEvent ) {
611+ fmt .Println ("Command started:" , cse .CommandName , cse .Command )
612+ },
613+ Succeeded : func (_ context.Context , cse * event.CommandSucceededEvent ) {
614+ fmt .Println ("Command succeeded:" , cse .CommandName , cse .Reply )
615+ },
616+ }
617+
618+ opts := options .Client ().
619+ ApplyURI (mtest .ClusterURI ()).
620+ SetHosts ([]string {mtest .ClusterConnString ().Hosts [0 ]}).
621+ SetDirect (true ).
622+ SetHeartbeatInterval (500 * time .Millisecond ). // Minimum interval
623+ SetServerMonitor (serverMonitor ).
624+ SetMonitor (commandMonitor )
625+
626+ client , err := mongo .Connect (opts )
627+ require .NoError (mt , err , "expected no error connecting to client, got: %v" , err )
628+ defer func () {
629+ err = client .Disconnect (context .Background ())
630+ require .NoError (mt , err , "expected no error disconnecting client, got: %v" , err )
631+ }()
632+
633+ err = client .Ping (context .Background (), readpref .Primary ())
634+ require .NoError (mt , err , "expected no error, got: %v" , err )
598635 })
599636}
600637
0 commit comments