github.com/pingcap/chaos@v0.0.0-20190710112158-c86faf4b3719/pkg/generator/gen.go (about) 1 package generator 2 3 import ( 4 "math/rand" 5 "time" 6 ) 7 8 // Generator generates a series of operations 9 type Generator = func() interface{} 10 11 // Stagger introduces uniform random timing noise with a mean delay of 12 // dt duration for every operation. Delays range from 0 to 2 * dt." 13 func Stagger(dt time.Duration, gen Generator) Generator { 14 r := rand.New(rand.NewSource(time.Now().UnixNano())) 15 return func() interface{} { 16 time.Sleep(time.Duration(r.Int63n(2 * int64(dt)))) 17 return gen() 18 } 19 }