Skip to content

Commit 794a866

Browse files
committed
move funcs from test/e2e/framework/job to test/e2e/apps
1 parent 2914ba8 commit 794a866

File tree

6 files changed

+81
-81
lines changed

6 files changed

+81
-81
lines changed

test/e2e/apps/job.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ import (
2020
"fmt"
2121
"time"
2222

23+
batchv1 "k8s.io/api/batch/v1"
2324
v1 "k8s.io/api/core/v1"
2425
"k8s.io/apimachinery/pkg/api/errors"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27+
"k8s.io/apimachinery/pkg/util/wait"
28+
clientset "k8s.io/client-go/kubernetes"
2629
batchinternal "k8s.io/kubernetes/pkg/apis/batch"
2730
"k8s.io/kubernetes/test/e2e/framework"
2831
jobutil "k8s.io/kubernetes/test/e2e/framework/job"
@@ -137,7 +140,7 @@ var _ = SIGDescribe("Job", func() {
137140
job, err := jobutil.CreateJob(f.ClientSet, f.Namespace.Name, job)
138141
framework.ExpectNoError(err, "failed to create job in namespace: %s", f.Namespace.Name)
139142
ginkgo.By("Ensuring job past active deadline")
140-
err = jobutil.WaitForJobFailure(f.ClientSet, f.Namespace.Name, job.Name, time.Duration(activeDeadlineSeconds+10)*time.Second, "DeadlineExceeded")
143+
err = waitForJobFailure(f.ClientSet, f.Namespace.Name, job.Name, time.Duration(activeDeadlineSeconds+10)*time.Second, "DeadlineExceeded")
141144
framework.ExpectNoError(err, "failed to ensure job past active deadline in namespace: %s", f.Namespace.Name)
142145
})
143146

@@ -234,7 +237,7 @@ var _ = SIGDescribe("Job", func() {
234237
framework.ExpectNoError(err, "failed to create job in namespace: %s", f.Namespace.Name)
235238
ginkgo.By("Ensuring job exceed backofflimit")
236239

237-
err = jobutil.WaitForJobFailure(f.ClientSet, f.Namespace.Name, job.Name, jobutil.JobTimeout, "BackoffLimitExceeded")
240+
err = waitForJobFailure(f.ClientSet, f.Namespace.Name, job.Name, jobutil.JobTimeout, "BackoffLimitExceeded")
238241
framework.ExpectNoError(err, "failed to ensure job exceed backofflimit in namespace: %s", f.Namespace.Name)
239242

240243
ginkgo.By(fmt.Sprintf("Checking that %d pod created and status is failed", backoff+1))
@@ -252,3 +255,21 @@ var _ = SIGDescribe("Job", func() {
252255
}
253256
})
254257
})
258+
259+
// waitForJobFailure uses c to wait for up to timeout for the Job named jobName in namespace ns to fail.
260+
func waitForJobFailure(c clientset.Interface, ns, jobName string, timeout time.Duration, reason string) error {
261+
return wait.Poll(framework.Poll, timeout, func() (bool, error) {
262+
curr, err := c.BatchV1().Jobs(ns).Get(jobName, metav1.GetOptions{})
263+
if err != nil {
264+
return false, err
265+
}
266+
for _, c := range curr.Status.Conditions {
267+
if c.Type == batchv1.JobFailed && c.Status == v1.ConditionTrue {
268+
if reason == "" || reason == c.Reason {
269+
return true, nil
270+
}
271+
}
272+
}
273+
return false, nil
274+
})
275+
}

test/e2e/framework/autoscaling/autoscaling_utils.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,6 @@ func NewDynamicResourceConsumer(name, nsName string, kind schema.GroupVersionKin
112112
dynamicRequestSizeInMillicores, dynamicRequestSizeInMegabytes, dynamicRequestSizeCustomMetric, cpuLimit, memLimit, clientset, scaleClient, nil, nil)
113113
}
114114

