summaryrefslogtreecommitdiff
path: root/networkQuality.go
diff options
context:
space:
mode:
authorBjørn Ivar Teigen <[email protected]>2023-05-19 13:38:52 +0200
committerBjørn Ivar Teigen <[email protected]>2023-05-19 13:38:52 +0200
commit1dc9c660ca8829bd386688a56b7047644789eb9a (patch)
treee539df8859290b50556a39af1efd2a35efa0f548 /networkQuality.go
parenta0e0b1861d5b2d0d77e728042c915f5b7742e744 (diff)
Implemented basic Quality Attenuation
Diffstat (limited to 'networkQuality.go')
-rw-r--r--networkQuality.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/networkQuality.go b/networkQuality.go
index 309aa94..676d98d 100644
--- a/networkQuality.go
+++ b/networkQuality.go
@@ -33,6 +33,7 @@ import (
"github.com/network-quality/goresponsiveness/lgc"
"github.com/network-quality/goresponsiveness/ms"
"github.com/network-quality/goresponsiveness/probe"
+ "github.com/network-quality/goresponsiveness/qualityattenuation"
"github.com/network-quality/goresponsiveness/rpm"
"github.com/network-quality/goresponsiveness/stabilizer"
"github.com/network-quality/goresponsiveness/timeoutat"
@@ -86,6 +87,11 @@ var (
false,
"Enable the collection and display of extended statistics -- may not be available on certain platforms.",
)
+ printQualityAttenuation = flag.Bool(
+ "quality-attenuation",
+ false,
+ "Print quality attenuation information.",
+ )
dataLoggerBaseFileName = flag.String(
"logger-filename",
"",
@@ -469,6 +475,7 @@ func main() {
probeStabilizer := stabilizer.NewProbeStabilizer(probeI, K, S, probeStabilizerDebugLevel, probeStabilizerDebugConfig)
selfRtts := ms.NewInfiniteMathematicalSeries[float64]()
+ selfRttsQualityAttenuation := qualityattenuation.NewSimpleQualityAttenuation()
foreignRtts := ms.NewInfiniteMathematicalSeries[float64]()
// For later debugging output, record the last throughputs on load-generating connectings
@@ -543,6 +550,7 @@ timeout:
}
} else if probeMeasurement.Type == probe.SelfDown || probeMeasurement.Type == probe.SelfUp {
selfRtts.AddElement(probeMeasurement.Duration.Seconds())
+ selfRttsQualityAttenuation.AddSample(probeMeasurement.Duration.Seconds())
}
if probeMeasurement.Type == probe.Foreign {
@@ -670,6 +678,35 @@ Trimmed Mean Foreign RTT: %f
)
}
+ if *printQualityAttenuation {
+ fmt.Println("Quality Attenuation Statistics:")
+ fmt.Printf(
+ `Number of losses: %d
+Number of samples: %d
+Loss: %f
+Min: %.6f
+Max: %.6f
+Mean: %.6f
+Variance: %.6f
+Standard Deviation: %.6f
+PDV(90): %.6f
+PDV(99): %.6f
+P(90): %.6f
+P(99): %.6f
+`, selfRttsQualityAttenuation.GetNumberOfLosses(),
+ selfRttsQualityAttenuation.GetNumberOfSamples(),
+ selfRttsQualityAttenuation.GetLossPercentage(),
+ selfRttsQualityAttenuation.GetMinimum(),
+ selfRttsQualityAttenuation.GetMaximum(),
+ selfRttsQualityAttenuation.GetAverage(),
+ selfRttsQualityAttenuation.GetVariance(),
+ selfRttsQualityAttenuation.GetStandardDeviation(),
+ selfRttsQualityAttenuation.GetPDV(90),
+ selfRttsQualityAttenuation.GetPDV(99),
+ selfRttsQualityAttenuation.GetPercentile(90),
+ selfRttsQualityAttenuation.GetPercentile(99))
+ }
+
if !testRanToStability {
fmt.Printf("Test did not run to stability, these results are estimates:\n")
}