@@ -63,64 +63,6 @@ var opts = map[uint]options{
63
63
},
64
64
}
65
65
66
- func TestMultiplePresetsPerTemplateVersion (t * testing.T ) {
67
- t .Parallel ()
68
-
69
- templateID := uuid .New ()
70
- templateVersionID := uuid .New ()
71
- presetOpts1 := options {
72
- templateID : templateID ,
73
- templateVersionID : templateVersionID ,
74
- presetID : uuid .New (),
75
- presetName : "my-preset-1" ,
76
- prebuildID : uuid .New (),
77
- workspaceName : "prebuilds1" ,
78
- }
79
- presetOpts2 := options {
80
- templateID : templateID ,
81
- templateVersionID : templateVersionID ,
82
- presetID : uuid .New (),
83
- presetName : "my-preset-2" ,
84
- prebuildID : uuid .New (),
85
- workspaceName : "prebuilds2" ,
86
- }
87
-
88
- clock := quartz .NewMock (t )
89
-
90
- presets := []database.GetTemplatePresetsWithPrebuildsRow {
91
- preset (true , 0 , presetOpts1 ),
92
- preset (true , 0 , presetOpts2 ),
93
- }
94
-
95
- inProgress := []database.CountInProgressPrebuildsRow {
96
- {
97
- TemplateID : templateID ,
98
- TemplateVersionID : templateVersionID ,
99
- Transition : database .WorkspaceTransitionStart ,
100
- Count : 1 ,
101
- },
102
- }
103
-
104
- snapshot := prebuilds .NewGlobalSnapshot (presets , nil , inProgress , nil )
105
-
106
- for _ , presetID := range []uuid.UUID {presetOpts1 .presetID , presetOpts2 .presetID } {
107
- ps , err := snapshot .FilterByPreset (presetID )
108
- require .NoError (t , err )
109
-
110
- state := ps .CalculateState ()
111
- actions , err := ps .CalculateActions (clock , backoffInterval )
112
- require .NoError (t , err )
113
-
114
- validateState (t , prebuilds.ReconciliationState {
115
- Starting : 1 ,
116
- }, * state )
117
- validateActions (t , prebuilds.ReconciliationActions {
118
- ActionType : prebuilds .ActionTypeCreate ,
119
- Create : 0 ,
120
- }, * actions )
121
- }
122
- }
123
-
124
66
// A new template version with a preset without prebuilds configured should result in no prebuilds being created.
125
67
func TestNoPrebuilds (t * testing.T ) {
126
68
t .Parallel ()
@@ -414,8 +356,9 @@ func TestInProgressActions(t *testing.T) {
414
356
t .Parallel ()
415
357
416
358
// GIVEN: a preset.
359
+ defaultPreset := preset (true , tc .desired , current )
417
360
presets := []database.GetTemplatePresetsWithPrebuildsRow {
418
- preset ( true , tc . desired , current ) ,
361
+ defaultPreset ,
419
362
}
420
363
421
364
// GIVEN: a running prebuild for the preset.
@@ -441,6 +384,7 @@ func TestInProgressActions(t *testing.T) {
441
384
TemplateVersionID : current .templateVersionID ,
442
385
Transition : tc .transition ,
443
386
Count : tc .inProgress ,
387
+ PresetID : defaultPreset .ID ,
444
388
},
445
389
}
446
390
@@ -628,6 +572,86 @@ func TestLatestBuildFailed(t *testing.T) {
628
572
}, * actions )
629
573
}
630
574
575
+ func TestMultiplePresetsPerTemplateVersion (t * testing.T ) {
576
+ t .Parallel ()
577
+
578
+ templateID := uuid .New ()
579
+ templateVersionID := uuid .New ()
580
+ presetOpts1 := options {
581
+ templateID : templateID ,
582
+ templateVersionID : templateVersionID ,
583
+ presetID : uuid .New (),
584
+ presetName : "my-preset-1" ,
585
+ prebuildID : uuid .New (),
586
+ workspaceName : "prebuilds1" ,
587
+ }
588
+ presetOpts2 := options {
589
+ templateID : templateID ,
590
+ templateVersionID : templateVersionID ,
591
+ presetID : uuid .New (),
592
+ presetName : "my-preset-2" ,
593
+ prebuildID : uuid .New (),
594
+ workspaceName : "prebuilds2" ,
595
+ }
596
+
597
+ clock := quartz .NewMock (t )
598
+
599
+ presets := []database.GetTemplatePresetsWithPrebuildsRow {
600
+ preset (true , 1 , presetOpts1 ),
601
+ preset (true , 1 , presetOpts2 ),
602
+ }
603
+
604
+ inProgress := []database.CountInProgressPrebuildsRow {
605
+ {
606
+ TemplateID : templateID ,
607
+ TemplateVersionID : templateVersionID ,
608
+ Transition : database .WorkspaceTransitionStart ,
609
+ Count : 1 ,
610
+ PresetID : presetOpts1 .presetID ,
611
+ },
612
+ }
613
+
614
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , inProgress , nil )
615
+
616
+ // Nothing has to be created for preset 1.
617
+ {
618
+ ps , err := snapshot .FilterByPreset (presetOpts1 .presetID )
619
+ require .NoError (t , err )
620
+
621
+ state := ps .CalculateState ()
622
+ actions , err := ps .CalculateActions (clock , backoffInterval )
623
+ require .NoError (t , err )
624
+
625
+ validateState (t , prebuilds.ReconciliationState {
626
+ Starting : 1 ,
627
+ Desired : 1 ,
628
+ }, * state )
629
+ validateActions (t , prebuilds.ReconciliationActions {
630
+ ActionType : prebuilds .ActionTypeCreate ,
631
+ Create : 0 ,
632
+ }, * actions )
633
+ }
634
+
635
+ // One prebuild has to be created for preset 2. Make sure preset 1 doesn't block preset 2.
636
+ {
637
+ ps , err := snapshot .FilterByPreset (presetOpts2 .presetID )
638
+ require .NoError (t , err )
639
+
640
+ state := ps .CalculateState ()
641
+ actions , err := ps .CalculateActions (clock , backoffInterval )
642
+ require .NoError (t , err )
643
+
644
+ validateState (t , prebuilds.ReconciliationState {
645
+ Starting : 0 ,
646
+ Desired : 1 ,
647
+ }, * state )
648
+ validateActions (t , prebuilds.ReconciliationActions {
649
+ ActionType : prebuilds .ActionTypeCreate ,
650
+ Create : 1 ,
651
+ }, * actions )
652
+ }
653
+ }
654
+
631
655
func preset (active bool , instances int32 , opts options , muts ... func (row database.GetTemplatePresetsWithPrebuildsRow ) database.GetTemplatePresetsWithPrebuildsRow ) database.GetTemplatePresetsWithPrebuildsRow {
632
656
entry := database.GetTemplatePresetsWithPrebuildsRow {
633
657
TemplateID : opts .templateID ,
0 commit comments