...
1
16
17 package json
18
19 import (
20 "io"
21 "os"
22 "strings"
23 "testing"
24
25 "github.com/go-logr/logr"
26 "go.uber.org/zap/zapcore"
27
28 logsapi "k8s.io/component-base/logs/api/v1"
29 logsjson "k8s.io/component-base/logs/json"
30 "k8s.io/klog/v2"
31 "k8s.io/klog/v2/test"
32 )
33
34 func init() {
35
36
37 klog.InitFlags(nil)
38 }
39
40
41 func TestJSONOutput(t *testing.T) {
42 test.InitKlog(t)
43 newLogger := func(out io.Writer, v int, vmodule string) logr.Logger {
44 logger, _ := logsjson.NewJSONLogger(logsapi.VerbosityLevel(v), logsjson.AddNopSync(out), nil,
45 &zapcore.EncoderConfig{
46 MessageKey: "msg",
47 CallerKey: "caller",
48 NameKey: "logger",
49 EncodeDuration: zapcore.StringDurationEncoder,
50 EncodeCaller: zapcore.ShortCallerEncoder,
51 })
52 return logger
53 }
54
55
56
57
58 injectVendor := func(mapping map[string]string) map[string]string {
59 if os.Getenv("GO111MODULE") != "off" {
60 return mapping
61 }
62 for key, value := range mapping {
63 mapping[key] = strings.ReplaceAll(value, "k8s.io/klog/v2", "k8s.io/kubernetes/vendor/k8s.io/klog/v2")
64 }
65 return mapping
66 }
67
68 t.Run("direct", func(t *testing.T) {
69 test.Output(t, test.OutputConfig{
70 NewLogger: newLogger,
71 ExpectedOutputMapping: injectVendor(test.ZaprOutputMappingDirect()),
72 })
73 })
74
75 t.Run("klog-backend", func(t *testing.T) {
76 test.Output(t, test.OutputConfig{
77 NewLogger: newLogger,
78 AsBackend: true,
79 ExpectedOutputMapping: injectVendor(test.ZaprOutputMappingIndirect()),
80 })
81 })
82 }
83
View as plain text