...
1 package ldcomponents
2
3 import (
4 "testing"
5 "time"
6
7 "github.com/launchdarkly/go-sdk-common/v3/ldlog"
8 "github.com/launchdarkly/go-sdk-common/v3/ldlogtest"
9 "github.com/launchdarkly/go-server-sdk/v6/subsystems"
10
11 "github.com/stretchr/testify/assert"
12 )
13
14 func TestLoggingConfigurationBuilder(t *testing.T) {
15 basicConfig := subsystems.BasicClientContext{}
16
17 t.Run("defaults", func(t *testing.T) {
18 c, err := Logging().Build(basicConfig)
19 assert.Nil(t, err)
20 assert.False(t, c.LogEvaluationErrors)
21 assert.False(t, c.LogContextKeyInErrors)
22 })
23
24 t.Run("LogDataSourceOutageAsErrorAfter", func(t *testing.T) {
25 c, err := Logging().LogDataSourceOutageAsErrorAfter(time.Hour).Build(basicConfig)
26 assert.Nil(t, err)
27 assert.Equal(t, time.Hour, c.LogDataSourceOutageAsErrorAfter)
28 })
29
30 t.Run("LogEvaluationErrors", func(t *testing.T) {
31 c, err := Logging().LogEvaluationErrors(true).Build(basicConfig)
32 assert.Nil(t, err)
33 assert.True(t, c.LogEvaluationErrors)
34 })
35
36 t.Run("LogContextKeyInErrors", func(t *testing.T) {
37 c, err := Logging().LogContextKeyInErrors(true).Build(basicConfig)
38 assert.Nil(t, err)
39 assert.True(t, c.LogContextKeyInErrors)
40 })
41
42 t.Run("Loggers", func(t *testing.T) {
43 mockLoggers := ldlogtest.NewMockLog()
44 c, err := Logging().Loggers(mockLoggers.Loggers).Build(basicConfig)
45 assert.Nil(t, err)
46 assert.Equal(t, mockLoggers.Loggers, c.Loggers)
47 })
48
49 t.Run("MinLevel", func(t *testing.T) {
50 mockLoggers := ldlogtest.NewMockLog()
51 c, err := Logging().Loggers(mockLoggers.Loggers).MinLevel(ldlog.Error).Build(basicConfig)
52 assert.Nil(t, err)
53 c.Loggers.Info("suppress this message")
54 c.Loggers.Error("log this message")
55 assert.Len(t, mockLoggers.GetOutput(ldlog.Info), 0)
56 assert.Equal(t, []string{"log this message"}, mockLoggers.GetOutput(ldlog.Error))
57 })
58
59 t.Run("NoLogging", func(t *testing.T) {
60 c, err := NoLogging().Build(basicConfig)
61 assert.Nil(t, err)
62 assert.Equal(t, ldlog.NewDisabledLoggers(), c.Loggers)
63 })
64
65 t.Run("nil safety", func(t *testing.T) {
66 var b *LoggingConfigurationBuilder = nil
67 b = b.LogContextKeyInErrors(true).LogDataSourceOutageAsErrorAfter(0).LogEvaluationErrors(true).
68 Loggers(ldlog.NewDefaultLoggers()).MinLevel(ldlog.Debug)
69 _, _ = b.Build(subsystems.BasicClientContext{})
70 })
71 }
72
View as plain text