aboutsummaryrefslogtreecommitdiffstats
path: root/core/test/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/test/utils.go')
-rw-r--r--core/test/utils.go26
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
+}