diff options
-rw-r--r-- | src/gobang.go | 7 | ||||
-rw-r--r-- | tests/gobang.go | 24 |
2 files changed, 28 insertions, 3 deletions
diff --git a/src/gobang.go b/src/gobang.go index 804cd34..bef87aa 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -232,13 +232,14 @@ func Timed(label string, thunk func() any, args ...any) any { return ret } -func MakeCounter(label string) func(...any) { - return func(args ...any) { +func MakeCounter(label string, staticArgs ...any) func(...any) { + return func(dynamicArgs ...any) { metric( "counter", label, slices.Concat( []any { "value", 1 }, - args, + staticArgs, + dynamicArgs, )..., ) } diff --git a/tests/gobang.go b/tests/gobang.go index 14fe829..6813249 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -477,6 +477,30 @@ func test_MakeCounter() { slog.SetDefault(savedLogger) emitMetric = savedFlag }) + + Testing("we have static and dynamic args", func() { + savedLogger := slog.Default() + savedFlag := emitMetric + + s := new(strings.Builder) + SetLoggerOutput(s) + emitMetric = true + + emitTCPError := MakeCounter("label-1", "key-1", "value-1") + emitTCPError("key-2", "value-2") + + var data map[string]interface{} + err := json.Unmarshal([]byte(s.String()), &data) + ErrorIf(err) + + AssertEqual(data["type"].(string), "counter") + AssertEqual(data["label"].(string), "label-1") + AssertEqual(data["key-1"].(string), "value-1") + AssertEqual(data["key-2"].(string), "value-2") + + slog.SetDefault(savedLogger) + emitMetric = savedFlag + }) } func test_MakeGauge() { |