From d42e01b07ceb172cd1b6f3fcb0684e5b212fd4c5 Mon Sep 17 00:00:00 2001 From: Brian Brazil Date: Mon, 27 Mar 2017 15:44:37 +0100 Subject: [PATCH] Sort labelnames for federation. This makes unittests with multiple labels possible, and may be needed for performance with the new ingestion text parser. --- web/federate.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/web/federate.go b/web/federate.go index f910fbab30..2423b25776 100644 --- a/web/federate.go +++ b/web/federate.go @@ -85,7 +85,16 @@ func (h *Handler) federation(w http.ResponseWriter, req *http.Request) { Untyped: &dto.Untyped{}, } - for ln, lv := range s.Metric { + // Sort labelnames for unittest consistency. + labelnames := make([]string, 0, len(s.Metric)) + for ln := range s.Metric { + labelnames = append(labelnames, string(ln)) + } + sort.Strings(labelnames) + + for _, labelname := range labelnames { + ln := model.LabelName(labelname) + lv := s.Metric[ln] if lv == "" { // No value means unset. Never consider those labels. // This is also important to protect against nameless metrics.