Improvements on error

Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
This commit is contained in:
2025-11-08 15:21:53 +00:00
parent d36df1c6f5
commit fed923e7a5

38
main.go
View File

@@ -33,9 +33,13 @@ func init() {
func main() { func main() {
go (func() { go (func() {
for { for {
checkSpeed() if err := checkSpeed(); err != nil {
// Retry after a minute on error
time.Sleep(time.Minute)
} else {
time.Sleep(time.Minute * time.Duration(interval)) time.Sleep(time.Minute * time.Duration(interval))
} }
}
})() })()
collector := newSpeedCollector() collector := newSpeedCollector()
@@ -44,44 +48,57 @@ func main() {
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil)) log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil))
} }
func checkSpeed() { func checkSpeed() error {
log.Println("Performing speedtest") log.Println("Performing speedtest")
user, err := speedtest.FetchUserInfo() user, err := speedtest.FetchUserInfo()
if err != nil { if err != nil {
log.Printf("Error fetching user info: %v\n", err) log.Printf("Error fetching user info: %v\n", err)
return return err
} }
serverList, err := speedtest.FetchServers(user) serverList, err := speedtest.FetchServers(user)
if err != nil { if err != nil {
log.Printf("Error fetching server list: %v\n", err) log.Printf("Error fetching server list: %v\n", err)
return return err
} }
targets, err := serverList.FindServer([]int{serverID}) targets, err := serverList.FindServer([]int{serverID})
if err != nil { if err != nil {
log.Printf("Error finding server: %v\n", err) log.Printf("Error finding server: %v\n", err)
return return err
} }
if len(targets) == 0 { if len(targets) == 0 {
log.Printf("No servers found, falling back to defaults...") log.Printf("No servers found, falling back to defaults...")
targets, err = serverList.FindServer([]int{serverID}) targets, err = serverList.FindServer([]int{serverID})
if err != nil { if err != nil {
log.Printf("Error finding server: %v\n", err) log.Printf("Error finding server: %v\n", err)
return return err
} }
} }
target := targets[0] target := targets[0]
log.Printf("Testing against server: %s - %s [%s]\n", target.Name, target.Sponsor, target.ID) log.Printf("Testing against server: %s - %s [%s]\n", target.Name, target.Sponsor, target.ID)
target.PingTest() err = target.PingTest()
target.DownloadTest(false) if err != nil {
target.UploadTest(false) log.Printf("Error running ping test: %v\n", err)
return err
}
err = target.DownloadTest(false)
if err != nil {
log.Printf("Error running download test: %v\n", err)
return err
}
err = target.UploadTest(false)
if err != nil {
log.Printf("Error runing upload test: %v\n", err)
return err
}
latency = target.Latency latency = target.Latency
downspeed = target.DLSpeed downspeed = target.DLSpeed
upspeed = target.ULSpeed upspeed = target.ULSpeed
log.Printf("Finished speedtest. DL=%f UL=%f Ping=%v\n", downspeed, upspeed, latency) log.Printf("Finished speedtest. DL=%f UL=%f Ping=%v\n", downspeed, upspeed, latency)
if os.Getenv("DEBUG") != "" { if os.Getenv("DEBUG") != "" {
log.Println("-------------------------------------")
log.Println("Debug enabled, testing all servers...") log.Println("Debug enabled, testing all servers...")
for _, target := range serverList { for _, target := range serverList {
log.Printf("Testing against server: %s - %s [%s]\n", target.Name, target.Sponsor, target.ID) log.Printf("Testing against server: %s - %s [%s]\n", target.Name, target.Sponsor, target.ID)
@@ -93,10 +110,11 @@ func checkSpeed() {
} else { } else {
log.Printf("Finished speedtest. Failed to get valid results\n") log.Printf("Finished speedtest. Failed to get valid results\n")
} }
} }
log.Println("-------------------------------------")
} }
return nil
} }
type speedCollector struct { type speedCollector struct {