type JobUpgradeTest … // Name returns the tracking name of the test. func (JobUpgradeTest) Name() string { … } // Setup starts a Job with a parallelism of 2 and 2 completions running. func (t *JobUpgradeTest) Setup(ctx context.Context, f *framework.Framework) { … } // Test verifies that the Jobs Pods are running after the an upgrade func (t *JobUpgradeTest) Test(ctx context.Context, f *framework.Framework, done <-chan struct{ … } // Teardown cleans up any remaining resources. func (t *JobUpgradeTest) Teardown(ctx context.Context, f *framework.Framework) { … } // ensureAllJobPodsRunning uses c to check if the Job named jobName in ns // is running, returning an error if the expected parallelism is not // satisfied. func ensureAllJobPodsRunning(ctx context.Context, c clientset.Interface, ns, jobName string, parallelism int32) error { … } // ensureJobRunning uses c to check if the Job named jobName in ns is running, // (not completed, nor failed, nor suspended) returning an error if it can't // read the job or when it's not runnig func ensureJobRunning(ctx context.Context, c clientset.Interface, ns, jobName string) error { … }