diff options
Diffstat (limited to 'networkQuality.go')
| -rw-r--r-- | networkQuality.go | 39 |
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") } |
