TestExecutorInactiveWorkspace test AGPL functionality which mainly ensures that autostop actions as a result of an inactive workspace do not trigger. For enterprise functionality see enterprise/coderd/workspaces_test.go
(t *testing.T)
| 1219 | // do not trigger. |
| 1220 | // For enterprise functionality see enterprise/coderd/workspaces_test.go |
| 1221 | func TestExecutorInactiveWorkspace(t *testing.T) { |
| 1222 | t.Parallel() |
| 1223 | |
| 1224 | // Test that an AGPL TemplateScheduleStore properly disables |
| 1225 | // functionality. |
| 1226 | t.Run("OK", func(t *testing.T) { |
| 1227 | t.Parallel() |
| 1228 | |
| 1229 | var ( |
| 1230 | ticker = make(chan time.Time) |
| 1231 | statCh = make(chan autobuild.Stats) |
| 1232 | logger = slogtest.Make(t, &slogtest.Options{ |
| 1233 | // We ignore errors here since we expect to fail |
| 1234 | // builds. |
| 1235 | IgnoreErrors: true, |
| 1236 | }) |
| 1237 | inactiveTTL = time.Millisecond |
| 1238 | |
| 1239 | client = coderdtest.New(t, &coderdtest.Options{ |
| 1240 | Logger: &logger, |
| 1241 | AutobuildTicker: ticker, |
| 1242 | IncludeProvisionerDaemon: true, |
| 1243 | AutobuildStats: statCh, |
| 1244 | TemplateScheduleStore: schedule.NewAGPLTemplateScheduleStore(), |
| 1245 | }) |
| 1246 | ) |
| 1247 | user := coderdtest.CreateFirstUser(t, client) |
| 1248 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 1249 | Parse: echo.ParseComplete, |
| 1250 | ProvisionPlan: echo.PlanComplete, |
| 1251 | ProvisionApply: echo.ApplyComplete, |
| 1252 | }) |
| 1253 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1254 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID, func(ctr *codersdk.CreateTemplateRequest) { |
| 1255 | ctr.TimeTilDormantMillis = ptr.Ref[int64](inactiveTTL.Milliseconds()) |
| 1256 | }) |
| 1257 | ws := coderdtest.CreateWorkspace(t, client, template.ID) |
| 1258 | build := coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, ws.LatestBuild.ID) |
| 1259 | require.Equal(t, codersdk.WorkspaceStatusRunning, build.Status) |
| 1260 | ticker <- ws.LastUsedAt.Add(inactiveTTL * 2) |
| 1261 | stats := <-statCh |
| 1262 | // Expect no transitions since we're using AGPL. |
| 1263 | require.Len(t, stats.Transitions, 0) |
| 1264 | }) |
| 1265 | } |
| 1266 | |
| 1267 | func TestNotifications(t *testing.T) { |
| 1268 | t.Parallel() |
nothing calls this directly
no test coverage detected