PositiveJitter returns random duration from "0" to "input*variance" interval.
(input time.Duration, variancePerc float64)
| 98 | |
| 99 | // PositiveJitter returns random duration from "0" to "input*variance" interval. |
| 100 | func PositiveJitter(input time.Duration, variancePerc float64) time.Duration { |
| 101 | // No duration or no variancePerc? No jitter. |
| 102 | if input == 0 || variancePerc == 0 { |
| 103 | return 0 |
| 104 | } |
| 105 | |
| 106 | variance := int64(float64(input) * variancePerc) |
| 107 | jitter := rand.Int63n(variance) |
| 108 | |
| 109 | return time.Duration(jitter) |
| 110 | } |
| 111 | |
| 112 | // NewDisableableTicker essentially wraps NewTicker but allows the ticker to be disabled by passing |
| 113 | // zero duration as the interval. Returns a function for stopping the ticker, and the ticker channel. |