MCPcopy Index your code
hub / github.com/coder/coder / TestStreamAgentReinitEvents

Function TestStreamAgentReinitEvents

codersdk/agentsdk/agentsdk_test.go:20–128  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

18)
19
20func TestStreamAgentReinitEvents(t *testing.T) {
21 t.Parallel()
22
23 t.Run("transmitted events are received", func(t *testing.T) {
24 t.Parallel()
25
26 eventToSend := agentsdk.ReinitializationEvent{
27 WorkspaceID: uuid.New(),
28 Reason: agentsdk.ReinitializeReasonPrebuildClaimed,
29 OwnerID: uuid.New(),
30 }
31
32 events := make(chan agentsdk.ReinitializationEvent, 1)
33 events <- eventToSend
34
35 transmitCtx := testutil.Context(t, testutil.WaitShort)
36 transmitErrCh := make(chan error, 1)
37 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
38 transmitter := agentsdk.NewSSEAgentReinitTransmitter(slogtest.Make(t, nil), w, r)
39 transmitErrCh <- transmitter.Transmit(transmitCtx, events)
40 }))
41 defer srv.Close()
42
43 requestCtx := testutil.Context(t, testutil.WaitShort)
44 req, err := http.NewRequestWithContext(requestCtx, "GET", srv.URL, nil)
45 require.NoError(t, err)
46 client := &http.Client{}
47 resp, err := client.Do(req)
48 require.NoError(t, err)
49 defer resp.Body.Close()
50
51 receiveCtx := testutil.Context(t, testutil.WaitShort)
52 receiver := agentsdk.NewSSEAgentReinitReceiver(resp.Body)
53 sentEvent, receiveErr := receiver.Receive(receiveCtx)
54 require.Nil(t, receiveErr)
55 require.Equal(t, eventToSend, *sentEvent)
56 })
57
58 t.Run("doesn't transmit events if the transmitter context is canceled", func(t *testing.T) {
59 t.Parallel()
60
61 eventToSend := agentsdk.ReinitializationEvent{
62 WorkspaceID: uuid.New(),
63 Reason: agentsdk.ReinitializeReasonPrebuildClaimed,
64 }
65
66 events := make(chan agentsdk.ReinitializationEvent, 1)
67 events <- eventToSend
68
69 transmitCtx, cancelTransmit := context.WithCancel(testutil.Context(t, testutil.WaitShort))
70 cancelTransmit()
71 transmitErrCh := make(chan error, 1)
72 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
73 transmitter := agentsdk.NewSSEAgentReinitTransmitter(slogtest.Make(t, nil), w, r)
74 transmitErrCh <- transmitter.Transmit(transmitCtx, events)
75 }))
76
77 defer srv.Close()

Callers

nothing calls this directly

Calls 11

TransmitMethod · 0.95
CloseMethod · 0.95
ReceiveMethod · 0.95
ContextFunction · 0.92
RunMethod · 0.65
NewMethod · 0.65
DoMethod · 0.65
CloseMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected