@ -9,9 +9,8 @@ import (
"sync"
"sync"
"sync/atomic"
"sync/atomic"
"testing"
"testing"
"testing/synctest"
"time"
"time"
"tailscale.com/cmd/testwrapper/flakytest"
)
)
func ExampleNewSafeFunc ( ) {
func ExampleNewSafeFunc ( ) {
@ -54,19 +53,21 @@ func ExampleNewSafeFunc() {
}
}
func TestSafeFuncHappyPath ( t * testing . T ) {
func TestSafeFuncHappyPath ( t * testing . T ) {
flakytest . Mark ( t , "https://github.com/tailscale/tailscale/issues/15348" )
synctest . Test ( t , func ( t * testing . T ) {
var count int
var count int
f := NewSafeFunc ( expvar . Func ( func ( ) any {
f := NewSafeFunc ( expvar . Func ( func ( ) any {
count ++
count ++
return count
return count
} ) , time . Millisecond , nil )
} ) , time . Second , nil )
if got , want := f . Value ( ) , 1 ; got != want {
if got , want := f . Value ( ) , 1 ; got != want {
t . Errorf ( "got %v, want %v" , got , want )
t . Errorf ( "got %v, want %v" , got , want )
}
}
if got , want := f . Value ( ) , 2 ; got != want {
time . Sleep ( 5 * time . Second ) // (fake time in synctest)
t . Errorf ( "got %v, want %v" , got , want )
if got , want := f . Value ( ) , 2 ; got != want {
}
t . Errorf ( "got %v, want %v" , got , want )
}
} )
}
}
func TestSafeFuncSlow ( t * testing . T ) {
func TestSafeFuncSlow ( t * testing . T ) {