@@ -13,7 +13,6 @@ import (
1313 "fmt"
1414 "reflect"
1515 "sync"
16- "sync/atomic"
1716 "testing"
1817 "time"
1918
@@ -511,90 +510,92 @@ func TestSessionsProse(t *testing.T) {
511510
512511 })
513512
514- mt .Run ("20 Drivers do not gossip $clusterTime on SDAM commands" , func (mt * mtest.T ) {
515- heartbeatStarted := make (chan struct {})
516- heartbeatSucceeded := make (chan struct {})
517- var clusterTimeAdvanced uint32
518- serverMonitor := & event.ServerMonitor {
519- ServerHeartbeatStarted : func (e * event.ServerHeartbeatStartedEvent ) {
520- fmt .Println ("Server heartbeat started:" , e .ConnectionID )
521- if atomic .LoadUint32 (& clusterTimeAdvanced ) == 1 {
522- fmt .Println ("ServerHeartbeatStartedEvent: cluster time advanced" )
523- select {
524- case heartbeatStarted <- struct {}{}:
525- // NOOP
526- default :
527- // NOOP
513+ /*
514+ mt.Run("20 Drivers do not gossip $clusterTime on SDAM commands", func(mt *mtest.T) {
515+ heartbeatStarted := make(chan struct{})
516+ heartbeatSucceeded := make(chan struct{})
517+ var clusterTimeAdvanced uint32
518+ serverMonitor := &event.ServerMonitor{
519+ ServerHeartbeatStarted: func(e *event.ServerHeartbeatStartedEvent) {
520+ fmt.Println("Server heartbeat started:", e.ConnectionID)
521+ if atomic.LoadUint32(&clusterTimeAdvanced) == 1 {
522+ fmt.Println("ServerHeartbeatStartedEvent: cluster time advanced")
523+ select {
524+ case heartbeatStarted <- struct{}{}:
525+ // NOOP
526+ default:
527+ // NOOP
528+ }
528529 }
529- }
530- },
531- ServerHeartbeatSucceeded : func ( e * event. ServerHeartbeatSucceededEvent ) {
532- fmt . Println ( "Server heartbeat succeeded:" , e . ConnectionID , e . Duration , e . Reply )
533- if atomic . LoadUint32 ( & clusterTimeAdvanced ) == 1 {
534- fmt . Println ( "ServerHeartbeatSucceededEvent: cluster time advanced" )
535- select {
536- case heartbeatSucceeded <- struct {}{}:
537- // NOOP
538- default :
539- // NOOP
530+ },
531+ ServerHeartbeatSucceeded: func(e *event.ServerHeartbeatSucceededEvent) {
532+ fmt.Println("Server heartbeat succeeded:", e.ConnectionID, e.Duration, e.Reply)
533+ if atomic.LoadUint32(&clusterTimeAdvanced) == 1 {
534+ fmt.Println("ServerHeartbeatSucceededEvent: cluster time advanced")
535+ select {
536+ case heartbeatSucceeded <- struct{}{}:
537+ // NOOP
538+ default:
539+ // NOOP
540+ }
540541 }
541- }
542- },
543- }
544-
545- var pingStartedCommands []bson.Raw
546- var pingSucceededCommands []bson.Raw
547- commandMonitor := & event.CommandMonitor {
548- Started : func (_ context.Context , cse * event.CommandStartedEvent ) {
549- fmt .Println ("Command started:" , cse .CommandName , cse .Command )
550- if cse .CommandName == "ping" {
551- pingStartedCommands = append (pingStartedCommands , cse .Command )
552- }
553- },
554- Succeeded : func (_ context.Context , cse * event.CommandSucceededEvent ) {
555- fmt .Println ("Command succeeded:" , cse .CommandName , cse .Reply )
556- if cse .CommandName == "ping" {
557- pingSucceededCommands = append (pingSucceededCommands , cse .Reply )
558- }
559- },
560- }
561-
562- opts := options .Client ().
563- ApplyURI (mtest .ClusterURI ()).
564- SetHosts ([]string {mtest .ClusterConnString ().Hosts [0 ]}).
565- SetDirect (true ).
566- SetHeartbeatInterval (500 * time .Millisecond ). // Minimum interval
567- SetServerMonitor (serverMonitor ).
568- SetMonitor (commandMonitor )
569-
570- client , err := mongo .Connect (opts )
571- require .NoError (mt , err , "expected no error connecting to client, got: %v" , err )
572- defer func () {
573- err = client .Disconnect (context .Background ())
574- require .NoError (mt , err , "expected no error disconnecting client, got: %v" , err )
575- }()
576-
577- err = client .Ping (context .Background (), readpref .Primary ())
578- require .NoError (mt , err , "expected no error, got: %v" , err )
579-
580- _ , err = mt .Client .Database ("test" ).Collection ("test" ).InsertOne (context .Background (), bson.D {{"advance" , "$clusterTime" }})
581- require .NoError (mt , err , "expected no error inserting document, got: %v" , err )
582-
583- atomic .StoreUint32 (& clusterTimeAdvanced , 1 )
584- <- heartbeatStarted
585- <- heartbeatSucceeded
542+ },
543+ }
586544
587- err = client .Ping (context .Background (), readpref .Primary ())
588- require .NoError (mt , err , "expected no error, got: %v" , err )
545+ var pingStartedCommands []bson.Raw
546+ var pingSucceededCommands []bson.Raw
547+ commandMonitor := &event.CommandMonitor{
548+ Started: func(_ context.Context, cse *event.CommandStartedEvent) {
549+ fmt.Println("Command started:", cse.CommandName, cse.Command)
550+ if cse.CommandName == "ping" {
551+ pingStartedCommands = append(pingStartedCommands, cse.Command)
552+ }
553+ },
554+ Succeeded: func(_ context.Context, cse *event.CommandSucceededEvent) {
555+ fmt.Println("Command succeeded:", cse.CommandName, cse.Reply)
556+ if cse.CommandName == "ping" {
557+ pingSucceededCommands = append(pingSucceededCommands, cse.Reply)
558+ }
559+ },
560+ }
589561
590- require .Len (mt , pingStartedCommands , 2 , "expected 2 pings started, got: %v" , len (pingStartedCommands ))
591- require .Len (mt , pingSucceededCommands , 2 , "expected 2 pings succeeded, got: %v" , len (pingSucceededCommands ))
592- initialClusterTime , err := pingSucceededCommands [0 ].LookupErr ("$clusterTime" )
593- require .NoError (mt , err , "$clusterTime not found in response" )
594- currentClusterTime , err := pingStartedCommands [1 ].LookupErr ("$clusterTime" )
595- require .NoError (mt , err , "$clusterTime not found in command" )
596- assert .Equal (mt , initialClusterTime , currentClusterTime , "expected same cluster time, got %v and %v" , initialClusterTime , currentClusterTime )
597- })
562+ opts := options.Client().
563+ ApplyURI(mtest.ClusterURI()).
564+ SetHosts([]string{mtest.ClusterConnString().Hosts[0]}).
565+ SetDirect(true).
566+ SetHeartbeatInterval(500 * time.Millisecond). // Minimum interval
567+ SetServerMonitor(serverMonitor).
568+ SetMonitor(commandMonitor)
569+
570+ client, err := mongo.Connect(opts)
571+ require.NoError(mt, err, "expected no error connecting to client, got: %v", err)
572+ defer func() {
573+ err = client.Disconnect(context.Background())
574+ require.NoError(mt, err, "expected no error disconnecting client, got: %v", err)
575+ }()
576+
577+ err = client.Ping(context.Background(), readpref.Primary())
578+ require.NoError(mt, err, "expected no error, got: %v", err)
579+
580+ _, err = mt.Client.Database("test").Collection("test").InsertOne(context.Background(), bson.D{{"advance", "$clusterTime"}})
581+ require.NoError(mt, err, "expected no error inserting document, got: %v", err)
582+
583+ atomic.StoreUint32(&clusterTimeAdvanced, 1)
584+ <-heartbeatStarted
585+ <-heartbeatSucceeded
586+
587+ err = client.Ping(context.Background(), readpref.Primary())
588+ require.NoError(mt, err, "expected no error, got: %v", err)
589+
590+ require.Len(mt, pingStartedCommands, 2, "expected 2 pings started, got: %v", len(pingStartedCommands))
591+ require.Len(mt, pingSucceededCommands, 2, "expected 2 pings succeeded, got: %v", len(pingSucceededCommands))
592+ initialClusterTime, err := pingSucceededCommands[0].LookupErr("$clusterTime")
593+ require.NoError(mt, err, "$clusterTime not found in response")
594+ currentClusterTime, err := pingStartedCommands[1].LookupErr("$clusterTime")
595+ require.NoError(mt, err, "$clusterTime not found in command")
596+ assert.Equal(mt, initialClusterTime, currentClusterTime, "expected same cluster time, got %v and %v", initialClusterTime, currentClusterTime)
597+ })
598+ */
598599
599600 mt .Run ("ping test" , func (mt * mtest.T ) {
600601 serverMonitor := & event.ServerMonitor {
0 commit comments