MCPcopy
hub / github.com/cloudflare/cloudflared / TestLoggerWrite_MultipleSessions

Function TestLoggerWrite_MultipleSessions

management/logger_test.go:45–93  ·  view source on GitHub ↗

Validate all sessions receive the same event

(t *testing.T)

Source from the content-addressed store, hash-verified

43
44// Validate all sessions receive the same event
45func TestLoggerWrite_MultipleSessions(t *testing.T) {
46 logger := NewLogger()
47 zlog := zerolog.New(logger).With().Timestamp().Logger().Level(zerolog.InfoLevel)
48 _, cancel := context.WithCancel(context.Background())
49 defer cancel()
50
51 session1 := newSession(logWindow, actor{}, cancel)
52 logger.Listen(session1)
53 defer logger.Remove(session1)
54 assert.Equal(t, 1, logger.ActiveSessions())
55
56 session2 := newSession(logWindow, actor{}, cancel)
57 logger.Listen(session2)
58 assert.Equal(t, 2, logger.ActiveSessions())
59
60 zlog.Info().Int(EventTypeKey, int(HTTP)).Msg("hello")
61 for _, session := range []*session{session1, session2} {
62 select {
63 case event := <-session.listener:
64 assert.NotEmpty(t, event.Time)
65 assert.Equal(t, "hello", event.Message)
66 assert.Equal(t, Info, event.Level)
67 assert.Equal(t, HTTP, event.Event)
68 default:
69 assert.Fail(t, "expected an event to be in the listener")
70 }
71 }
72
73 // Close session2 and make sure session1 still receives events
74 logger.Remove(session2)
75 zlog.Info().Int(EventTypeKey, int(HTTP)).Msg("hello2")
76 select {
77 case event := <-session1.listener:
78 assert.NotEmpty(t, event.Time)
79 assert.Equal(t, "hello2", event.Message)
80 assert.Equal(t, Info, event.Level)
81 assert.Equal(t, HTTP, event.Event)
82 default:
83 assert.Fail(t, "expected an event to be in the listener")
84 }
85
86 // Make sure a held reference to session2 doesn't receive events after being closed
87 select {
88 case <-session2.listener:
89 assert.Fail(t, "An event was not expected to be in the session listener")
90 default:
91 // pass
92 }
93}
94
95type mockWriter struct {
96 event *Log

Callers

nothing calls this directly

Calls 8

ListenMethod · 0.95
RemoveMethod · 0.95
ActiveSessionsMethod · 0.95
NewLoggerFunction · 0.85
newSessionFunction · 0.85
LoggerMethod · 0.80
IntMethod · 0.80
EqualMethod · 0.65

Tested by

no test coverage detected