mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-25 11:05:45 +00:00
metrics: revert changes to MultiLabelMap's String method
This breaks its ability to be used as an expvar and is blocking a trunkd deploy. Revert for now, and add a test to ensure that we don't break it in a future change. Updates #13550 Signed-off-by: Andrew Dunham <andrew@du.nham.ca> Change-Id: I1f1221c257c1de47b4bff0597c12f8530736116d
This commit is contained in:
parent
65c26357b1
commit
717d589149
@ -97,12 +97,8 @@ type KeyValue[T comparable] struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (v *MultiLabelMap[T]) String() string {
|
func (v *MultiLabelMap[T]) String() string {
|
||||||
var sb strings.Builder
|
// NOTE: This has to be valid JSON because it's used by expvar.
|
||||||
sb.WriteString("MultiLabelMap:\n")
|
return `"MultiLabelMap"`
|
||||||
v.Do(func(kv KeyValue[T]) {
|
|
||||||
fmt.Fprintf(&sb, "\t%v: %v\n", kv.Key, kv.Value)
|
|
||||||
})
|
|
||||||
return sb.String()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WritePrometheus writes v to w in Prometheus exposition format.
|
// WritePrometheus writes v to w in Prometheus exposition format.
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"expvar"
|
"expvar"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@ -129,3 +130,21 @@ func BenchmarkMultiLabelWriteAllocs(b *testing.B) {
|
|||||||
m.WritePrometheus(w, "test")
|
m.WritePrometheus(w, "test")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMultiLabelMapExpvar(t *testing.T) {
|
||||||
|
m := new(MultiLabelMap[L2])
|
||||||
|
m.Add(L2{"a", "b"}, 2)
|
||||||
|
m.Add(L2{"b", "c"}, 4)
|
||||||
|
|
||||||
|
em := new(expvar.Map)
|
||||||
|
em.Set("multi", m)
|
||||||
|
|
||||||
|
// Ensure that the String method is valid JSON to ensure that it can be
|
||||||
|
// used by expvar.
|
||||||
|
encoded := []byte(em.String())
|
||||||
|
if !json.Valid(encoded) {
|
||||||
|
t.Fatalf("invalid JSON: %s", encoded)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("em = %+v", em)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user