m/pkg/logtree: add Zap and gRPC facades
Change-Id: I37a861edeba9b916e17598da559bd378e494ec35
Reviewed-on: https://review.monogon.dev/c/monogon/+/1486
Reviewed-by: Leopold Schabel <leo@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/logtree/zap_test.go b/metropolis/pkg/logtree/zap_test.go
new file mode 100644
index 0000000..3917cd8
--- /dev/null
+++ b/metropolis/pkg/logtree/zap_test.go
@@ -0,0 +1,42 @@
+package logtree
+
+import (
+ "testing"
+
+ "go.uber.org/zap"
+)
+
+func TestZapify(t *testing.T) {
+ lt := New()
+
+ z := Zapify(lt.MustLeveledFor("zap"), zap.InfoLevel)
+ z.Info("foo", zap.String("strp", "strv"), zap.Int("intp", 42))
+ z.Warn("foo!", zap.String("strp", "strv"), zap.Int("intp", 1337))
+ z.Error("foo!!")
+
+ res, err := lt.Read("zap", WithBacklog(BacklogAllAvailable))
+ if err != nil {
+ t.Fatalf("Read: %v", err)
+ }
+ defer res.Close()
+
+ if want, got := 3, len(res.Backlog); want != got {
+ t.Errorf("Wanted %d entries, got %d", want, got)
+ } else {
+ for i, te := range []struct {
+ msg string
+ sev Severity
+ }{
+ {`foo {"intp":42,"strp":"strv"}`, INFO},
+ {`foo! {"intp":1337,"strp":"strv"}`, WARNING},
+ {`foo!!`, ERROR},
+ } {
+ if want, got := te.msg, res.Backlog[i].Leveled.messages[0]; want != got {
+ t.Errorf("Line %d: wanted message %q, got %q", i, want, got)
+ }
+ if want, got := te.sev, res.Backlog[i].Leveled.severity; want != got {
+ t.Errorf("Line %d: wanted level %s, got %s", i, want, got)
+ }
+ }
+ }
+}