summaryrefslogtreecommitdiff
path: root/networkQuality.go
diff options
context:
space:
mode:
Diffstat (limited to 'networkQuality.go')
-rw-r--r--networkQuality.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/networkQuality.go b/networkQuality.go
index 309aa94..10ee8d3 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,9 @@ timeout:
}
} else if probeMeasurement.Type == probe.SelfDown || probeMeasurement.Type == probe.SelfUp {
selfRtts.AddElement(probeMeasurement.Duration.Seconds())
+ if *printQualityAttenuation {
+ selfRttsQualityAttenuation.AddSample(probeMeasurement.Duration.Seconds())
+ }
}
if probeMeasurement.Type == probe.Foreign {
@@ -670,6 +680,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")
}