Skip to content

Commit

Permalink
integration tests for managedJobNamespaceSelector functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
dgrove-oss committed Dec 4, 2024
1 parent 50563f7 commit 7ee1d12
Show file tree
Hide file tree
Showing 14 changed files with 262 additions and 24 deletions.
41 changes: 39 additions & 2 deletions test/integration/controller/jobs/job/job_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
apimeta "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -63,9 +62,15 @@ var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailu
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(
jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(labels.Everything()),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns")),
jobframework.WithLabelKeysToCopy([]string{"toCopyKey"}),
))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})
ginkgo.AfterAll(func() {
fwk.StopManager(ctx)
Expand Down Expand Up @@ -283,6 +288,38 @@ var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailu
gomega.Expect(createdWorkload.Spec.QueueName).Should(gomega.Equal(jobQueueName))
})

ginkgo.It("Should not manage a job without a queue-name submittted to an unmanaged namespace", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
job := testingjob.MakeJob(jobName, "unmanaged-ns").Suspend(false).Obj()
gomega.Expect(k8sClient.Create(ctx, job)).Should(gomega.Succeed())

ginkgo.By("The job is not suspended and a workload is not created")
lookupKey := types.NamespacedName{Name: job.Name, Namespace: job.Namespace}
childWorkload := &kueue.Workload{}
childWlLookupKey := types.NamespacedName{Name: workloadjob.GetWorkloadNameForJob(job.Name, job.UID), Namespace: job.Namespace}
gomega.Consistently(func(g gomega.Gomega) {
g.Expect(k8sClient.Get(ctx, lookupKey, job)).Should(gomega.Succeed())
g.Expect(job.Spec.Suspend).Should(gomega.Equal(ptr.To(false)))
g.Expect(k8sClient.Get(ctx, childWlLookupKey, childWorkload)).Should(testing.BeNotFoundError())
}, util.ConsistentDuration, util.Interval).Should(gomega.Succeed())
})

ginkgo.It("Should manage a job without a queue-name submittted to managed namespace", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in a")
job := testingjob.MakeJob(jobName, ns.Name).Suspend(false).Obj()
gomega.Expect(k8sClient.Create(ctx, job)).Should(gomega.Succeed())

ginkgo.By("The job is suspended and a workload is created")
lookupKey := types.NamespacedName{Name: job.Name, Namespace: ns.Name}
childWorkload := &kueue.Workload{}
childWlLookupKey := types.NamespacedName{Name: workloadjob.GetWorkloadNameForJob(job.Name, job.UID), Namespace: job.Namespace}
gomega.Eventually(func(g gomega.Gomega) {
g.Expect(k8sClient.Get(ctx, lookupKey, job)).Should(gomega.Succeed())
g.Expect(job.Spec.Suspend).Should(gomega.Equal(ptr.To(true)))
g.Expect(k8sClient.Get(ctx, childWlLookupKey, childWorkload)).Should(gomega.Succeed())
}, util.Timeout, util.Interval).Should(gomega.Succeed())
})

