From 89c43dd0d7e3202284780147f8de26db42634402 Mon Sep 17 00:00:00 2001 From: Brian Brazil Date: Fri, 26 Dec 2014 13:14:19 +0000 Subject: [PATCH] Sort targets on the status page. Change-Id: I6b59c97ab50093c50b608e29be2304475bc5d9f6 --- retrieval/targetpool.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/retrieval/targetpool.go b/retrieval/targetpool.go index 7df153a27..63b458e43 100644 --- a/retrieval/targetpool.go +++ b/retrieval/targetpool.go @@ -14,6 +14,7 @@ package retrieval import ( + "sort" "sync" "time" @@ -137,14 +138,27 @@ func (p *TargetPool) ReplaceTargets(newTargets []Target) { wg.Wait() } -// Targets returns a copy of the current target list. +type targetsByURL []Target + +func (s targetsByURL) Len() int { + return len(s) +} +func (s targetsByURL) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} +func (s targetsByURL) Less(i, j int) bool { + return s[i].URL() < s[j].URL() +} + +// Targets returns a sorted copy of the current target list. func (p *TargetPool) Targets() []Target { p.RLock() defer p.RUnlock() - targets := make([]Target, 0, len(p.targetsByURL)) + targets := make(targetsByURL, 0, len(p.targetsByURL)) for _, v := range p.targetsByURL { targets = append(targets, v) } + sort.Sort(targets) return targets }