@@ -2394,6 +2394,89 @@ func TestWorkspaceUpdateTTL(t *testing.T) {
2394
2394
})
2395
2395
}
2396
2396
2397
+ t .Run ("ModifyAutostopWithRunningWorkspace" , func (t * testing.T ) {
2398
+ testCases := []struct {
2399
+ name string
2400
+ fromTTL * int64
2401
+ toTTL * int64
2402
+ afterUpdate func (t * testing.T , before , after codersdk.NullTime )
2403
+ }{
2404
+ {
2405
+ name : "RemoveAutostopRemovesDeadline" ,
2406
+ fromTTL : ptr .Ref ((8 * time .Hour ).Milliseconds ()),
2407
+ toTTL : nil ,
2408
+ afterUpdate : func (t * testing.T , before , after codersdk.NullTime ) {
2409
+ require .NotZero (t , before )
2410
+ require .Zero (t , after )
2411
+ },
2412
+ },
2413
+ {
2414
+ name : "AddAutostopDoesNotAddDeadline" ,
2415
+ fromTTL : nil ,
2416
+ toTTL : ptr .Ref ((8 * time .Hour ).Milliseconds ()),
2417
+ afterUpdate : func (t * testing.T , before , after codersdk.NullTime ) {
2418
+ require .Zero (t , before )
2419
+ require .Zero (t , after )
2420
+ },
2421
+ },
2422
+ {
2423
+ name : "IncreaseAutostopDoesNotModifyDeadline" ,
2424
+ fromTTL : ptr .Ref ((4 * time .Hour ).Milliseconds ()),
2425
+ toTTL : ptr .Ref ((8 * time .Hour ).Milliseconds ()),
2426
+ afterUpdate : func (t * testing.T , before , after codersdk.NullTime ) {
2427
+ require .NotZero (t , before )
2428
+ require .NotZero (t , after )
2429
+ require .Equal (t , before , after )
2430
+ },
2431
+ },
2432
+ {
2433
+ name : "DecreaseAutostopDoesNotModifyDeadline" ,
2434
+ fromTTL : ptr .Ref ((8 * time .Hour ).Milliseconds ()),
2435
+ toTTL : ptr .Ref ((4 * time .Hour ).Milliseconds ()),
2436
+ afterUpdate : func (t * testing.T , before , after codersdk.NullTime ) {
2437
+ require .NotZero (t , before )
2438
+ require .NotZero (t , after )
2439
+ require .Equal (t , before , after )
2440
+ },
2441
+ },
2442
+ }
2443
+
2444
+ for _ , testCase := range testCases {
2445
+ testCase := testCase
2446
+
2447
+ t .Run (testCase .name , func (t * testing.T ) {
2448
+ var (
2449
+ client = coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
2450
+ user = coderdtest .CreateFirstUser (t , client )
2451
+ version = coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
2452
+ _ = coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
2453
+ template = coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
2454
+ workspace = coderdtest .CreateWorkspace (t , client , template .ID , func (cwr * codersdk.CreateWorkspaceRequest ) {
2455
+ cwr .TTLMillis = testCase .fromTTL
2456
+ })
2457
+ build = coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , workspace .LatestBuild .ID )
2458
+ )
2459
+
2460
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
2461
+ defer cancel ()
2462
+
2463
+ err := client .UpdateWorkspaceTTL (ctx , workspace .ID , codersdk.UpdateWorkspaceTTLRequest {
2464
+ TTLMillis : testCase .toTTL ,
2465
+ })
2466
+ require .NoError (t , err )
2467
+
2468
+ deadlineBefore := build .Deadline
2469
+
2470
+ build , err = client .WorkspaceBuild (ctx , build .ID )
2471
+ require .NoError (t , err )
2472
+
2473
+ deadlineAfter := build .Deadline
2474
+
2475
+ testCase .afterUpdate (t , deadlineBefore , deadlineAfter )
2476
+ })
2477
+ }
2478
+ })
2479
+
2397
2480
t .Run ("CustomAutostopDisabledByTemplate" , func (t * testing.T ) {
2398
2481
t .Parallel ()
2399
2482
var (
0 commit comments