Skip to content

Commit 438b7a6

Browse files
committed
add support to vscodessh command
1 parent aaad075 commit 438b7a6

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

cli/vscodessh.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func (r *RootCmd) vscodeSSH() *serpent.Command {
110110
// will call this command after the workspace is started.
111111
autostart := false
112112

113-
_, workspaceAgent, err := getWorkspaceAndAgent(ctx, inv, client, autostart, fmt.Sprintf("%s/%s", owner, name))
113+
workspace, workspaceAgent, err := getWorkspaceAndAgent(ctx, inv, client, autostart, fmt.Sprintf("%s/%s", owner, name))
114114
if err != nil {
115115
return xerrors.Errorf("find workspace and agent: %w", err)
116116
}
@@ -176,6 +176,13 @@ func (r *RootCmd) vscodeSSH() *serpent.Command {
176176
defer agentConn.Close()
177177

178178
agentConn.AwaitReachable(ctx)
179+
180+
closeUsage := client.UpdateWorkspaceUsageWithBodyContext(ctx, workspace.ID, codersdk.PostWorkspaceUsageRequest{
181+
AgentID: workspaceAgent.ID,
182+
AppName: codersdk.UsageAppNameVscode,
183+
})
184+
defer closeUsage()
185+
179186
rawSSH, err := agentConn.SSH(ctx)
180187
if err != nil {
181188
return err

cli/vscodessh_test.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,16 @@ import (
99
"github.com/stretchr/testify/assert"
1010
"github.com/stretchr/testify/require"
1111

12+
"cdr.dev/slog"
13+
"cdr.dev/slog/sloggers/slogtest"
14+
1215
"github.com/coder/coder/v2/agent/agenttest"
16+
agentproto "github.com/coder/coder/v2/agent/proto"
1317
"github.com/coder/coder/v2/cli/clitest"
1418
"github.com/coder/coder/v2/coderd/coderdtest"
19+
"github.com/coder/coder/v2/coderd/database"
20+
"github.com/coder/coder/v2/coderd/database/dbfake"
21+
"github.com/coder/coder/v2/coderd/workspacestats/workspacestatstest"
1522
"github.com/coder/coder/v2/codersdk"
1623
"github.com/coder/coder/v2/pty/ptytest"
1724
"github.com/coder/coder/v2/testutil"
@@ -22,7 +29,25 @@ import (
2229
func TestVSCodeSSH(t *testing.T) {
2330
t.Parallel()
2431
ctx := testutil.Context(t, testutil.WaitLong)
25-
client, workspace, agentToken := setupWorkspaceForAgent(t)
32+
dv := coderdtest.DeploymentValues(t)
33+
dv.Experiments = []string{string(codersdk.ExperimentWorkspaceUsage)}
34+
batcher := &workspacestatstest.StatsBatcher{
35+
LastStats: &agentproto.Stats{},
36+
}
37+
admin, store := coderdtest.NewWithDatabase(t, &coderdtest.Options{
38+
DeploymentValues: dv,
39+
StatsBatcher: batcher,
40+
})
41+
admin.SetLogger(slogtest.Make(t, nil).Named("client").Leveled(slog.LevelDebug))
42+
first := coderdtest.CreateFirstUser(t, admin)
43+
client, user := coderdtest.CreateAnotherUser(t, admin, first.OrganizationID)
44+
r := dbfake.WorkspaceBuild(t, store, database.Workspace{
45+
OrganizationID: first.OrganizationID,
46+
OwnerID: user.ID,
47+
}).WithAgent().Do()
48+
workspace := r.Workspace
49+
agentToken := r.AgentToken
50+
2651
user, err := client.User(ctx, codersdk.Me)
2752
require.NoError(t, err)
2853

@@ -65,4 +90,7 @@ func TestVSCodeSSH(t *testing.T) {
6590
if err := waiter.Wait(); err != nil {
6691
waiter.RequireIs(context.Canceled)
6792
}
93+
94+
require.EqualValues(t, 1, batcher.Called)
95+
require.EqualValues(t, 1, batcher.LastStats.SessionCountVscode)
6896
}

0 commit comments

Comments
 (0)