Skip to content

Commit 57efae2

Browse files
committed
Fix coderd test leak
1 parent ab4dcb1 commit 57efae2

File tree

5 files changed

+30
-8
lines changed

5 files changed

+30
-8
lines changed

coderd/coderdtest/coderdtest.go

-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package coderdtest
33
import (
44
"context"
55
"database/sql"
6-
"fmt"
76
"io"
87
"net/http/httptest"
98
"net/url"
@@ -154,7 +153,6 @@ func AwaitProjectVersionImported(t *testing.T, client *codersdk.Client, organiza
154153
var err error
155154
projectVersion, err = client.ProjectVersion(context.Background(), organization, project, version)
156155
require.NoError(t, err)
157-
fmt.Printf("GOT: %s\n", projectVersion.Import.Status)
158156
return projectVersion.Import.Status.Completed()
159157
}, 3*time.Second, 25*time.Millisecond)
160158
return projectVersion

coderd/coderdtest/coderdtest_test.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package coderdtest_test
22

33
import (
4+
"context"
45
"testing"
56

67
"go.uber.org/goleak"
78

9+
"github.com/stretchr/testify/require"
10+
11+
"github.com/coder/coder/coderd"
812
"github.com/coder/coder/coderd/coderdtest"
13+
"github.com/coder/coder/database"
914
)
1015

1116
func TestMain(m *testing.M) {
@@ -15,6 +20,17 @@ func TestMain(m *testing.M) {
1520
func TestNew(t *testing.T) {
1621
t.Parallel()
1722
client := coderdtest.New(t)
18-
_ = coderdtest.CreateInitialUser(t, client)
19-
_ = coderdtest.NewProvisionerDaemon(t, client)
23+
user := coderdtest.CreateInitialUser(t, client)
24+
closer := coderdtest.NewProvisionerDaemon(t, client)
25+
project := coderdtest.CreateProject(t, client, user.Organization)
26+
version := coderdtest.CreateProjectVersion(t, client, user.Organization, project.Name, nil)
27+
coderdtest.AwaitProjectVersionImported(t, client, user.Organization, project.Name, version.Name)
28+
workspace := coderdtest.CreateWorkspace(t, client, "me", project.ID)
29+
history, err := client.CreateWorkspaceHistory(context.Background(), "me", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
30+
ProjectVersionID: version.ID,
31+
Transition: database.WorkspaceTransitionCreate,
32+
})
33+
require.NoError(t, err)
34+
coderdtest.AwaitWorkspaceHistoryProvisioned(t, client, "me", workspace.Name, history.Name)
35+
closer.Close()
2036
}

coderd/provisionerdaemons.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"encoding/json"
77
"errors"
88
"fmt"
9+
"io"
910
"net/http"
1011
"reflect"
1112
"time"
@@ -75,7 +76,9 @@ func (api *api) provisionerDaemonsServe(rw http.ResponseWriter, r *http.Request)
7576
// Multiplexes the incoming connection using yamux.
7677
// This allows multiple function calls to occur over
7778
// the same connection.
78-
session, err := yamux.Server(websocket.NetConn(r.Context(), conn, websocket.MessageBinary), nil)
79+
config := yamux.DefaultConfig()
80+
config.LogOutput = io.Discard
81+
session, err := yamux.Server(websocket.NetConn(r.Context(), conn, websocket.MessageBinary), config)
7982
if err != nil {
8083
_ = conn.Close(websocket.StatusInternalError, fmt.Sprintf("multiplex server: %s", err))
8184
return

codersdk/provisioners.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package codersdk
33
import (
44
"context"
55
"encoding/json"
6+
"io"
67
"net/http"
78

89
"github.com/hashicorp/yamux"
@@ -42,7 +43,9 @@ func (c *Client) ProvisionerDaemonClient(ctx context.Context) (proto.DRPCProvisi
4243
}
4344
return nil, readBodyAsError(res)
4445
}
45-
session, err := yamux.Client(websocket.NetConn(context.Background(), conn, websocket.MessageBinary), nil)
46+
config := yamux.DefaultConfig()
47+
config.LogOutput = io.Discard
48+
session, err := yamux.Client(websocket.NetConn(ctx, conn, websocket.MessageBinary), config)
4649
if err != nil {
4750
return nil, xerrors.Errorf("multiplex client: %w", err)
4851
}

provisioner/echo/serve.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ func (*echo) Parse(request *proto.Parse_Request, stream proto.DRPCProvisioner_Pa
6868
return err
6969
}
7070
}
71-
return nil
71+
<-stream.Context().Done()
72+
return stream.Context().Err()
7273
}
7374

7475
// Provision reads requests from the provided directory to stream responses.
@@ -97,7 +98,8 @@ func (*echo) Provision(request *proto.Provision_Request, stream proto.DRPCProvis
9798
return err
9899
}
99100
}
100-
return nil
101+
<-stream.Context().Done()
102+
return stream.Context().Err()
101103
}
102104

103105
type Responses struct {

0 commit comments

Comments
 (0)