ginkgo.When("The parent job is managed by kueue", func() {
ginkgo.It("Should suspend a job if the parent workload does not exist", func() {
ginkgo.By("creating the parent job")
Expand Down
39 changes: 37 additions & 2 deletions test/integration/controller/jobs/jobset/jobset_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import (
apimeta "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -57,7 +56,14 @@ const (

var _ = ginkgo.Describe("JobSet controller", ginkgo.Ordered, ginkgo.ContinueOnFailure, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})
ginkgo.AfterAll(func() {
fwk.StopManager(ctx)
Expand Down Expand Up @@ -274,6 +280,35 @@ var _ = ginkgo.Describe("JobSet controller", ginkgo.Ordered, ginkgo.ContinueOnFa
util.ExpectWorkloadToFinish(ctx, k8sClient, wlLookupKey)
})

ginkgo.It("A jobset created in an unmanaged namespace is not suspended and a workload is not created", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
jobSet := testingjobset.MakeJobSet(jobSetName, "unmanaged-ns").ReplicatedJobs(
testingjobset.ReplicatedJobRequirements{
Name: "replicated-job-1",
Replicas: 1,
Parallelism: 1,
Completions: 1,
}, testingjobset.ReplicatedJobRequirements{
Name: "replicated-job-2",
Replicas: 3,
Parallelism: 1,
Completions: 1,
},
).Suspend(false).
Obj()

gomega.Expect(k8sClient.Create(ctx, jobSet)).To(gomega.Succeed())
createdJobSet := &jobsetapi.JobSet{}
wlLookupKey := types.NamespacedName{Name: workloadjobset.GetWorkloadNameForJobSet(jobSet.Name, jobSet.UID), Namespace: ns.Name}
createdWorkload := &kueue.Workload{}

gomega.Consistently(func(g gomega.Gomega) {
g.Expect(k8sClient.Get(ctx, types.NamespacedName{Name: jobSetName, Namespace: jobSet.Namespace}, createdJobSet)).Should(gomega.Succeed())
g.Expect(ptr.Deref(createdJobSet.Spec.Suspend, false)).Should(gomega.BeFalse())
g.Expect(k8sClient.Get(ctx, wlLookupKey, createdWorkload)).Should(testing.BeNotFoundError())
}, util.ConsistentDuration, util.Interval).Should(gomega.Succeed())
})

ginkgo.It("Should finish the preemption when the jobset becomes inactive", func() {
jobSet := testingjobset.MakeJobSet(jobSetName, ns.Name).ReplicatedJobs(
testingjobset.ReplicatedJobRequirements{
Expand Down
19 changes: 19 additions & 0 deletions test/integration/controller/jobs/kubeflow/kubeflowjob.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,25 @@ func ShouldReconcileJob(ctx context.Context, k8sClient client.Client, job, creat
}, util.Timeout, util.Interval).Should(gomega.Succeed())
}

func ShouldNotReconcileUnmanagedJob(ctx context.Context, k8sClient client.Client, job, createdJob kubeflowjob.KubeflowJob) {
ginkgo.By("checking the job gets suspended when created unsuspended")
err := k8sClient.Create(ctx, job.Object())
gomega.Expect(err).To(gomega.Succeed())

lookupKey := client.ObjectKeyFromObject(job.Object())
wlLookupKey := types.NamespacedName{
Name: jobframework.GetWorkloadNameForOwnerWithGVK(job.Object().GetName(), job.Object().GetUID(), job.GVK()),
Namespace: job.Object().GetNamespace(),
}
workload := &kueue.Workload{}
gomega.Consistently(func(g gomega.Gomega) {
g.Expect(k8sClient.Get(ctx, lookupKey, createdJob.Object())).Should(gomega.Succeed())
g.Expect(createdJob.IsSuspended()).Should(gomega.BeFalse())
g.Expect(k8sClient.Get(ctx, wlLookupKey, workload)).Should(testing.BeNotFoundError())

}, util.Timeout, util.Interval).Should(gomega.Succeed())
}

func JobControllerWhenWaitForPodsReadyEnabled(ctx context.Context, k8sClient client.Client, job, createdJob kubeflowjob.KubeflowJob, podsReadyTestSpec PodsReadyTestSpec, podSetsResources []PodSetsResource) {
ginkgo.By("Create a job")
job.Object().SetAnnotations(map[string]string{constants.QueueAnnotation: jobQueueName})
Expand Down
29 changes: 27 additions & 2 deletions test/integration/controller/jobs/mpijob/mpijob_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
apimeta "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -58,7 +57,14 @@ const (

var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailure, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(false, jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(false, jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})
ginkgo.AfterAll(func() {
fwk.StopManager(ctx)
Expand Down Expand Up @@ -264,6 +270,25 @@ var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailu
}, util.Timeout, util.Interval).Should(gomega.Succeed())
})

ginkgo.It("Should not manage a job without a queue-name submittted to an unmanaged namespace", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
job := testingmpijob.MakeMPIJob(jobName, "unmanaged-ns").
Suspend(false).
GenericLauncherAndWorker().Obj()
err := k8sClient.Create(ctx, job)
gomega.Expect(err).To(gomega.Succeed())

ginkgo.By("The job is not suspended and a workload is not created")
lookupKey := types.NamespacedName{Name: job.Name, Namespace: job.Namespace}
childWorkload := &kueue.Workload{}
childWlLookupKey := types.NamespacedName{Name: workloadmpijob.GetWorkloadNameForMPIJob(job.Name, job.UID), Namespace: job.Namespace}
gomega.Consistently(func(g gomega.Gomega) {
g.Expect(k8sClient.Get(ctx, lookupKey, job)).Should(gomega.Succeed())
g.Expect(job.Spec.RunPolicy.Suspend).Should(gomega.Equal(ptr.To(false)))
g.Expect(k8sClient.Get(ctx, childWlLookupKey, childWorkload)).Should(testing.BeNotFoundError())
}, util.ConsistentDuration, util.Interval).Should(gomega.Succeed())
})

ginkgo.When("the queue has admission checks", func() {
var (
clusterQueueAc *kueue.ClusterQueue
Expand Down
17 changes: 15 additions & 2 deletions test/integration/controller/jobs/mxjob/mxjob_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"

Expand Down Expand Up @@ -54,7 +53,14 @@ const (

var _ = ginkgo.Describe("Job controller", framework.RedundantSpec, ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})

ginkgo.AfterAll(func() {
Expand Down Expand Up @@ -94,6 +100,13 @@ var _ = ginkgo.Describe("Job controller", framework.RedundantSpec, ginkgo.Ordere
},
})
})

ginkgo.It("Should not manage a job without a queue-name submittted to an unmanaged namespace", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
kfJob := kubeflowjob.KubeflowJob{KFJobControl: (*workloadmxjob.JobControl)(testingmxjob.MakeMXJob(jobName, "unmanaged-ns").Suspend(false).Obj())}
createdJob := kubeflowjob.KubeflowJob{KFJobControl: (*workloadmxjob.JobControl)(&kftraining.MXJob{})}
kftesting.ShouldNotReconcileUnmanagedJob(ctx, k8sClient, kfJob, createdJob)
})
})

var _ = ginkgo.Describe("Job controller when waitForPodsReady enabled", framework.RedundantSpec, ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"

Expand Down Expand Up @@ -55,7 +54,14 @@ const (

var _ = ginkgo.Describe("Job controller", framework.RedundantSpec, ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})

ginkgo.AfterAll(func() {
Expand Down Expand Up @@ -92,6 +98,13 @@ var _ = ginkgo.Describe("Job controller", framework.RedundantSpec, ginkgo.Ordere
},
})
})

ginkgo.It("Should not manage a job without a queue-name submittted to an unmanaged namespace", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
kfJob := kubeflowjob.KubeflowJob{KFJobControl: (*workloadpaddlejob.JobControl)(testingpaddlejob.MakePaddleJob(jobName, "unmanaged-ns").Suspend(false).Obj())}
createdJob := kubeflowjob.KubeflowJob{KFJobControl: (*workloadpaddlejob.JobControl)(&kftraining.PaddleJob{})}
kftesting.ShouldNotReconcileUnmanagedJob(ctx, k8sClient, kfJob, createdJob)
})
})

