diff --git a/lib/fasttime/fasttime.go b/lib/fasttime/fasttime.go index b10c72b24d..decdadeada 100644 --- a/lib/fasttime/fasttime.go +++ b/lib/fasttime/fasttime.go @@ -1,42 +1,5 @@ package fasttime -import ( - "testing" - "time" - - "github.com/VictoriaMetrics/VictoriaMetrics/lib/atomicutil" -) - -func init() { - go func() { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for tm := range ticker.C { - t := uint64(tm.Unix()) - currentTimestamp.Store(t) - } - }() -} - -var currentTimestamp = func() *atomicutil.Uint64 { - var x atomicutil.Uint64 - x.Store(uint64(time.Now().Unix())) - return &x -}() - -// UnixTimestamp returns the current unix timestamp in seconds. -// -// It is faster than time.Now().Unix() -func UnixTimestamp() uint64 { - if testing.Testing() { - // When executing inside the tests, use the time package directly. - // This allows to override time using synctest package. - return uint64(time.Now().Unix()) - } - - return currentTimestamp.Load() -} - // UnixDate returns date from the current unix timestamp. // // The date is calculated by dividing unix timestamp by (24*3600) diff --git a/lib/fasttime/fasttime_normal.go b/lib/fasttime/fasttime_normal.go new file mode 100644 index 0000000000..c936394062 --- /dev/null +++ b/lib/fasttime/fasttime_normal.go @@ -0,0 +1,33 @@ +//go:build !goexperiment.synctest + +package fasttime + +import ( + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/atomicutil" +) + +func init() { + go func() { + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + for tm := range ticker.C { + t := uint64(tm.Unix()) + currentTimestamp.Store(t) + } + }() +} + +var currentTimestamp = func() *atomicutil.Uint64 { + var x atomicutil.Uint64 + x.Store(uint64(time.Now().Unix())) + return &x +}() + +// UnixTimestamp returns the current unix timestamp in seconds. +// +// It is faster than time.Now().Unix() +func UnixTimestamp() uint64 { + return currentTimestamp.Load() +} diff --git a/lib/fasttime/fasttime_synctest.go b/lib/fasttime/fasttime_synctest.go new file mode 100644 index 0000000000..abb90cfa42 --- /dev/null +++ b/lib/fasttime/fasttime_synctest.go @@ -0,0 +1,13 @@ +//go:build goexperiment.synctest + +package fasttime + +import ( + "time" +) + +// UnixTimestamp returns the current unix timestamp in seconds. +func UnixTimestamp() uint64 { + // Fall back to time.Now().Unix(), since this is needed for synctest. + return uint64(time.Now().Unix()) +}