Skip to content

Commit c363b8e

Browse files
committed
WIP
1 parent fd671c9 commit c363b8e

File tree

1 file changed

+27
-14
lines changed

1 file changed

+27
-14
lines changed

internal/integration/sessions_test.go

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -511,28 +511,39 @@ func TestSessionsProse(t *testing.T) {
511511
})
512512

513513
mt.Run("20 Drivers do not gossip $clusterTime on SDAM commands", func(mt *mtest.T) {
514+
heartbeatStarted := make(chan struct{})
515+
heartbeatSucceeded := make(chan struct{})
516+
clusterTimeAdvanced := make(chan struct{})
514517
serverMonitor := &event.ServerMonitor{
515518
ServerHeartbeatStarted: func(e *event.ServerHeartbeatStartedEvent) {
516519
fmt.Println("Server heartbeat started:", e.ConnectionID)
520+
select {
521+
case _, ok := <-clusterTimeAdvanced:
522+
if !ok {
523+
heartbeatStarted <- struct{}{}
524+
}
525+
default:
526+
// NOOP
527+
}
517528
},
518529
ServerHeartbeatSucceeded: func(e *event.ServerHeartbeatSucceededEvent) {
519530
fmt.Println("Server heartbeat succeeded:", e.ConnectionID, e.Duration, e.Reply)
531+
select {
532+
case _, ok := <-clusterTimeAdvanced:
533+
if !ok {
534+
heartbeatSucceeded <- struct{}{}
535+
}
536+
default:
537+
// NOOP
538+
}
520539
},
521540
}
522541

523542
opts := options.Client().
524543
ApplyURI(mtest.ClusterURI()).
525544
SetHosts([]string{mtest.ClusterConnString().Hosts[0]}).
526545
SetDirect(true).
527-
SetHeartbeatInterval(500 * time.Millisecond).
528-
SetMonitor(&event.CommandMonitor{
529-
Started: func(_ context.Context, cse *event.CommandStartedEvent) {
530-
fmt.Println("Command started:", cse.CommandName, cse.Command)
531-
},
532-
Succeeded: func(_ context.Context, cse *event.CommandSucceededEvent) {
533-
fmt.Println("Command succeeded:", cse.CommandName, cse.Reply)
534-
},
535-
}).
546+
SetHeartbeatInterval(500 * time.Millisecond). // Minimum interval
536547
SetServerMonitor(serverMonitor)
537548

538549
client, err := mongo.Connect(opts)
@@ -546,21 +557,23 @@ func TestSessionsProse(t *testing.T) {
546557
{"ping", 1},
547558
}).Raw()
548559
require.NoError(mt, err, "expected no error, got: %v", err)
549-
mt.Log("result of ping command:", res)
560+
replyClusterTime, err := res.LookupErr("$clusterTime")
561+
require.NoError(mt, err, "$clusterTime not found in response")
550562

551563
_, err = mt.Client.Database("test").Collection("test").InsertOne(context.Background(), bson.D{{"advance", "$clusterTime"}})
552564
require.NoError(mt, err, "expected no error inserting document, got: %v", err)
553565

554-
time.Sleep(3 * time.Second)
566+
close(clusterTimeAdvanced)
567+
<-heartbeatStarted
568+
<-heartbeatSucceeded
555569

556570
res, err = client.Database("admin").RunCommand(context.Background(), bson.D{
557571
{"ping", 1},
558572
}).Raw()
559573
require.NoError(mt, err, "expected no error, got: %v", err)
560-
mt.Log("result of ping command:", res)
561-
replyClusterTimeVal, err := res.LookupErr("$clusterTime")
574+
replyClusterTimeNew, err := res.LookupErr("$clusterTime")
562575
require.NoError(mt, err, "$clusterTime not found in response")
563-
mt.Fatalf("$clusterTime: %v", replyClusterTimeVal)
576+
mt.Fatalf("$clusterTime: %v %v", replyClusterTime, replyClusterTimeNew)
564577
})
565578
}
566579

0 commit comments

Comments
 (0)