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 {
|
||||
var sb strings.Builder
|
||||
sb.WriteString("MultiLabelMap:\n")
|
||||
v.Do(func(kv KeyValue[T]) {
|
||||
fmt.Fprintf(&sb, "\t%v: %v\n", kv.Key, kv.Value)
|
||||
})
|
||||
return sb.String()
|
||||
// NOTE: This has to be valid JSON because it's used by expvar.
|
||||
return `"MultiLabelMap"`
|
||||
}
|
||||
|
||||
// WritePrometheus writes v to w in Prometheus exposition format.
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"expvar"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -129,3 +130,21 @@ func BenchmarkMultiLabelWriteAllocs(b *testing.B) {
|
||||
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