var _ = ginkgo.Describe("Job controller when waitForPodsReady enabled", framework.RedundantSpec, ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
"sigs.k8s.io/controller-runtime/pkg/client"
Expand Down Expand Up @@ -57,7 +56,14 @@ const (

var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})

ginkgo.AfterAll(func() {
Expand Down Expand Up @@ -93,6 +99,13 @@ var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailu
},
})
})

ginkgo.It("Should not manage a job without a queue-name submittted to an unmanaged namespace", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
kfJob := kubeflowjob.KubeflowJob{KFJobControl: (*workloadpytorchjob.JobControl)(testingpytorchjob.MakePyTorchJob(jobName, "unmanaged-ns").Suspend(false).Obj())}
createdJob := kubeflowjob.KubeflowJob{KFJobControl: (*workloadpytorchjob.JobControl)(&kftraining.PyTorchJob{})}
kftesting.ShouldNotReconcileUnmanagedJob(ctx, k8sClient, kfJob, createdJob)
})
})

var _ = ginkgo.Describe("Job controller for workloads when only jobs with queue are managed", ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
schedulingv1 "k8s.io/api/scheduling/v1"
apimeta "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -54,7 +53,8 @@ const (

var _ = ginkgo.Describe("RayCluster controller", ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
})
ginkgo.AfterAll(func() {
fwk.StopManager(ctx)
Expand Down
28 changes: 26 additions & 2 deletions test/integration/controller/jobs/rayjob/rayjob_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
schedulingv1 "k8s.io/api/scheduling/v1"
apimeta "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -61,7 +60,14 @@ func setInitStatus(name, namespace string) {

var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
ginkgo.BeforeAll(func() {
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true), jobframework.WithManagedJobsNamespaceSelector(labels.Everything())))
fwk.StartManager(ctx, cfg, managerSetup(jobframework.WithManageJobsWithoutQueueName(true),
jobframework.WithManagedJobsNamespaceSelector(util.NewNamespaceSelectorExcluding("unmanaged-ns"))))
unmanagedNamespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "unmanaged-ns",
},
}
gomega.Expect(k8sClient.Create(ctx, unmanagedNamespace)).To(gomega.Succeed())
})

ginkgo.AfterAll(func() {
Expand Down Expand Up @@ -246,6 +252,24 @@ var _ = ginkgo.Describe("Job controller", ginkgo.Ordered, ginkgo.ContinueOnFailu
g.Expect(createdWorkload.Status.Conditions).Should(testing.HaveConditionStatusTrue(kueue.WorkloadFinished))
}, util.Timeout, util.Interval).Should(gomega.Succeed())
})

ginkgo.It("A RayJob created in an unmanaged namespace is not suspended and a workload is not created", func() {
ginkgo.By("Creating an unsuspended job without a queue-name in unmanaged-ns")
job := testingrayjob.MakeJob(jobName, "unmanaged-ns").
Suspend(false).
Obj()
err := k8sClient.Create(ctx, job)
gomega.Expect(err).To(gomega.Succeed())
createdJob := &rayv1.RayJob{}
wlLookupKey := types.NamespacedName{Name: workloadrayjob.GetWorkloadNameForRayJob(job.Name, job.UID), Namespace: ns.Name}
createdWorkload := &kueue.Workload{}

gomega.Consistently(func(g gomega.Gomega) {
g.Expect(k8sClient.Get(ctx, types.NamespacedName{Name: job.Name, Namespace: job.Namespace}, createdJob)).Should(gomega.Succeed())
g.Expect(createdJob.Spec.Suspend).Should(gomega.BeFalse())
g.Expect(k8sClient.Get(ctx, wlLookupKey, createdWorkload)).Should(testing.BeNotFoundError())
}, util.ConsistentDuration, util.Interval).Should(gomega.Succeed())
})
})

var _ = ginkgo.Describe("Job controller for workloads when only jobs with queue are managed", ginkgo.Ordered, ginkgo.ContinueOnFailure, func() {
Expand Down
Loading

0 comments on commit 7ee1d12

Please sign in to comment.