Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9fa815c

Browse files
committed
Fix coderd test leak
1 parent ab4dcb1 commit 9fa815c

File tree

7 files changed

+34
-12
lines changed

7 files changed

+34
-12
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
}

peer/conn_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package peer_test
22

33
import (
44
"context"
5-
"errors"
65
"io"
76
"net"
87
"net/http"
@@ -17,6 +16,7 @@ import (
1716
"github.com/stretchr/testify/assert"
1817
"github.com/stretchr/testify/require"
1918
"go.uber.org/goleak"
19+
"golang.org/x/xerrors"
2020

2121
"cdr.dev/slog"
2222
"cdr.dev/slog/sloggers/slogtest"
@@ -231,7 +231,7 @@ func TestConn(t *testing.T) {
231231
t.Parallel()
232232
conn, err := peer.Client([]webrtc.ICEServer{}, nil)
233233
require.NoError(t, err)
234-
expectedErr := errors.New("wow")
234+
expectedErr := xerrors.New("wow")
235235
_ = conn.CloseWithError(expectedErr)
236236
_, err = conn.Dial(context.Background(), "", nil)
237237
require.ErrorIs(t, err, expectedErr)

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 {

provisionerd/provisionerd_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"archive/tar"
55
"bytes"
66
"context"
7-
"errors"
87
"io"
98
"os"
109
"path/filepath"
@@ -15,6 +14,7 @@ import (
1514
"github.com/stretchr/testify/require"
1615
"go.uber.org/atomic"
1716
"go.uber.org/goleak"
17+
"golang.org/x/xerrors"
1818
"storj.io/drpc/drpcmux"
1919
"storj.io/drpc/drpcserver"
2020

@@ -52,7 +52,7 @@ func TestProvisionerd(t *testing.T) {
5252
completeChan := make(chan struct{})
5353
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
5454
defer close(completeChan)
55-
return nil, errors.New("an error")
55+
return nil, xerrors.New("an error")
5656
}, provisionerd.Provisioners{})
5757
<-completeChan
5858
require.NoError(t, closer.Close())

0 commit comments

Comments
 (0)