@@ -13,10 +13,11 @@ import (
1313 "github.com/cenkalti/backoff"
1414 "github.com/pkg/errors"
1515 "github.com/rs/zerolog/log"
16+ "github.com/showwin/speedtest-go/speedtest"
1617 "github.com/threefoldtech/zosbase/pkg/environment"
1718 "github.com/threefoldtech/zosbase/pkg/network/iperf"
1819 "github.com/threefoldtech/zosbase/pkg/perf"
19- "github.com/threefoldtech/zosbase/pkg/perf/exec_wrapper"
20+ execwrapper "github.com/threefoldtech/zosbase/pkg/perf/exec_wrapper"
2021 "github.com/threefoldtech/zosbase/pkg/perf/graphql"
2122)
2223
@@ -66,7 +67,7 @@ func (t *IperfTest) ID() string {
6667
6768// Cron returns the schedule for the tcp task
6869func (t * IperfTest ) Cron () string {
69- return "0 0 */6 * * *"
70+ return "*/10 * * * * *"
7071}
7172
7273// Description returns the task description
@@ -222,6 +223,31 @@ func (t *IperfTest) runIperfTest(ctx context.Context, clientIP string, tcp bool)
222223 if ! tcp && len (report .End .Streams ) > 0 {
223224 iperfResult .DownloadSpeed = report .End .Streams [0 ].UDP .BitsPerSecond
224225 }
226+ var speedtestServer * speedtest.Server
227+ serverList , _ := speedtest .FetchServers ()
228+ servers , _ := serverList .FindServer ([]int {})
229+ if len (servers ) > 0 {
230+ speedtestServer = servers [0 ]
231+ err = speedtestServer .DownloadTest ()
232+ if err != nil {
233+ log .Error ().Err (err ).Msg ("speedtest download test failed" )
234+ }
235+ err = speedtestServer .UploadTest ()
236+ if err != nil {
237+ log .Error ().Err (err ).Msg ("speedtest upload test failed" )
238+ }
239+ downloadSpeed := float64 (speedtestServer .DLSpeed ) * 8
240+ uploadSpeed := float64 (speedtestServer .ULSpeed ) * 8
241+ log .Debug ().Msgf ("speedtest: %f/%f vs iperf results: %f/%f" , downloadSpeed , uploadSpeed , iperfResult .DownloadSpeed , iperfResult .UploadSpeed )
242+ // take the best result
243+ if downloadSpeed > iperfResult .DownloadSpeed {
244+ iperfResult .DownloadSpeed = downloadSpeed
245+ }
246+ if uploadSpeed > iperfResult .UploadSpeed {
247+ iperfResult .UploadSpeed = uploadSpeed
248+ }
249+
250+ }
225251
226252 return iperfResult
227253}
0 commit comments