mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 09:52:49 +00:00
Fixes TestNodeSelectorUpdate flaky test
This commit is contained in:
parent
89dd275dde
commit
74e1b07a5e
@ -38,7 +38,9 @@ import (
|
||||
"k8s.io/apiserver/pkg/util/feature"
|
||||
"k8s.io/client-go/informers"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
typedv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/util/retry"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
jobcontroller "k8s.io/kubernetes/pkg/controller/job"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
@ -652,12 +654,14 @@ func TestNodeSelectorUpdate(t *testing.T) {
|
||||
}
|
||||
jobName := job.Name
|
||||
jobNamespace := job.Namespace
|
||||
jobClient := clientSet.BatchV1().Jobs(jobNamespace)
|
||||
|
||||
// (1) Unsuspend and set node selector in the same update.
|
||||
nodeSelector := map[string]string{"foo": "bar"}
|
||||
job.Spec.Template.Spec.NodeSelector = nodeSelector
|
||||
job.Spec.Suspend = pointer.BoolPtr(false)
|
||||
_, err = clientSet.BatchV1().Jobs(jobNamespace).Update(ctx, job, metav1.UpdateOptions{})
|
||||
_, err = updateJob(ctx, jobClient, jobName, func(j *batchv1.Job) {
|
||||
j.Spec.Template.Spec.NodeSelector = nodeSelector
|
||||
j.Spec.Suspend = pointer.BoolPtr(false)
|
||||
})
|
||||
if !featureGate {
|
||||
if err == nil || !strings.Contains(err.Error(), "spec.template: Invalid value") {
|
||||
t.Errorf("Expected \"spec.template: Invalid value\" error, got: %v", err)
|
||||
@ -691,12 +695,10 @@ func TestNodeSelectorUpdate(t *testing.T) {
|
||||
}
|
||||
|
||||
// (3) Update node selector again. It should fail since the job is unsuspended.
|
||||
var updatedJob *batchv1.Job
|
||||
if updatedJob, err = clientSet.BatchV1().Jobs(jobNamespace).Get(ctx, jobName, metav1.GetOptions{}); err != nil {
|
||||
t.Fatalf("can't find the job: %v", err)
|
||||
}
|
||||
updatedJob.Spec.Template.Spec.NodeSelector = map[string]string{"foo": "baz"}
|
||||
_, err = clientSet.BatchV1().Jobs(jobNamespace).Update(ctx, updatedJob, metav1.UpdateOptions{})
|
||||
_, err = updateJob(ctx, jobClient, jobName, func(j *batchv1.Job) {
|
||||
j.Spec.Template.Spec.NodeSelector = map[string]string{"foo": "baz"}
|
||||
})
|
||||
|
||||
if err == nil || !strings.Contains(err.Error(), "spec.template: Invalid value") {
|
||||
t.Errorf("Expected \"spec.template: Invalid value\" error, got: %v", err)
|
||||
}
|
||||
@ -1014,3 +1016,17 @@ func setDuringTest(val *int, newVal int) func() {
|
||||
*val = origVal
|
||||
}
|
||||
}
|
||||
|
||||
func updateJob(ctx context.Context, jobClient typedv1.JobInterface, jobName string, updateFunc func(*batchv1.Job)) (*batchv1.Job, error) {
|
||||
var job *batchv1.Job
|
||||
err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
|
||||
newJob, err := jobClient.Get(ctx, jobName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
updateFunc(newJob)
|
||||
job, err = jobClient.Update(ctx, newJob, metav1.UpdateOptions{})
|
||||
return err
|
||||
})
|
||||
return job, err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user