diff options
| author | Bjørn Ivar Teigen <[email protected]> | 2023-05-19 13:38:52 +0200 |
|---|---|---|
| committer | Bjørn Ivar Teigen <[email protected]> | 2023-05-19 13:38:52 +0200 |
| commit | 1dc9c660ca8829bd386688a56b7047644789eb9a (patch) | |
| tree | e539df8859290b50556a39af1efd2a35efa0f548 /networkQuality.go | |
| parent | a0e0b1861d5b2d0d77e728042c915f5b7742e744 (diff) | |
Implemented basic Quality Attenuation
Diffstat (limited to 'networkQuality.go')
| -rw-r--r-- | networkQuality.go | 37 |
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") } |
