Skip to content

Commit 191ee82

Browse files
committed
Put back test, fix running state
1 parent ae31c77 commit 191ee82

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

coderd/database/dbfake/dbfake.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6647,6 +6647,8 @@ func (q *FakeQuerier) GetAuthorizedWorkspaces(ctx context.Context, arg database.
66476647
case database.WorkspaceStatusStopped:
66486648
statusMatch = job.JobStatus == database.ProvisionerJobStatusSucceeded &&
66496649
build.Transition == database.WorkspaceTransitionStop
6650+
case database.WorkspaceStatusRunning:
6651+
statusMatch = job.JobStatus == database.ProvisionerJobStatusSucceeded
66506652
default:
66516653
statusMatch = job.JobStatus == database.ProvisionerJobStatus(arg.Status)
66526654
if !statusMatch {

coderd/database/queries/workspaces.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,11 @@ WHERE
154154
latest_build.job_status = 'succeeded'::provisioner_job_status AND
155155
latest_build.transition = 'start'::workspace_transition
156156

157+
-- Special case. A workspace status of "running" is a job status
158+
-- of "succeeded". This is annoying...
159+
WHEN @status = 'running' THEN
160+
latest_build.job_status = 'succeeded'::provisioner_job_status
161+
157162
WHEN @status != '' THEN
158163
-- By default just match the job status exactly
159164
latest_build.job_status = @status::provisioner_job_status

coderd/workspaces_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1220,6 +1220,52 @@ func TestWorkspaceFilterManual(t *testing.T) {
12201220
require.Len(t, res.Workspaces, 1)
12211221
require.Equal(t, workspace.ID, res.Workspaces[0].ID)
12221222
})
1223+
t.Run("Status", func(t *testing.T) {
1224+
t.Parallel()
1225+
1226+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
1227+
user := coderdtest.CreateFirstUser(t, client)
1228+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
1229+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, version.ID)
1230+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1231+
workspace1 := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
1232+
workspace2 := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
1233+
1234+
// wait for workspaces to be "running"
1235+
_ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace1.LatestBuild.ID)
1236+
_ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace2.LatestBuild.ID)
1237+
1238+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1239+
defer cancel()
1240+
1241+
// filter finds both running workspaces
1242+
ws1, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{})
1243+
require.NoError(t, err)
1244+
require.Len(t, ws1.Workspaces, 2)
1245+
1246+
// stop workspace1
1247+
build1 := coderdtest.CreateWorkspaceBuild(t, client, workspace1, database.WorkspaceTransitionStop)
1248+
_ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, build1.ID)
1249+
1250+
// filter finds one running workspace
1251+
ws2, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
1252+
Status: "running",
1253+
})
1254+
require.NoError(t, err)
1255+
require.Len(t, ws2.Workspaces, 1)
1256+
require.Equal(t, workspace2.ID, ws2.Workspaces[0].ID)
1257+
1258+
// stop workspace2
1259+
build2 := coderdtest.CreateWorkspaceBuild(t, client, workspace2, database.WorkspaceTransitionStop)
1260+
_ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, build2.ID)
1261+
1262+
// filter finds no running workspaces
1263+
ws3, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
1264+
Status: "running",
1265+
})
1266+
require.NoError(t, err)
1267+
require.Len(t, ws3.Workspaces, 0)
1268+
})
12231269
t.Run("FilterQuery", func(t *testing.T) {
12241270
t.Parallel()
12251271
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})

0 commit comments

Comments
 (0)