@@ -13,7 +13,9 @@ import (
13
13
"github.com/stretchr/testify/assert"
14
14
"golang.org/x/xerrors"
15
15
16
+ "github.com/coder/coder/v2/coderd/coderdtest"
16
17
"github.com/coder/coder/v2/coderd/database/dbtime"
18
+ "github.com/coder/coder/v2/coderd/files"
17
19
"github.com/coder/coder/v2/coderd/notifications"
18
20
"github.com/coder/coder/v2/coderd/notifications/notificationstest"
19
21
"github.com/coder/coder/v2/coderd/util/slice"
@@ -53,7 +55,8 @@ func TestNoReconciliationActionsIfNoPresets(t *testing.T) {
53
55
ReconciliationInterval :serpent .Duration (testutil .WaitLong ),
54
56
}
55
57
logger := testutil .Logger (t )
56
- controller := prebuilds .NewStoreReconciler (db ,ps ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
58
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
59
+ controller := prebuilds .NewStoreReconciler (db ,ps ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
57
60
58
61
// given a template version with no presets
59
62
org := dbgen .Organization (t ,db , database.Organization {})
@@ -98,7 +101,8 @@ func TestNoReconciliationActionsIfNoPrebuilds(t *testing.T) {
98
101
ReconciliationInterval :serpent .Duration (testutil .WaitLong ),
99
102
}
100
103
logger := testutil .Logger (t )
101
- controller := prebuilds .NewStoreReconciler (db ,ps ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
104
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
105
+ controller := prebuilds .NewStoreReconciler (db ,ps ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
102
106
103
107
// given there are presets, but no prebuilds
104
108
org := dbgen .Organization (t ,db , database.Organization {})
@@ -375,7 +379,8 @@ func TestPrebuildReconciliation(t *testing.T) {
375
379
if useBrokenPubsub {
376
380
pubSub = & brokenPublisher {Pubsub :pubSub }
377
381
}
378
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
382
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
383
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
379
384
380
385
// Run the reconciliation multiple times to ensure idempotency
381
386
// 8 was arbitrary, but large enough to reasonably trust the result
@@ -452,7 +457,8 @@ func TestMultiplePresetsPerTemplateVersion(t *testing.T) {
452
457
t ,& slogtest.Options {IgnoreErrors :true },
453
458
).Leveled (slog .LevelDebug )
454
459
db ,pubSub := dbtestutil .NewDB (t )
455
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
460
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
461
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
456
462
457
463
ownerID := uuid .New ()
458
464
dbgen .User (t ,db , database.User {
@@ -577,7 +583,8 @@ func TestPrebuildScheduling(t *testing.T) {
577
583
t ,& slogtest.Options {IgnoreErrors :true },
578
584
).Leveled (slog .LevelDebug )
579
585
db ,pubSub := dbtestutil .NewDB (t )
580
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
586
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
587
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
581
588
582
589
ownerID := uuid .New ()
583
590
dbgen .User (t ,db , database.User {
@@ -681,7 +688,8 @@ func TestInvalidPreset(t *testing.T) {
681
688
t ,& slogtest.Options {IgnoreErrors :true },
682
689
).Leveled (slog .LevelDebug )
683
690
db ,pubSub := dbtestutil .NewDB (t )
684
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
691
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
692
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
685
693
686
694
ownerID := uuid .New ()
687
695
dbgen .User (t ,db , database.User {
@@ -745,7 +753,8 @@ func TestDeletionOfPrebuiltWorkspaceWithInvalidPreset(t *testing.T) {
745
753
t ,& slogtest.Options {IgnoreErrors :true },
746
754
).Leveled (slog .LevelDebug )
747
755
db ,pubSub := dbtestutil .NewDB (t )
748
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
756
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
757
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
749
758
750
759
ownerID := uuid .New ()
751
760
dbgen .User (t ,db , database.User {
@@ -841,7 +850,8 @@ func TestSkippingHardLimitedPresets(t *testing.T) {
841
850
db ,pubSub := dbtestutil .NewDB (t )
842
851
fakeEnqueuer := newFakeEnqueuer ()
843
852
registry := prometheus .NewRegistry ()
844
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
853
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
854
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
845
855
846
856
// Template admin to receive a notification.
847
857
templateAdmin := dbgen .User (t ,db , database.User {
@@ -1003,7 +1013,8 @@ func TestHardLimitedPresetShouldNotBlockDeletion(t *testing.T) {
1003
1013
db ,pubSub := dbtestutil .NewDB (t )
1004
1014
fakeEnqueuer := newFakeEnqueuer ()
1005
1015
registry := prometheus .NewRegistry ()
1006
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
1016
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1017
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
1007
1018
1008
1019
// Template admin to receive a notification.
1009
1020
templateAdmin := dbgen .User (t ,db , database.User {
@@ -1215,7 +1226,8 @@ func TestRunLoop(t *testing.T) {
1215
1226
t ,& slogtest.Options {IgnoreErrors :true },
1216
1227
).Leveled (slog .LevelDebug )
1217
1228
db ,pubSub := dbtestutil .NewDB (t )
1218
- reconciler := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
1229
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1230
+ reconciler := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
1219
1231
1220
1232
ownerID := uuid .New ()
1221
1233
dbgen .User (t ,db , database.User {
@@ -1345,7 +1357,8 @@ func TestFailedBuildBackoff(t *testing.T) {
1345
1357
t ,& slogtest.Options {IgnoreErrors :true },
1346
1358
).Leveled (slog .LevelDebug )
1347
1359
db ,ps := dbtestutil .NewDB (t )
1348
- reconciler := prebuilds .NewStoreReconciler (db ,ps ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
1360
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1361
+ reconciler := prebuilds .NewStoreReconciler (db ,ps ,cache ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
1349
1362
1350
1363
// Given: an active template version with presets and prebuilds configured.
1351
1364
const desiredInstances = 2
@@ -1461,9 +1474,11 @@ func TestReconciliationLock(t *testing.T) {
1461
1474
wg .Add (1 )
1462
1475
go func () {
1463
1476
defer wg .Done ()
1477
+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1464
1478
reconciler := prebuilds .NewStoreReconciler (
1465
1479
db ,
1466
1480
ps ,
1481
+ cache ,
1467
1482
codersdk.PrebuildsConfig {},
1468
1483
slogtest .Make (t ,& slogtest.Options {IgnoreErrors :true }).Leveled (slog .LevelDebug ),
1469
1484
quartz .NewMock (t ),
@@ -1501,7 +1516,8 @@ func TestTrackResourceReplacement(t *testing.T) {
1501
1516
1502
1517
fakeEnqueuer := newFakeEnqueuer ()
1503
1518
registry := prometheus .NewRegistry ()
1504
- reconciler := prebuilds .NewStoreReconciler (db ,ps , codersdk.PrebuildsConfig {},logger ,clock ,registry ,fakeEnqueuer )
1519
+ cache := files .NewFromStore (db ,registry ,& coderdtest.FakeAuthorizer {})
1520
+ reconciler := prebuilds .NewStoreReconciler (db ,ps ,cache , codersdk.PrebuildsConfig {},logger ,clock ,registry ,fakeEnqueuer )
1505
1521
1506
1522
// Given: a template admin to receive a notification.
1507
1523
templateAdmin := dbgen .User (t ,db , database.User {
@@ -1656,7 +1672,8 @@ func TestExpiredPrebuildsMultipleActions(t *testing.T) {
1656
1672
db ,pubSub := dbtestutil .NewDB (t )
1657
1673
fakeEnqueuer := newFakeEnqueuer ()
1658
1674
registry := prometheus .NewRegistry ()
1659
- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
1675
+ cache := files .NewFromStore (db ,registry ,& coderdtest.FakeAuthorizer {})
1676
+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
1660
1677
1661
1678
// Set up test environment with a template, version, and preset
1662
1679
ownerID := uuid .New ()