Skip to content

Commit 6ea597f

Browse files
kritiravindKritiRav
authored andcommitted
GODRIVER-1647 fix averageRTT calculations (#426)
1 parent dd746f4 commit 6ea597f

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

x/mongo/driver/topology/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,7 @@ func (s *Server) heartbeat(conn *connection) (description.Server, *connection) {
539539
func (s *Server) updateAverageRTT(delay time.Duration) time.Duration {
540540
if !s.averageRTTSet {
541541
s.averageRTT = delay
542+
s.averageRTTSet = true
542543
} else {
543544
alpha := 0.2
544545
s.averageRTT = time.Duration(alpha*float64(delay) + (1-alpha)*float64(s.averageRTT))

x/mongo/driver/topology/server_rtt_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ import (
1414
"time"
1515

1616
"github.com/stretchr/testify/require"
17-
"go.mongodb.org/mongo-driver/internal/testutil/helpers"
17+
testhelpers "go.mongodb.org/mongo-driver/internal/testutil/helpers"
1818
)
1919

2020
// Test case for all server selection rtt spec tests.
2121
func TestServerSelectionRTTSpec(t *testing.T) {
2222

2323
type testCase struct {
24-
AvgRttMs json.Number `json:"avg_rtt_ms"`
24+
// AvgRttMs is either "NULL" or float
25+
AvgRttMs interface{} `json:"avg_rtt_ms"`
2526
NewRttMs float64 `json:"new_rtt_ms"`
2627
NewAvgRtt float64 `json:"new_avg_rtt"`
2728
}
@@ -44,11 +45,8 @@ func TestServerSelectionRTTSpec(t *testing.T) {
4445
var server Server
4546

4647
if test.AvgRttMs != "NULL" {
47-
avg, err := test.AvgRttMs.Float64()
48-
require.NoError(t, err)
49-
50-
server.averageRTT = time.Duration(avg * float64(time.Millisecond))
51-
server.averageRTTSet = true
48+
// If not "NULL", then must be a number, so typecast to float64
49+
server.updateAverageRTT(time.Duration(test.AvgRttMs.(float64) * float64(time.Millisecond)))
5250
}
5351

5452
server.updateAverageRTT(time.Duration(test.NewRttMs * float64(time.Millisecond)))

0 commit comments

Comments
 (0)