@@ -110,25 +110,7 @@ var _ = Describe("updateStatusByPullPods", func() {
110110 })
111111
112112 ctx := context .Background ()
113- testMic := kmmv1beta1.ModuleImagesConfig {
114- Spec : kmmv1beta1.ModuleImagesConfigSpec {
115- Images : []kmmv1beta1.ModuleImageSpec {
116- {
117- Image : "image 1" ,
118- Build : & kmmv1beta1.Build {},
119- },
120- {
121-
122- Image : "image 2" ,
123- Sign : & kmmv1beta1.Sign {},
124- },
125- {
126-
127- Image : "image 3" ,
128- },
129- },
130- },
131- }
113+ testMic := kmmv1beta1.ModuleImagesConfig {}
132114
133115 It ("zero pull pods" , func () {
134116 pullPods := []v1.Pod {}
@@ -139,24 +121,8 @@ var _ = Describe("updateStatusByPullPods", func() {
139121 It ("pod's image is not in spec" , func () {
140122 pullPod := v1.Pod {}
141123 gomock .InOrder (
142- mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("image 3" ),
143- micHelper .EXPECT ().GetModuleImageSpec (& testMic , "image 3" ).Return (nil ),
144- clnt .EXPECT ().Status ().Return (statusWriter ),
145- statusWriter .EXPECT ().Patch (ctx , & testMic , gomock .Any ()),
146- mockImagePuller .EXPECT ().DeletePod (ctx , & pullPod ).Return (nil ),
147- )
148- err := mrh .updateStatusByPullPods (ctx , & testMic , []v1.Pod {pullPod })
149- Expect (err ).To (BeNil ())
150- })
151-
152- It ("pod failed, build config present" , func () {
153- pullPod := v1.Pod {}
154-
155- gomock .InOrder (
156- mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("image 1" ),
157- micHelper .EXPECT ().GetModuleImageSpec (& testMic , "image 1" ).Return (& testMic .Spec .Images [0 ]),
158- mockImagePuller .EXPECT ().GetPullPodStatus (& pullPod ).Return (pod .PullImageFailed ),
159- micHelper .EXPECT ().SetImageStatus (& testMic , "image 1" , kmmv1beta1 .ImageNeedsBuilding ),
124+ mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("missing image" ),
125+ micHelper .EXPECT ().GetModuleImageSpec (& testMic , "missing image" ).Return (nil ),
160126 clnt .EXPECT ().Status ().Return (statusWriter ),
161127 statusWriter .EXPECT ().Patch (ctx , & testMic , gomock .Any ()),
162128 mockImagePuller .EXPECT ().DeletePod (ctx , & pullPod ).Return (nil ),
@@ -165,28 +131,45 @@ var _ = Describe("updateStatusByPullPods", func() {
165131 Expect (err ).To (BeNil ())
166132 })
167133
168- It ("pod failed, build config not present, sign config present" , func () {
169- pullPod := v1.Pod {}
170-
171- gomock .InOrder (
172- mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("image 2" ),
173- micHelper .EXPECT ().GetModuleImageSpec (& testMic , "image 2" ).Return (& testMic .Spec .Images [1 ]),
174- mockImagePuller .EXPECT ().GetPullPodStatus (& pullPod ).Return (pod .PullImageFailed ),
175- micHelper .EXPECT ().SetImageStatus (& testMic , "image 2" , kmmv1beta1 .ImageNeedsSigning ),
176- clnt .EXPECT ().Status ().Return (statusWriter ),
177- statusWriter .EXPECT ().Patch (ctx , & testMic , gomock .Any ()),
178- mockImagePuller .EXPECT ().DeletePod (ctx , & pullPod ).Return (nil ),
179- )
180- err := mrh .updateStatusByPullPods (ctx , & testMic , []v1.Pod {pullPod })
181- Expect (err ).To (BeNil ())
182- })
134+ DescribeTable ("pod failed scenarios" ,
135+ func (buildExists , signExists , skipWaitMissingImage bool , stateToSet kmmv1beta1.ImageState ) {
136+ pullPod := v1.Pod {}
137+ micSpec := kmmv1beta1.ModuleImageSpec {
138+ Image : "some test image" ,
139+ }
140+ if buildExists {
141+ micSpec .Build = & kmmv1beta1.Build {}
142+ }
143+ if signExists {
144+ micSpec .Sign = & kmmv1beta1.Sign {}
145+ }
146+ micSpec .SkipWaitMissingImage = skipWaitMissingImage
147+ gomock .InOrder (
148+ mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("some test image" ),
149+ micHelper .EXPECT ().GetModuleImageSpec (& testMic , "some test image" ).Return (& micSpec ),
150+ mockImagePuller .EXPECT ().GetPullPodStatus (& pullPod ).Return (pod .PullImageFailed ),
151+ micHelper .EXPECT ().SetImageStatus (& testMic , "some test image" , stateToSet ),
152+ clnt .EXPECT ().Status ().Return (statusWriter ),
153+ statusWriter .EXPECT ().Patch (ctx , & testMic , gomock .Any ()),
154+ mockImagePuller .EXPECT ().DeletePod (ctx , & pullPod ).Return (nil ),
155+ )
156+ err := mrh .updateStatusByPullPods (ctx , & testMic , []v1.Pod {pullPod })
157+ Expect (err ).To (BeNil ())
158+ },
159+ Entry ("build exists, sign missing, skipWait false, state ImageNeedsBuilding" , true , false , false , kmmv1beta1 .ImageNeedsBuilding ),
160+ Entry ("build missing, sign exists, skipWait false, state ImageNeedsSigning" , false , true , false , kmmv1beta1 .ImageNeedsSigning ),
161+ Entry ("build missing, sign missing, skipWait true, state ImageDoesNotExist" , false , false , true , kmmv1beta1 .ImageDoesNotExist ),
162+ )
183163
184- It ("pod failed, build or sign configs are not present" , func () {
164+ It ("pod failed, build or sign configs are not present, skipWait is false " , func () {
185165 pullPod := v1.Pod {}
166+ micSpec := kmmv1beta1.ModuleImageSpec {
167+ Image : "some test image" ,
168+ }
186169
187170 gomock .InOrder (
188- mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("image 3 " ),
189- micHelper .EXPECT ().GetModuleImageSpec (& testMic , "image 3 " ).Return (& testMic . Spec . Images [ 2 ] ),
171+ mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("some test image " ),
172+ micHelper .EXPECT ().GetModuleImageSpec (& testMic , "some test image " ).Return (& micSpec ),
190173 mockImagePuller .EXPECT ().GetPullPodStatus (& pullPod ).Return (pod .PullImageFailed ),
191174 clnt .EXPECT ().Status ().Return (statusWriter ),
192175 statusWriter .EXPECT ().Patch (ctx , & testMic , gomock .Any ()),
@@ -198,12 +181,15 @@ var _ = Describe("updateStatusByPullPods", func() {
198181
199182 It ("pod succeeded" , func () {
200183 pullPod := v1.Pod {}
184+ micSpec := kmmv1beta1.ModuleImageSpec {
185+ Image : "some test image" ,
186+ }
201187
202188 gomock .InOrder (
203- mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("image 2 " ),
204- micHelper .EXPECT ().GetModuleImageSpec (& testMic , "image 2 " ).Return (& testMic . Spec . Images [ 1 ] ),
189+ mockImagePuller .EXPECT ().GetPullPodImage (pullPod ).Return ("some test image " ),
190+ micHelper .EXPECT ().GetModuleImageSpec (& testMic , "some test image " ).Return (& micSpec ),
205191 mockImagePuller .EXPECT ().GetPullPodStatus (& pullPod ).Return (pod .PullImageSuccess ),
206- micHelper .EXPECT ().SetImageStatus (& testMic , "image 2 " , kmmv1beta1 .ImageExists ),
192+ micHelper .EXPECT ().SetImageStatus (& testMic , "some test image " , kmmv1beta1 .ImageExists ),
207193 clnt .EXPECT ().Status ().Return (statusWriter ),
208194 statusWriter .EXPECT ().Patch (ctx , & testMic , gomock .Any ()),
209195 mockImagePuller .EXPECT ().DeletePod (ctx , & pullPod ).Return (nil ),
@@ -351,7 +337,6 @@ var _ = Describe("processImagesSpecs", func() {
351337 Images : []kmmv1beta1.ModuleImageSpec {
352338 {
353339 Image : "image 1" ,
354- Build : & kmmv1beta1.Build {},
355340 },
356341 },
357342 },
@@ -361,29 +346,31 @@ var _ = Describe("processImagesSpecs", func() {
361346
362347 ctx := context .Background ()
363348 pullPods := []v1.Pod {}
364- testMic = kmmv1beta1.ModuleImagesConfig {
365- ObjectMeta : metav1.ObjectMeta {
366- Name : "some name" ,
367- Namespace : "some namespace" ,
368- },
369- Spec : kmmv1beta1.ModuleImagesConfigSpec {
370- Images : []kmmv1beta1.ModuleImageSpec {
371- {
372- Image : "image 1" ,
373- },
374- },
375- },
376- }
377349
378- It ("image status empty, pull pod does not exists, need to create a pull pod" , func () {
379- gomock .InOrder (
380- micHelper .EXPECT ().GetImageState (& testMic , "image 1" ).Return (kmmv1beta1 .ImageState ("" )),
381- mockImagePuller .EXPECT ().GetPullPodForImage (pullPods , "image 1" ).Return (nil ),
382- mockImagePuller .EXPECT ().CreatePullPod (ctx , "some name" , "some namespace" , "image 1" , true , nil , & testMic ).Return (nil ),
383- )
384- err := mrh .processImagesSpecs (ctx , & testMic , pullPods )
385- Expect (err ).To (BeNil ())
386- })
350+ DescribeTable ("image status empty, pull pod does not exists, create a pull pod" ,
351+ func (buildExists , signExists , skipWaitMissingImage , expectedOneTimePodFlag bool ) {
352+ if buildExists {
353+ testMic .Spec .Images [0 ].Build = & kmmv1beta1.Build {}
354+ }
355+ if signExists {
356+ testMic .Spec .Images [0 ].Sign = & kmmv1beta1.Sign {}
357+ }
358+ testMic .Spec .Images [0 ].SkipWaitMissingImage = skipWaitMissingImage
359+ gomock .InOrder (
360+ micHelper .EXPECT ().GetImageState (& testMic , "image 1" ).Return (kmmv1beta1 .ImageState ("" )),
361+ mockImagePuller .EXPECT ().GetPullPodForImage (pullPods , "image 1" ).Return (nil ),
362+ mockImagePuller .EXPECT ().CreatePullPod (ctx , "some name" , "some namespace" , "image 1" , expectedOneTimePodFlag , nil , & testMic ).Return (nil ),
363+ )
364+ err := mrh .processImagesSpecs (ctx , & testMic , pullPods )
365+ Expect (err ).To (BeNil ())
366+ },
367+ Entry ("build exists, sign missing, skipWait false, expectedFlag true" , true , false , false , true ),
368+ Entry ("build missing, sign exists, skipWait false, expectedFlag true" , false , true , false , true ),
369+ Entry ("build missing, sign missing, skipWait true, expectedFlag true" , false , false , true , true ),
370+ Entry ("build exists, sign exists, skipWait false, expectedFlag true" , true , true , false , true ),
371+ Entry ("build exists, sign exists, skipWait true, expectedFlag true" , true , true , true , true ),
372+ Entry ("build missing, sign missing, skipWait false, expectedFlag false" , false , false , false , false ),
373+ )
387374
388375 It ("image status empty, pull pod exists, nothing to do" , func () {
389376 gomock .InOrder (
0 commit comments