forked from Silverfish/proton-bridge
fix(GODT-3124): Race conditions reported by race check
This commit is contained in:
@ -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")
|
||||
|
||||
@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user