fix(GODT-3124): Race conditions reported by race check

This commit is contained in:
Leander Beernaert
2023-11-27 16:30:27 +01:00
parent 414d74d06a
commit f7434109be
3 changed files with 62 additions and 31 deletions

View File

@ -20,6 +20,7 @@ package tests
import (
"context"
"errors"
"sync"
"testing"
"time"
@ -29,6 +30,7 @@ import (
)
type heartbeatRecorder struct {
lock sync.Mutex
heartbeat telemetry.HeartbeatData
bridge *bridge.Bridge
reject bool
@ -74,10 +76,19 @@ func (hb *heartbeatRecorder) SendHeartbeat(_ context.Context, metrics *telemetry
if hb.reject {
return false
}
hb.lock.Lock()
defer hb.lock.Unlock()
hb.heartbeat = *metrics
return true
}
func (hb *heartbeatRecorder) GetRecordedHeartbeat() telemetry.HeartbeatData {
hb.lock.Lock()
defer hb.lock.Unlock()
return hb.heartbeat
}
func (hb *heartbeatRecorder) SetLastHeartbeatSent(timestamp time.Time) error {
if hb.bridge == nil {
return errors.New("no bridge initialized")

View File

@ -43,7 +43,7 @@ func (s *scenario) bridgeSendsTheFollowingHeartbeat(text *godog.DocString) error
return err
}
return matchHeartbeat(s.t.heartbeat.heartbeat, wantHeartbeat)
return matchHeartbeat(s.t.heartbeat.GetRecordedHeartbeat(), wantHeartbeat)
}
func (s *scenario) bridgeNeedsToSendHeartbeat() error {