feat(GODT-2556): Add functional test for Heartbeat Init and telemetry availability.

This commit is contained in:
Romain LE JEUNE
2023-04-21 10:06:01 +02:00
committed by Romain Le Jeune
parent 4adc6d60b9
commit d3fc9a50f6
8 changed files with 150 additions and 21 deletions

View File

@ -268,6 +268,7 @@ func run(c *cli.Context) error {
logrus.Warn("The vault is corrupt and has been wiped")
b.PushError(bridge.ErrVaultCorrupt)
}
// Start telemetry heartbeat process
b.StartHeartbeat(b)

View File

@ -83,18 +83,6 @@ func (bridge *Bridge) SetLastHeartbeatSent(timestamp time.Time) error {
func (bridge *Bridge) StartHeartbeat(manager telemetry.HeartbeatManager) {
bridge.heartbeat = telemetry.NewHeartbeat(manager, 1143, 1025, bridge.GetGluonCacheDir(), keychain.DefaultHelper)
safe.RLock(func() {
var splitMode = false
for _, user := range bridge.users {
if user.GetAddressMode() == vault.SplitMode {
splitMode = true
break
}
}
bridge.heartbeat.SetNbAccount(len(bridge.users))
bridge.heartbeat.SetSplitMode(splitMode)
}, bridge.usersLock)
bridge.heartbeat.SetRollout(bridge.GetUpdateRollout())
bridge.heartbeat.SetAutoStart(bridge.GetAutostart())
bridge.heartbeat.SetAutoUpdate(bridge.GetAutoUpdate())
@ -113,5 +101,21 @@ func (bridge *Bridge) StartHeartbeat(manager telemetry.HeartbeatManager) {
}
bridge.heartbeat.SetPrevVersion(bridge.GetLastVersion().String())
bridge.heartbeat.TrySending()
safe.RLock(func() {
var splitMode = false
for _, user := range bridge.users {
if user.GetAddressMode() == vault.SplitMode {
splitMode = true
break
}
}
var nbAccount = len(bridge.users)
bridge.heartbeat.SetNbAccount(nbAccount)
bridge.heartbeat.SetSplitMode(splitMode)
// Do not try to send if there is no user yet.
if nbAccount > 0 {
bridge.heartbeat.TrySending()
}
}, bridge.usersLock)
}

View File

@ -300,7 +300,14 @@ func (bridge *Bridge) GetTelemetryDisabled() bool {
}
func (bridge *Bridge) SetTelemetryDisabled(isDisabled bool) error {
return bridge.vault.SetTelemetryDisabled(isDisabled)
if err := bridge.vault.SetTelemetryDisabled(isDisabled); err != nil {
return err
}
// If telemetry is re-enabled locally, try to send the heartbeat.
if !isDisabled {
bridge.heartbeat.TrySending()
}
return nil
}
func (bridge *Bridge) GetUpdateChannel() updater.Channel {

View File

@ -157,7 +157,13 @@ func (heartbeat *Heartbeat) TrySending() {
heartbeat.log.WithFields(logrus.Fields{
"metrics": heartbeat.metrics,
}).Error("Failed to send heartbeat")
} else if err := heartbeat.manager.SetLastHeartbeatSent(now); err != nil {
return
}
heartbeat.log.WithFields(logrus.Fields{
"metrics": heartbeat.metrics,
}).Debug("Heartbeat sent")
if err := heartbeat.manager.SetLastHeartbeatSent(now); err != nil {
heartbeat.log.WithError(err).Warn("Cannot save last heartbeat sent to the vault.")
}
}