@@ -274,6 +274,146 @@ func TestPodTemplateBuilder_WithReadinessProbe(t *testing.T) {
274274 }
275275}
276276
277+ func TestPodTemplateBuilder_WithLivenessProbe (t * testing.T ) {
278+ containerName := "mycontainer"
279+ tests := []struct {
280+ name string
281+ PodTemplate corev1.PodTemplateSpec
282+ livenessProbe corev1.Probe
283+ want * corev1.Probe
284+ }{
285+ {
286+ name : "no liveness probe in pod template: use default one" ,
287+ PodTemplate : corev1.PodTemplateSpec {},
288+ livenessProbe : corev1.Probe {
289+ ProbeHandler : corev1.ProbeHandler {
290+ HTTPGet : & corev1.HTTPGetAction {
291+ Path : "/probe" ,
292+ },
293+ },
294+ },
295+ want : & corev1.Probe {
296+ ProbeHandler : corev1.ProbeHandler {
297+ HTTPGet : & corev1.HTTPGetAction {
298+ Path : "/probe" ,
299+ },
300+ },
301+ },
302+ },
303+ {
304+ name : "don't override pod template liveness probe" ,
305+ PodTemplate : corev1.PodTemplateSpec {
306+ Spec : corev1.PodSpec {
307+ Containers : []corev1.Container {
308+ {
309+ Name : containerName ,
310+ LivenessProbe : & corev1.Probe {
311+ ProbeHandler : corev1.ProbeHandler {
312+ HTTPGet : & corev1.HTTPGetAction {
313+ Path : "/user-provided" ,
314+ },
315+ },
316+ },
317+ },
318+ },
319+ },
320+ },
321+ livenessProbe : corev1.Probe {
322+ ProbeHandler : corev1.ProbeHandler {
323+ HTTPGet : & corev1.HTTPGetAction {
324+ Path : "/probe" ,
325+ },
326+ },
327+ },
328+ want : & corev1.Probe {
329+ ProbeHandler : corev1.ProbeHandler {
330+ HTTPGet : & corev1.HTTPGetAction {
331+ Path : "/user-provided" ,
332+ },
333+ },
334+ },
335+ },
336+ }
337+ for _ , tt := range tests {
338+ t .Run (tt .name , func (t * testing.T ) {
339+ b := NewPodTemplateBuilder (tt .PodTemplate , containerName )
340+ if got := b .WithLivenessProbe (tt .livenessProbe ).containerDefaulter .Container ().LivenessProbe ; ! reflect .DeepEqual (got , tt .want ) {
341+ t .Errorf ("PodTemplateBuilder.WithLivenessProbe() = %v, want %v" , got , tt .want )
342+ }
343+ })
344+ }
345+ }
346+
347+ func TestPodTemplateBuilder_WithStartupProbe (t * testing.T ) {
348+ containerName := "mycontainer"
349+ tests := []struct {
350+ name string
351+ PodTemplate corev1.PodTemplateSpec
352+ startupProbe corev1.Probe
353+ want * corev1.Probe
354+ }{
355+ {
356+ name : "no startup probe in pod template: use default one" ,
357+ PodTemplate : corev1.PodTemplateSpec {},
358+ startupProbe : corev1.Probe {
359+ ProbeHandler : corev1.ProbeHandler {
360+ HTTPGet : & corev1.HTTPGetAction {
361+ Path : "/probe" ,
362+ },
363+ },
364+ },
365+ want : & corev1.Probe {
366+ ProbeHandler : corev1.ProbeHandler {
367+ HTTPGet : & corev1.HTTPGetAction {
368+ Path : "/probe" ,
369+ },
370+ },
371+ },
372+ },
373+ {
374+ name : "don't override pod template startup probe" ,
375+ PodTemplate : corev1.PodTemplateSpec {
376+ Spec : corev1.PodSpec {
377+ Containers : []corev1.Container {
378+ {
379+ Name : containerName ,
380+ StartupProbe : & corev1.Probe {
381+ ProbeHandler : corev1.ProbeHandler {
382+ HTTPGet : & corev1.HTTPGetAction {
383+ Path : "/user-provided" ,
384+ },
385+ },
386+ },
387+ },
388+ },
389+ },
390+ },
391+ startupProbe : corev1.Probe {
392+ ProbeHandler : corev1.ProbeHandler {
393+ HTTPGet : & corev1.HTTPGetAction {
394+ Path : "/probe" ,
395+ },
396+ },
397+ },
398+ want : & corev1.Probe {
399+ ProbeHandler : corev1.ProbeHandler {
400+ HTTPGet : & corev1.HTTPGetAction {
401+ Path : "/user-provided" ,
402+ },
403+ },
404+ },
405+ },
406+ }
407+ for _ , tt := range tests {
408+ t .Run (tt .name , func (t * testing.T ) {
409+ b := NewPodTemplateBuilder (tt .PodTemplate , containerName )
410+ if got := b .WithStartupProbe (tt .startupProbe ).containerDefaulter .Container ().StartupProbe ; ! reflect .DeepEqual (got , tt .want ) {
411+ t .Errorf ("PodTemplateBuilder.WithStartupProbe() = %v, want %v" , got , tt .want )
412+ }
413+ })
414+ }
415+ }
416+
277417func TestPodTemplateBuilder_WithAffinity (t * testing.T ) {
278418 defaultAffinity := & corev1.Affinity {
279419 NodeAffinity : & corev1.NodeAffinity {},
0 commit comments