mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package rpc
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/nezhahq/nezha/model"
|
|
"github.com/nezhahq/nezha/pkg/tsdb"
|
|
)
|
|
|
|
func TestStateMetricsWriterRunsOnlyForCurrentGeneration(t *testing.T) {
|
|
// Given
|
|
server := &model.Server{}
|
|
model.InitServer(server)
|
|
oldLease := server.AttachStateStream(stateGenerationStream{})
|
|
newLease := server.AttachStateStream(stateGenerationStream{})
|
|
oldCalls := 0
|
|
newCalls := 0
|
|
oldWriter := writeServerMetrics
|
|
writeServerMetrics = func(*tsdb.ServerMetrics) error {
|
|
newCalls++
|
|
return nil
|
|
}
|
|
t.Cleanup(func() { writeServerMetrics = oldWriter })
|
|
|
|
// When
|
|
oldAccepted := server.UpdateStateIfCurrentWithSideEffect(oldLease, &model.HostState{Uptime: 11}, time.Unix(100, 0), func() error {
|
|
oldCalls++
|
|
return writeServerMetrics(&tsdb.ServerMetrics{ServerID: 7, Timestamp: time.Unix(100, 0)})
|
|
})
|
|
newAccepted := server.UpdateStateIfCurrentWithSideEffect(newLease, &model.HostState{Uptime: 22}, time.Unix(200, 0), func() error {
|
|
return writeServerMetrics(&tsdb.ServerMetrics{ServerID: 7, Timestamp: time.Unix(200, 0)})
|
|
})
|
|
|
|
// Then
|
|
require.False(t, oldAccepted)
|
|
require.True(t, newAccepted)
|
|
require.Zero(t, oldCalls)
|
|
require.Equal(t, 1, newCalls)
|
|
}
|