MCPcopy Create free account
hub / github.com/coder/coder / TestLogSender_LogLimitExceeded

Function TestLogSender_LogLimitExceeded

codersdk/agentsdk/logs_internal_test.go:126–184  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

124}
125
126func TestLogSender_LogLimitExceeded(t *testing.T) {
127 t.Parallel()
128 ctx := testutil.Context(t, testutil.WaitShort)
129 logger := testutil.Logger(t)
130 fDest := newFakeLogDest()
131 uut := NewLogSender(logger)
132
133 t0 := dbtime.Now()
134
135 ls1 := uuid.UUID{0x11}
136 uut.Enqueue(ls1, Log{
137 CreatedAt: t0,
138 Output: "test log 0, src 1",
139 Level: codersdk.LogLevelInfo,
140 })
141
142 empty := make(chan error, 1)
143 go func() {
144 err := uut.WaitUntilEmpty(ctx)
145 empty <- err
146 }()
147
148 loopErr := make(chan error, 1)
149 go func() {
150 err := uut.SendLoop(ctx, fDest)
151 loopErr <- err
152 }()
153
154 req := testutil.TryReceive(ctx, t, fDest.reqs)
155 require.NotNil(t, req)
156 testutil.RequireSend(ctx, t, fDest.resps,
157 &proto.BatchCreateLogsResponse{LogLimitExceeded: true})
158
159 err := testutil.TryReceive(ctx, t, loopErr)
160 require.ErrorIs(t, err, ErrLogLimitExceeded)
161
162 // Should also unblock WaitUntilEmpty
163 err = testutil.TryReceive(ctx, t, empty)
164 require.NoError(t, err)
165
166 // we can still enqueue more logs after SendLoop returns, but they don't
167 // actually get enqueued
168 uut.Enqueue(ls1, Log{
169 CreatedAt: t0,
170 Output: "test log 2, src 1",
171 Level: codersdk.LogLevelTrace,
172 })
173 uut.L.Lock()
174 require.Len(t, uut.queues, 0)
175 uut.L.Unlock()
176
177 // Also, if we run SendLoop again, it should immediately exit.
178 go func() {
179 err := uut.SendLoop(ctx, fDest)
180 loopErr <- err
181 }()
182 err = testutil.TryReceive(ctx, t, loopErr)
183 require.ErrorIs(t, err, ErrLogLimitExceeded)

Callers

nothing calls this directly

Calls 13

EnqueueMethod · 0.95
WaitUntilEmptyMethod · 0.95
SendLoopMethod · 0.95
ContextFunction · 0.92
LoggerFunction · 0.92
NowFunction · 0.92
TryReceiveFunction · 0.92
RequireSendFunction · 0.92
newFakeLogDestFunction · 0.85
NewLogSenderFunction · 0.85
LockMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected