Add E2E test for indexed job
This commit is contained in:
		@@ -19,12 +19,14 @@ package apps
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	batchv1 "k8s.io/api/batch/v1"
 | 
						batchv1 "k8s.io/api/batch/v1"
 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	apierrors "k8s.io/apimachinery/pkg/api/errors"
 | 
						apierrors "k8s.io/apimachinery/pkg/api/errors"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
 | 
						"k8s.io/apimachinery/pkg/util/sets"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	batchinternal "k8s.io/kubernetes/pkg/apis/batch"
 | 
						batchinternal "k8s.io/kubernetes/pkg/apis/batch"
 | 
				
			||||||
@@ -67,6 +69,37 @@ var _ = SIGDescribe("Job", func() {
 | 
				
			|||||||
		framework.ExpectEqual(successes, completions, "epected %d successful job pods, but got  %d", completions, successes)
 | 
							framework.ExpectEqual(successes, completions, "epected %d successful job pods, but got  %d", completions, successes)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
							Testcase: Ensure Pods of an Indexed Job get a unique index.
 | 
				
			||||||
 | 
							Description: Create an Indexed Job, wait for completion, capture the output of the pods and verify that they contain the completion index.
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
 | 
						ginkgo.It("[Feature:IndexedJob] should create pods for an Indexed job with completion indexes", func() {
 | 
				
			||||||
 | 
							ginkgo.By("Creating Indexed job")
 | 
				
			||||||
 | 
							job := e2ejob.NewTestJob("succeed", "indexed-job", v1.RestartPolicyNever, parallelism, completions, nil, backoffLimit)
 | 
				
			||||||
 | 
							job.Spec.CompletionMode = batchv1.IndexedCompletion
 | 
				
			||||||
 | 
							job, err := e2ejob.CreateJob(f.ClientSet, f.Namespace.Name, job)
 | 
				
			||||||
 | 
							framework.ExpectNoError(err, "failed to create indexed job in namespace %s", f.Namespace.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ginkgo.By("Ensuring job reaches completions")
 | 
				
			||||||
 | 
							err = e2ejob.WaitForJobComplete(f.ClientSet, f.Namespace.Name, job.Name, completions)
 | 
				
			||||||
 | 
							framework.ExpectNoError(err, "failed to ensure job completion in namespace: %s", f.Namespace.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ginkgo.By("Ensuring pods with index for job exist")
 | 
				
			||||||
 | 
							pods, err := e2ejob.GetJobPods(f.ClientSet, f.Namespace.Name, job.Name)
 | 
				
			||||||
 | 
							framework.ExpectNoError(err, "failed to get pod list for job in namespace: %s", f.Namespace.Name)
 | 
				
			||||||
 | 
							succeededIndexes := sets.NewInt()
 | 
				
			||||||
 | 
							for _, pod := range pods.Items {
 | 
				
			||||||
 | 
								if pod.Status.Phase == v1.PodSucceeded && pod.Annotations != nil {
 | 
				
			||||||
 | 
									ix, err := strconv.Atoi(pod.Annotations[batchv1.JobCompletionIndexAnnotationAlpha])
 | 
				
			||||||
 | 
									framework.ExpectNoError(err, "failed obtaining completion index from pod in namespace: %s", f.Namespace.Name)
 | 
				
			||||||
 | 
									succeededIndexes.Insert(ix)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							gotIndexes := succeededIndexes.List()
 | 
				
			||||||
 | 
							wantIndexes := []int{0, 1, 2, 3}
 | 
				
			||||||
 | 
							framework.ExpectEqual(gotIndexes, wantIndexes, "expected completed indexes %s, but got %s", gotIndexes, wantIndexes)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
		Testcase: Ensure that the pods associated with the job are removed once the job is deleted
 | 
							Testcase: Ensure that the pods associated with the job are removed once the job is deleted
 | 
				
			||||||
		Description: Create a job and ensure the associated pod count is equal to paralellism count. Delete the
 | 
							Description: Create a job and ensure the associated pod count is equal to paralellism count. Delete the
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user