diff options
Diffstat (limited to 'core/test/utils.go')
-rw-r--r-- | core/test/utils.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/core/test/utils.go b/core/test/utils.go index 35fbdd5..789c28e 100644 --- a/core/test/utils.go +++ b/core/test/utils.go @@ -18,6 +18,9 @@ package test import ( + "math" + "time" + "github.com/dexon-foundation/dexon-consensus-core/common" "github.com/dexon-foundation/dexon-consensus-core/core/types" ) @@ -38,3 +41,26 @@ func GenerateRandomValidatorIDs(validatorCount int) (vIDs types.ValidatorIDs) { } return } + +// CalcLatencyStatistics calculates average and deviation from a slice +// of latencies. +func CalcLatencyStatistics(latencies []time.Duration) (avg, dev time.Duration) { + var ( + sum float64 + sumOfSquareDiff float64 + ) + + // Calculate average. + for _, v := range latencies { + sum += float64(v) + } + avgAsFloat := sum / float64(len(latencies)) + avg = time.Duration(avgAsFloat) + // Calculate deviation + for _, v := range latencies { + diff := math.Abs(float64(v) - avgAsFloat) + sumOfSquareDiff += diff * diff + } + dev = time.Duration(math.Sqrt(sumOfSquareDiff / float64(len(latencies)-1))) + return +} |