const megabyte … type IPerfResults … type IPerfCSVResult … func (i *IPerfCSVResult) bandwidthMB() int64 { … } // Add adds a new result to the Results struct. func (i *IPerfResults) Add(ipr *IPerfCSVResult) { … } // ToTSV exports an easily readable tab delimited format of all IPerfResults. func (i *IPerfResults) ToTSV() string { … } // NewIPerf parses an IPerf CSV output line into an IPerfCSVResult. func NewIPerf(csvLine string) (*IPerfCSVResult, error) { … } type StrSlice … func (s StrSlice) get(i int) string { … } // intOrFail is a convenience function for parsing integers. func intOrFail(debugName string, rawValue string) int64 { … } type IPerf2EnhancedCSVResults … // ParseIPerf2EnhancedResultsFromCSV parses results from iperf2 when given the -e (--enhancedreports) // and `--reportstyle C` options. // Example output for version < 2.19 (agnhost < 2.53): // 20201210141800.884,10.244.2.24,47880,10.96.114.79,6789,3,0.0-1.0,1677852672,13422821376 // 20201210141801.881,10.244.2.24,47880,10.96.114.79,6789,3,1.0-2.0,1980760064,15846080512 // 20201210141802.883,10.244.2.24,47880,10.96.114.79,6789,3,2.0-3.0,1886650368,15093202944 // Example output with version >= 2.19 (agnhost >= 2.53) // +0000:20240908113035.128,192.168.9.3,58256,192.168.9.4,5001,1,0.0-1.0,5220466748,41763733984,-1,-1,-1,-1,0,0 // +0000:20240908113036.128,192.168.9.3,58256,192.168.9.4,5001,1,1.0-2.0,5127667712,41021341696,-1,-1,-1,-1,0,0 // +0000:20240908113037.128,192.168.9.3,58256,192.168.9.4,5001,1,2.0-3.0,5127405568,41019244544,-1,-1,-1,-1,0,0 // +0000:20240908113038.128,192.168.9.3,58256,192.168.9.4,5001,1,3.0-4.0,5173018624,41384148992,-1,-1,-1,-1,0,0 // +0000:20240908113039.128,192.168.9.3,58256,192.168.9.4,5001,1,4.0-5.0,5245894656,41967157248,-1,-1,-1,-1,0,0 // +0000:20240908113040.128,192.168.9.3,58256,192.168.9.4,5001,1,5.0-6.0,5213257728,41706061824,-1,-1,-1,-1,0,0 // +0000:20240908113041.128,192.168.9.3,58256,192.168.9.4,5001,1,6.0-7.0,5113118720,40904949760,-1,-1,-1,-1,0,0 // +0000:20240908113042.128,192.168.9.3,58256,192.168.9.4,5001,1,7.0-8.0,5242748928,41941991424,-1,-1,-1,-1,0,0 func ParseIPerf2EnhancedResultsFromCSV(output string) (*IPerf2EnhancedCSVResults, error) { … } type IPerf2NodeToNodeCSVResults …