simulateLatency sleeps for the specified duration with optional standard deviation
(duration time.Duration, stdDev time.Duration)
| 84 | |
| 85 | // simulateLatency sleeps for the specified duration with optional standard deviation |
| 86 | func simulateLatency(duration time.Duration, stdDev time.Duration) { |
| 87 | if stdDev > 0 { |
| 88 | variation := time.Duration(rand.NormFloat64() * float64(stdDev)) //nolint:gosec // G404 |
| 89 | // possibility of having a crazy big number is never a zero |
| 90 | // capping to 3 sigmas (0.3% possibility) |
| 91 | if variation > 3*stdDev { |
| 92 | variation = 3 * stdDev |
| 93 | } else if variation < -3*stdDev { |
| 94 | variation = -3 * stdDev |
| 95 | } |
| 96 | duration += variation |
| 97 | } |
| 98 | if duration <= 0 { |
| 99 | return |
| 100 | } |
| 101 | time.Sleep(duration) |
| 102 | } |