Skip to content

Commit 5398150

Browse files
authored
chore: move workspace apps tests to new package (#7025)
* chore: move workspace apps tests to new package * chore: move reconnecting pty to apptest package
1 parent b2892c3 commit 5398150

File tree

7 files changed

+1609
-1530
lines changed

7 files changed

+1609
-1530
lines changed

coderd/activitybump_test.go

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ import (
99
"github.com/stretchr/testify/require"
1010

1111
"cdr.dev/slog/sloggers/slogtest"
12+
"github.com/coder/coder/agent"
1213
"github.com/coder/coder/coderd/coderdtest"
1314
"github.com/coder/coder/coderd/database"
1415
"github.com/coder/coder/coderd/schedule"
1516
"github.com/coder/coder/codersdk"
17+
"github.com/coder/coder/codersdk/agentsdk"
18+
"github.com/coder/coder/provisioner/echo"
19+
"github.com/coder/coder/provisionersdk/proto"
1620
"github.com/coder/coder/testutil"
1721
)
1822

@@ -29,7 +33,6 @@ func TestWorkspaceActivityBump(t *testing.T) {
2933
}
3034

3135
client = coderdtest.New(t, &coderdtest.Options{
32-
AppHostname: proxyTestSubdomainRaw,
3336
IncludeProvisionerDaemon: true,
3437
// Agent stats trigger the activity bump, so we want to report
3538
// very frequently in tests.
@@ -47,9 +50,45 @@ func TestWorkspaceActivityBump(t *testing.T) {
4750
user := coderdtest.CreateFirstUser(t, client)
4851

4952
ttlMillis := int64(ttl / time.Millisecond)
50-
workspace = createWorkspaceWithApps(t, client, user.OrganizationID, "", 1234, func(cwr *codersdk.CreateWorkspaceRequest) {
53+
agentToken := uuid.NewString()
54+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
55+
Parse: echo.ParseComplete,
56+
ProvisionPlan: echo.ProvisionComplete,
57+
ProvisionApply: []*proto.Provision_Response{{
58+
Type: &proto.Provision_Response_Complete{
59+
Complete: &proto.Provision_Complete{
60+
Resources: []*proto.Resource{{
61+
Name: "example",
62+
Type: "aws_instance",
63+
Agents: []*proto.Agent{{
64+
Id: uuid.NewString(),
65+
Name: "agent",
66+
Auth: &proto.Agent_Token{
67+
Token: agentToken,
68+
},
69+
}},
70+
}},
71+
},
72+
},
73+
}},
74+
})
75+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
76+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
77+
workspace = coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) {
5178
cwr.TTLMillis = &ttlMillis
5279
})
80+
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
81+
82+
agentClient := agentsdk.New(client.URL)
83+
agentClient.SetSessionToken(agentToken)
84+
agentCloser := agent.New(agent.Options{
85+
Client: agentClient,
86+
Logger: slogtest.Make(t, nil).Named("agent"),
87+
})
88+
t.Cleanup(func() {
89+
_ = agentCloser.Close()
90+
})
91+
coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
5392

5493
// Sanity-check that deadline is near.
5594
workspace, err := client.Workspace(ctx, workspace.ID)

coderd/client_test.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,6 @@ import (
1414
// While running tests in parallel, the web server seems to be overloaded and responds with HTTP 502.
1515
// require.Eventually expects correct HTTP responses.
1616

17-
func doWithRetries(t require.TestingT, client *codersdk.Client, req *http.Request) (*http.Response, error) {
18-
var resp *http.Response
19-
var err error
20-
require.Eventually(t, func() bool {
21-
// nolint // only requests which are not passed upstream have a body closed
22-
resp, err = client.HTTPClient.Do(req)
23-
if resp != nil && resp.StatusCode == http.StatusBadGateway {
24-
if resp.Body != nil {
25-
resp.Body.Close()
26-
}
27-
return false
28-
}
29-
return true
30-
}, testutil.WaitLong, testutil.IntervalFast)
31-
return resp, err
32-
}
33-
3417
func requestWithRetries(ctx context.Context, t require.TestingT, client *codersdk.Client, method, path string, body interface{}, opts ...codersdk.RequestOption) (*http.Response, error) {
3518
var resp *http.Response
3619
var err error

coderd/workspaceagents_test.go

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package coderd_test
22

33
import (
4-
"bufio"
54
"context"
6-
"encoding/json"
75
"fmt"
86
"net"
97
"net/http"
@@ -446,88 +444,6 @@ func TestWorkspaceAgentTailnet(t *testing.T) {
446444
require.Equal(t, "test", strings.TrimSpace(string(output)))
447445
}
448446

449-
func TestWorkspaceAgentPTY(t *testing.T) {
450-
t.Parallel()
451-
if runtime.GOOS == "windows" {
452-
// This might be our implementation, or ConPTY itself.
453-
// It's difficult to find extensive tests for it, so
454-
// it seems like it could be either.
455-
t.Skip("ConPTY appears to be inconsistent on Windows.")
456-
}
457-
client := coderdtest.New(t, &coderdtest.Options{
458-
IncludeProvisionerDaemon: true,
459-
})
460-
user := coderdtest.CreateFirstUser(t, client)
461-
authToken := uuid.NewString()
462-
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
463-
Parse: echo.ParseComplete,
464-
ProvisionPlan: echo.ProvisionComplete,
465-
ProvisionApply: echo.ProvisionApplyWithAgent(authToken),
466-
})
467-
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
468-
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
469-
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
470-
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
471-
472-
agentClient := agentsdk.New(client.URL)
473-
agentClient.SetSessionToken(authToken)
474-
agentCloser := agent.New(agent.Options{
475-
Client: agentClient,
476-
Logger: slogtest.Make(t, nil).Named("agent").Leveled(slog.LevelDebug),
477-
})
478-
defer func() {
479-
_ = agentCloser.Close()
480-
}()
481-
resources := coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
482-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
483-
defer cancel()
484-
485-
conn, err := client.WorkspaceAgentReconnectingPTY(ctx, resources[0].Agents[0].ID, uuid.New(), 80, 80, "/bin/bash")
486-
require.NoError(t, err)
487-
defer conn.Close()
488-
489-
// First attempt to resize the TTY.
490-
// The websocket will close if it fails!
491-
data, err := json.Marshal(codersdk.ReconnectingPTYRequest{
492-
Height: 250,
493-
Width: 250,
494-
})
495-
require.NoError(t, err)
496-
_, err = conn.Write(data)
497-
require.NoError(t, err)
498-
bufRead := bufio.NewReader(conn)
499-
500-
// Brief pause to reduce the likelihood that we send keystrokes while
501-
// the shell is simultaneously sending a prompt.
502-
time.Sleep(100 * time.Millisecond)
503-
504-
data, err = json.Marshal(codersdk.ReconnectingPTYRequest{
505-
Data: "echo test\r\n",
506-
})
507-
require.NoError(t, err)
508-
_, err = conn.Write(data)
509-
require.NoError(t, err)
510-
511-
expectLine := func(matcher func(string) bool) {
512-
for {
513-
line, err := bufRead.ReadString('\n')
514-
require.NoError(t, err)
515-
if matcher(line) {
516-
break
517-
}
518-
}
519-
}
520-
matchEchoCommand := func(line string) bool {
521-
return strings.Contains(line, "echo test")
522-
}
523-
matchEchoOutput := func(line string) bool {
524-
return strings.Contains(line, "test") && !strings.Contains(line, "echo")
525-
}
526-
527-
expectLine(matchEchoCommand)
528-
expectLine(matchEchoOutput)
529-
}
530-
531447
func TestWorkspaceAgentListeningPorts(t *testing.T) {
532448
t.Parallel()
533449

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy