From adf4f3cce05698f135da394abcf0a89a88520506 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Fri, 14 Aug 2020 13:29:02 -0700 Subject: [PATCH] cmd/tailscale/cli: make netcheck sort regions, show full region names --- cmd/tailscale/cli/netcheck.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cmd/tailscale/cli/netcheck.go b/cmd/tailscale/cli/netcheck.go index de3e8ee4b..ef4b8cb57 100644 --- a/cmd/tailscale/cli/netcheck.go +++ b/cmd/tailscale/cli/netcheck.go @@ -125,20 +125,38 @@ func printReport(dm *tailcfg.DERPMap, report *netcheck.Report) error { if len(report.RegionLatency) == 0 { fmt.Printf("\t* Nearest DERP: unknown (no response to latency probes)\n") } else { - fmt.Printf("\t* Nearest DERP: %v (%v)\n", report.PreferredDERP, dm.Regions[report.PreferredDERP].RegionCode) + fmt.Printf("\t* Nearest DERP: %v\n", dm.Regions[report.PreferredDERP].RegionName) fmt.Printf("\t* DERP latency:\n") var rids []int for rid := range dm.Regions { rids = append(rids, rid) } - sort.Ints(rids) + sort.Slice(rids, func(i, j int) bool { + l1, ok1 := report.RegionLatency[rids[i]] + l2, ok2 := report.RegionLatency[rids[j]] + if ok1 != ok2 { + if !ok1 { + return false + } + return true + } + if !ok1 { + return rids[i] < rids[j] + } + return l1 < l2 + }) for _, rid := range rids { d, ok := report.RegionLatency[rid] var latency string if ok { latency = d.Round(time.Millisecond / 10).String() } - fmt.Printf("\t\t- %v, %3s = %s\n", rid, dm.Regions[rid].RegionCode, latency) + r := dm.Regions[rid] + var derpNum string + if netcheckArgs.verbose { + derpNum = fmt.Sprintf("derp%d, ", rid) + } + fmt.Printf("\t\t- %3s: %-7s (%s%s)\n", r.RegionCode, latency, derpNum, r.RegionName) } } return nil