Skip to content

Commit fac9cff

Browse files
Add test for CronJob owner references
1 parent 366fa90 commit fac9cff

1 file changed

Lines changed: 26 additions & 5 deletions

File tree

internal/pkg/callbacks/rolling_upgrade_test.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
appsv1 "k8s.io/api/apps/v1"
1111
batchv1 "k8s.io/api/batch/v1"
1212
v1 "k8s.io/api/core/v1"
13-
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1413
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1514
"k8s.io/apimachinery/pkg/runtime"
1615
watch "k8s.io/apimachinery/pkg/watch"
@@ -93,7 +92,7 @@ func TestUpdateRollout(t *testing.T) {
9392
t.Errorf("updating rollout: %v", err)
9493
}
9594
rollout, err = clients.ArgoRolloutClient.ArgoprojV1alpha1().Rollouts(
96-
namespace).Get(context.TODO(), rollout.Name, meta_v1.GetOptions{})
95+
namespace).Get(context.TODO(), rollout.Name, metav1.GetOptions{})
9796

9897
if err != nil {
9998
t.Errorf("getting rollout: %v", err)
@@ -285,8 +284,21 @@ func TestCreateJobFromCronjob(t *testing.T) {
285284
cronJob, err := createTestCronJobWithAnnotations(clients, fixtures.namespace, "1")
286285
assert.NoError(t, err)
287286

288-
err = callbacks.CreateJobFromCronjob(clients, fixtures.namespace, cronJob.(*batchv1.CronJob))
287+
err = callbacks.CreateJobFromCronjob(clients, fixtures.namespace, cronJob)
289288
assert.NoError(t, err)
289+
290+
jobList, err := clients.KubernetesClient.BatchV1().Jobs(fixtures.namespace).List(context.TODO(), metav1.ListOptions{})
291+
assert.NoError(t, err)
292+
293+
ownerFound := false
294+
for _, job := range jobList.Items {
295+
fmt.Println(cronJob.Kind)
296+
if isControllerOwner("CronJob", cronJob.Name, job.OwnerReferences) {
297+
ownerFound = true
298+
break
299+
}
300+
}
301+
assert.Truef(t, ownerFound, "Missing CronJob owner reference")
290302
}
291303

292304
func TestReCreateJobFromJob(t *testing.T) {
@@ -330,7 +342,7 @@ func isRestartStrategy(rollout *argorolloutv1alpha1.Rollout) bool {
330342
func watchRollout(name, namespace string) chan interface{} {
331343
timeOut := int64(1)
332344
modifiedChan := make(chan interface{})
333-
watcher, _ := clients.ArgoRolloutClient.ArgoprojV1alpha1().Rollouts(namespace).Watch(context.Background(), meta_v1.ListOptions{TimeoutSeconds: &timeOut})
345+
watcher, _ := clients.ArgoRolloutClient.ArgoprojV1alpha1().Rollouts(namespace).Watch(context.Background(), metav1.ListOptions{TimeoutSeconds: &timeOut})
334346
go watchModified(watcher, name, modifiedChan)
335347
return modifiedChan
336348
}
@@ -501,7 +513,7 @@ func createTestStatefulSetWithAnnotations(clients kube.Clients, namespace, versi
501513
return clients.KubernetesClient.AppsV1().StatefulSets(namespace).Create(context.TODO(), statefulSet, metav1.CreateOptions{})
502514
}
503515

504-
func createTestCronJobWithAnnotations(clients kube.Clients, namespace, version string) (runtime.Object, error) {
516+
func createTestCronJobWithAnnotations(clients kube.Clients, namespace, version string) (*batchv1.CronJob, error) {
505517
cronJob := &batchv1.CronJob{
506518
ObjectMeta: metav1.ObjectMeta{
507519
Name: "test-cronjob",
@@ -522,3 +534,12 @@ func createTestJobWithAnnotations(clients kube.Clients, namespace, version strin
522534
}
523535
return clients.KubernetesClient.BatchV1().Jobs(namespace).Create(context.TODO(), job, metav1.CreateOptions{})
524536
}
537+
538+
func isControllerOwner(kind, name string, ownerRefs []metav1.OwnerReference) bool {
539+
for _, ownerRef := range ownerRefs {
540+
if *ownerRef.Controller && ownerRef.Kind == kind && ownerRef.Name == name {
541+
return true
542+
}
543+
}
544+
return false
545+
}

0 commit comments

Comments
 (0)