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

Function TestMultipleConcurrentConnections

agent/agentgit/agentgit_test.go:951–998  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

949}
950
951func TestMultipleConcurrentConnections(t *testing.T) {
952 t.Parallel()
953
954 ctx := testutil.Context(t, testutil.WaitLong)
955 repoDir := initTestRepo(t)
956 require.NoError(t, os.WriteFile(filepath.Join(repoDir, "c.go"), []byte("package c\n"), 0o600))
957
958 ps := agentgit.NewPathStore()
959 chatID := uuid.New()
960 ps.AddPaths([]uuid.UUID{chatID}, []string{filepath.Join(repoDir, "c.go")})
961
962 logger := slogtest.Make(t, nil)
963 api := agentgit.NewAPI(logger, ps)
964 srv := httptest.NewServer(api.Routes())
965 t.Cleanup(srv.Close)
966
967 wsURL := "ws" + srv.URL[len("http"):] + "/watch?chat_id=" + chatID.String()
968
969 // Create two independent connections.
970 conn1, _, err := websocket.Dial(context.Background(), wsURL, nil)
971 require.NoError(t, err)
972 t.Cleanup(func() { _ = conn1.Close(websocket.StatusNormalClosure, "") })
973
974 conn2, _, err := websocket.Dial(context.Background(), wsURL, nil)
975 require.NoError(t, err)
976 t.Cleanup(func() { _ = conn2.Close(websocket.StatusNormalClosure, "") })
977
978 stream1 := wsjson.NewStream[
979 codersdk.WorkspaceAgentGitServerMessage,
980 codersdk.WorkspaceAgentGitClientMessage,
981 ](conn1, websocket.MessageText, websocket.MessageText, logger)
982 ch1 := stream1.Chan()
983
984 stream2 := wsjson.NewStream[
985 codersdk.WorkspaceAgentGitServerMessage,
986 codersdk.WorkspaceAgentGitClientMessage,
987 ](conn2, websocket.MessageText, websocket.MessageText, logger)
988 ch2 := stream2.Chan()
989
990 // Both should receive independent responses.
991 msg1 := recvMsg(ctx, t, ch1)
992 msg2 := recvMsg(ctx, t, ch2)
993
994 assert.Equal(t, codersdk.WorkspaceAgentGitServerMessageTypeChanges, msg1.Type)
995 assert.Equal(t, codersdk.WorkspaceAgentGitServerMessageTypeChanges, msg2.Type)
996 assert.NotEmpty(t, msg1.Repositories)
997 assert.NotEmpty(t, msg2.Repositories)
998}
999
1000func TestScanLargeFileTooLargeToDiff(t *testing.T) {
1001 t.Parallel()

Callers

nothing calls this directly

Calls 15

AddPathsMethod · 0.95
RoutesMethod · 0.95
ContextFunction · 0.92
NewPathStoreFunction · 0.92
NewAPIFunction · 0.92
NewStreamFunction · 0.92
initTestRepoFunction · 0.85
recvMsgFunction · 0.85
NotEmptyMethod · 0.80
WriteFileMethod · 0.65
NewMethod · 0.65
CleanupMethod · 0.65

Tested by

no test coverage detected