Skip to content

Commit c34c682

Browse files
committed
Test
1 parent f906775 commit c34c682

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed

internal/controller/postgrescluster/util_test.go

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"github.com/crunchydata/postgres-operator/internal/naming"
1818
"github.com/crunchydata/postgres-operator/internal/testing/cmp"
19+
"github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
1920
)
2021

2122
func TestSafeHash32(t *testing.T) {
@@ -378,3 +379,166 @@ func TestJobFailed(t *testing.T) {
378379
})
379380
}
380381
}
382+
383+
func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
384+
385+
podTemplate := &corev1.PodTemplateSpec{
386+
Spec: corev1.PodSpec{
387+
InitContainers: []corev1.Container{
388+
{Name: "startup"},
389+
{Name: "config"},
390+
},
391+
Containers: []corev1.Container{
392+
{Name: "database"},
393+
{Name: "other"},
394+
}}}
395+
396+
testCases := []struct {
397+
tcName string
398+
additionalVolumes []*v1beta1.AdditionalVolume
399+
expectedContainers string
400+
expectedInitContainers string
401+
expectedVolumes string
402+
}{{
403+
tcName: "all",
404+
additionalVolumes: []*v1beta1.AdditionalVolume{{
405+
Containers: []string{},
406+
ClaimName: "required",
407+
Name: "required",
408+
}},
409+
expectedContainers: `- name: database
410+
resources: {}
411+
volumeMounts:
412+
- mountPath: /volumes/required
413+
name: required
414+
- name: other
415+
resources: {}
416+
volumeMounts:
417+
- mountPath: /volumes/required
418+
name: required`,
419+
expectedInitContainers: `- name: startup
420+
resources: {}
421+
volumeMounts:
422+
- mountPath: /volumes/required
423+
name: required
424+
- name: config
425+
resources: {}
426+
volumeMounts:
427+
- mountPath: /volumes/required
428+
name: required`,
429+
expectedVolumes: `- name: required
430+
persistentVolumeClaim:
431+
claimName: required`,
432+
}, {
433+
tcName: "multiple additional volumes",
434+
additionalVolumes: []*v1beta1.AdditionalVolume{{
435+
Containers: []string{},
436+
ClaimName: "required",
437+
Name: "required",
438+
}, {
439+
Containers: []string{},
440+
ClaimName: "also",
441+
Name: "other",
442+
}},
443+
expectedContainers: `- name: database
444+
resources: {}
445+
volumeMounts:
446+
- mountPath: /volumes/required
447+
name: required
448+
- mountPath: /volumes/other
449+
name: also
450+
- name: other
451+
resources: {}
452+
volumeMounts:
453+
- mountPath: /volumes/required
454+
name: required
455+
- mountPath: /volumes/other
456+
name: also`,
457+
expectedInitContainers: `- name: startup
458+
resources: {}
459+
volumeMounts:
460+
- mountPath: /volumes/required
461+
name: required
462+
- mountPath: /volumes/other
463+
name: also
464+
- name: config
465+
resources: {}
466+
volumeMounts:
467+
- mountPath: /volumes/required
468+
name: required
469+
- mountPath: /volumes/other
470+
name: also`,
471+
expectedVolumes: `- name: required
472+
persistentVolumeClaim:
473+
claimName: required
474+
- name: also
475+
persistentVolumeClaim:
476+
claimName: also`,
477+
}, {
478+
tcName: "database container only",
479+
additionalVolumes: []*v1beta1.AdditionalVolume{{
480+
Containers: []string{"database"},
481+
ClaimName: "required",
482+
Name: "required",
483+
}},
484+
expectedContainers: `- name: database
485+
resources: {}
486+
volumeMounts:
487+
- mountPath: /volumes/required
488+
name: required
489+
- name: other
490+
resources: {}`,
491+
expectedInitContainers: `- name: startup
492+
resources: {}
493+
- name: config
494+
resources: {}`,
495+
expectedVolumes: `- name: required
496+
persistentVolumeClaim:
497+
claimName: required`,
498+
}, {
499+
tcName: "readonly",
500+
additionalVolumes: []*v1beta1.AdditionalVolume{{
501+
Containers: []string{"database"},
502+
ClaimName: "required",
503+
Name: "required",
504+
ReadOnly: true,
505+
}},
506+
expectedContainers: `- name: database
507+
resources: {}
508+
volumeMounts:
509+
- mountPath: /volumes/required
510+
name: required
511+
- name: other
512+
resources: {}`,
513+
expectedInitContainers: `- name: startup
514+
resources: {}
515+
- name: config
516+
resources: {}`,
517+
expectedVolumes: `- name: required
518+
persistentVolumeClaim:
519+
claimName: required
520+
readOnly: true`,
521+
}}
522+
523+
for _, tc := range testCases {
524+
t.Run(tc.tcName, func(t *testing.T) {
525+
526+
copyPodTemplate := podTemplate.DeepCopy()
527+
528+
addAdditionalVolumesToSpecifiedContainers(
529+
copyPodTemplate,
530+
tc.additionalVolumes,
531+
)
532+
533+
assert.Assert(t, cmp.MarshalMatches(
534+
copyPodTemplate.Spec.Containers,
535+
tc.expectedContainers))
536+
assert.Assert(t, cmp.MarshalMatches(
537+
copyPodTemplate.Spec.InitContainers,
538+
tc.expectedInitContainers))
539+
assert.Assert(t, cmp.MarshalMatches(
540+
copyPodTemplate.Spec.Volumes,
541+
tc.expectedVolumes))
542+
})
543+
}
544+
}

0 commit comments

Comments
 (0)