115-
// NewMetricExporter is a wrapper to create a new ResourceConsumer for metrics exporter
116-
func NewMetricExporter(name, nsName string, podAnnotations, serviceAnnotations map[string]string, metricValue int, clientset clientset.Interface, scaleClient scaleclient.ScalesGetter) *ResourceConsumer {
117-
return newResourceConsumer(name, nsName, KindDeployment, 1, 0, 0, metricValue, dynamicConsumptionTimeInSeconds,
118-
dynamicRequestSizeInMillicores, dynamicRequestSizeInMegabytes, dynamicRequestSizeCustomMetric, 100, 100, clientset, scaleClient, podAnnotations, serviceAnnotations)
119-
}
120-
121115
/*
122116
NewResourceConsumer creates new ResourceConsumer
123117
initCPUTotal argument is in millicores

test/e2e/framework/job/fixtures.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,3 @@ func NewTestJob(behavior, name string, rPol v1.RestartPolicy, parallelism, compl
9797
}
9898
return job
9999
}
100-
101-
// FinishTime returns finish time of the specified job.
102-
func FinishTime(finishedJob *batchv1.Job) metav1.Time {
103-
var finishTime metav1.Time
104-
for _, c := range finishedJob.Status.Conditions {
105-
if (c.Type == batchv1.JobComplete || c.Type == batchv1.JobFailed) && c.Status == v1.ConditionTrue {
106-
return c.LastTransitionTime
107-
}
108-
}
109-
return finishTime
110-
}

test/e2e/framework/job/rest.go

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,11 @@ limitations under the License.
1717
package job
1818

1919
import (
20-
"fmt"
21-
2220
batchv1 "k8s.io/api/batch/v1"
2321
v1 "k8s.io/api/core/v1"
2422
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2523
"k8s.io/apimachinery/pkg/labels"
26-
"k8s.io/apimachinery/pkg/util/wait"
2724
clientset "k8s.io/client-go/kubernetes"
28-
"k8s.io/kubernetes/test/e2e/framework"
2925
)
3026

3127
// GetJob uses c to get the Job in namespace ns named name. If the returned error is nil, the returned Job is valid.
@@ -52,29 +48,6 @@ func UpdateJob(c clientset.Interface, ns string, job *batchv1.Job) (*batchv1.Job
5248
return c.BatchV1().Jobs(ns).Update(job)
5349
}
5450

55-
// UpdateJobWithRetries updates job with retries.
56-
func UpdateJobWithRetries(c clientset.Interface, namespace, name string, applyUpdate func(*batchv1.Job)) (job *batchv1.Job, err error) {
57-
jobs := c.BatchV1().Jobs(namespace)
58-
var updateErr error
59-
pollErr := wait.PollImmediate(framework.Poll, JobTimeout, func() (bool, error) {
60-
if job, err = jobs.Get(name, metav1.GetOptions{}); err != nil {
61-
return false, err
62-
}
63-
// Apply the update, then attempt to push it to the apiserver.
64-
applyUpdate(job)
65-
if job, err = jobs.Update(job); err == nil {
66-
framework.Logf("Updating job %s", name)
67-
return true, nil
68-
}
69-
updateErr = err
70-
return false, nil
71-
})
72-
if pollErr == wait.ErrWaitTimeout {
73-
pollErr = fmt.Errorf("couldn't apply the provided updated to job %q: %v", name, updateErr)
74-
}
75-
return job, pollErr
76-
}
77-
7851
// DeleteJob uses c to delete the Job named name in namespace ns. If the returned error is nil, the Job has been
7952
// deleted.
8053
func DeleteJob(c clientset.Interface, ns, name string) error {

test/e2e/framework/job/wait.go

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package job
1919
import (
2020
"time"
2121

22-
batchv1 "k8s.io/api/batch/v1"
2322
"k8s.io/api/core/v1"
2423
"k8s.io/apimachinery/pkg/api/errors"
2524
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -69,24 +68,6 @@ func WaitForJobFinish(c clientset.Interface, ns, jobName string) error {
6968
})
7069
}
7170

72-
// WaitForJobFailure uses c to wait for up to timeout for the Job named jobName in namespace ns to fail.
73-
func WaitForJobFailure(c clientset.Interface, ns, jobName string, timeout time.Duration, reason string) error {
74-
return wait.Poll(framework.Poll, timeout, func() (bool, error) {
75-
curr, err := c.BatchV1().Jobs(ns).Get(jobName, metav1.GetOptions{})
76-
if err != nil {
77-
return false, err
78-
}
79-
for _, c := range curr.Status.Conditions {
80-
if c.Type == batchv1.JobFailed && c.Status == v1.ConditionTrue {
81-
if reason == "" || reason == c.Reason {
82-
return true, nil
83-
}
84-
}
85-
}
86-
return false, nil
87-
})
88-
}
89-
9071
// WaitForJobGone uses c to wait for up to timeout for the Job named jobName in namespace ns to be removed.
9172
func WaitForJobGone(c clientset.Interface, ns, jobName string, timeout time.Duration) error {
9273
return wait.Poll(framework.Poll, timeout, func() (bool, error) {
@@ -109,15 +90,3 @@ func WaitForAllJobPodsGone(c clientset.Interface, ns, jobName string) error {
10990
return len(pods.Items) == 0, nil
11091
})
11192
}
112-
113-
// WaitForJobDeleting uses c to wait for the Job jobName in namespace ns to have
114-
// a non-nil deletionTimestamp (i.e. being deleted).
115-
func WaitForJobDeleting(c clientset.Interface, ns, jobName string) error {
116-
return wait.PollImmediate(framework.Poll, JobTimeout, func() (bool, error) {
117-
curr, err := c.BatchV1().Jobs(ns).Get(jobName, metav1.GetOptions{})
118-
if err != nil {
119-
return false, err
120-
}
121-
return curr.ObjectMeta.DeletionTimestamp != nil, nil
122-
})
123-
}

test/e2e/node/ttlafterfinished.go

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,27 @@ limitations under the License.
1717
package node
1818

1919
import (
20+
"fmt"
2021
"time"
2122

2223
batchv1 "k8s.io/api/batch/v1"
2324
v1 "k8s.io/api/core/v1"
25+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2426
"k8s.io/apimachinery/pkg/util/wait"
27+
clientset "k8s.io/client-go/kubernetes"
2528
"k8s.io/kubernetes/pkg/util/slice"
2629
"k8s.io/kubernetes/test/e2e/framework"
2730
jobutil "k8s.io/kubernetes/test/e2e/framework/job"
2831

2932
"github.com/onsi/ginkgo"
3033
)
3134

32-
const dummyFinalizer = "k8s.io/dummy-finalizer"
35+
const (
36+
dummyFinalizer = "k8s.io/dummy-finalizer"
37+
38+
// JobTimeout is how long to wait for a job to finish.
39+
JobTimeout = 15 * time.Minute
40+
)
3341

3442
var _ = framework.KubeDescribe("[Feature:TTLAfterFinished][NodeAlphaFeature:TTLAfterFinished]", func() {
3543
f := framework.NewDefaultFramework("ttlafterfinished")
@@ -47,7 +55,7 @@ func cleanupJob(f *framework.Framework, job *batchv1.Job) {
4755
removeFinalizerFunc := func(j *batchv1.Job) {
4856
j.ObjectMeta.Finalizers = slice.RemoveString(j.ObjectMeta.Finalizers, dummyFinalizer, nil)
4957
}
50-
_, err := jobutil.UpdateJobWithRetries(c, ns, job.Name, removeFinalizerFunc)
58+
_, err := updateJobWithRetries(c, ns, job.Name, removeFinalizerFunc)
5159
framework.ExpectNoError(err)
5260
jobutil.WaitForJobGone(c, ns, job.Name, wait.ForeverTestTimeout)
5361

@@ -78,13 +86,13 @@ func testFinishedJob(f *framework.Framework) {
7886
framework.ExpectNoError(err)
7987

8088
framework.Logf("Wait for TTL after finished controller to delete the Job")
81-
err = jobutil.WaitForJobDeleting(c, ns, job.Name)
89+
err = waitForJobDeleting(c, ns, job.Name)
8290
framework.ExpectNoError(err)
8391

8492
framework.Logf("Check Job's deletionTimestamp and compare with the time when the Job finished")
8593
job, err = jobutil.GetJob(c, ns, job.Name)
8694
framework.ExpectNoError(err)
87-
finishTime := jobutil.FinishTime(job)
95+
finishTime := FinishTime(job)
8896
finishTimeUTC := finishTime.UTC()
8997
framework.ExpectNotEqual(finishTime.IsZero(), true)
9098

@@ -94,3 +102,49 @@ func testFinishedJob(f *framework.Framework) {
94102
expireAtUTC := finishTimeUTC.Add(time.Duration(ttl) * time.Second)
95103
framework.ExpectEqual(deleteAtUTC.Before(expireAtUTC), false)
96104
}
105+
106+
// FinishTime returns finish time of the specified job.
107+
func FinishTime(finishedJob *batchv1.Job) metav1.Time {
108+
var finishTime metav1.Time
109+
for _, c := range finishedJob.Status.Conditions {
110+
if (c.Type == batchv1.JobComplete || c.Type == batchv1.JobFailed) && c.Status == v1.ConditionTrue {
111+
return c.LastTransitionTime
112+
}
113+
}
114+
return finishTime
115+
}
116+
117+
// updateJobWithRetries updates job with retries.
118+
func updateJobWithRetries(c clientset.Interface, namespace, name string, applyUpdate func(*batchv1.Job)) (job *batchv1.Job, err error) {
119+
jobs := c.BatchV1().Jobs(namespace)
120+
var updateErr error
121+
pollErr := wait.PollImmediate(framework.Poll, JobTimeout, func() (bool, error) {
122+
if job, err = jobs.Get(name, metav1.GetOptions{}); err != nil {
123+
return false, err
124+
}
125+
// Apply the update, then attempt to push it to the apiserver.
126+
applyUpdate(job)
127+
if job, err = jobs.Update(job); err == nil {
128+
framework.Logf("Updating job %s", name)
129+
return true, nil
130+
}
131+
updateErr = err
132+
return false, nil
133+
})
134+
if pollErr == wait.ErrWaitTimeout {
135+
pollErr = fmt.Errorf("couldn't apply the provided updated to job %q: %v", name, updateErr)
136+
}
137+
return job, pollErr
138+
}
139+
140+
// waitForJobDeleting uses c to wait for the Job jobName in namespace ns to have
141+
// a non-nil deletionTimestamp (i.e. being deleted).
142+
func waitForJobDeleting(c clientset.Interface, ns, jobName string) error {
143+
return wait.PollImmediate(framework.Poll, JobTimeout, func() (bool, error) {
144+
curr, err := c.BatchV1().Jobs(ns).Get(jobName, metav1.GetOptions{})
145+
if err != nil {
146+
return false, err
147+
}
148+
return curr.ObjectMeta.DeletionTimestamp != nil, nil
149+
})
150+
}

0 commit comments

Comments
 (0)