Clean shutdown of cronjob integration tests

This commit is contained in:
Wojciech Tyczyński 2022-05-21 18:11:09 +02:00
parent 2893ad3e5b
commit 8ca1ec2b60

View File

@ -30,29 +30,30 @@ import (
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
clientbatchv1 "k8s.io/client-go/kubernetes/typed/batch/v1" clientbatchv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/pkg/controller/cronjob" "k8s.io/kubernetes/pkg/controller/cronjob"
"k8s.io/kubernetes/pkg/controller/job" "k8s.io/kubernetes/pkg/controller/job"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
) )
func setup(t *testing.T) (framework.CloseFunc, *cronjob.ControllerV2, *job.Controller, informers.SharedInformerFactory, clientset.Interface, restclient.Config) { func setup(t *testing.T) (kubeapiservertesting.TearDownFunc, *cronjob.ControllerV2, *job.Controller, informers.SharedInformerFactory, clientset.Interface) {
controlPlaneConfig := framework.NewIntegrationTestControlPlaneConfig() // Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
_, server, closeFn := framework.RunAnAPIServer(controlPlaneConfig) server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
config := restclient.Config{Host: server.URL} config := restclient.CopyConfig(server.ClientConfig)
clientSet, err := clientset.NewForConfig(&config) clientSet, err := clientset.NewForConfig(config)
if err != nil { if err != nil {
t.Fatalf("Error creating clientset: %v", err) t.Fatalf("Error creating clientset: %v", err)
} }
resyncPeriod := 12 * time.Hour resyncPeriod := 12 * time.Hour
informerSet := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "cronjob-informers")), resyncPeriod) informerSet := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "cronjob-informers")), resyncPeriod)
cjc, err := cronjob.NewControllerV2(informerSet.Batch().V1().Jobs(), informerSet.Batch().V1().CronJobs(), clientSet) cjc, err := cronjob.NewControllerV2(informerSet.Batch().V1().Jobs(), informerSet.Batch().V1().CronJobs(), clientSet)
if err != nil { if err != nil {
t.Fatalf("Error creating CronJob controller: %v", err) t.Fatalf("Error creating CronJob controller: %v", err)
} }
jc := job.NewController(informerSet.Core().V1().Pods(), informerSet.Batch().V1().Jobs(), clientSet) jc := job.NewController(informerSet.Core().V1().Pods(), informerSet.Batch().V1().Jobs(), clientSet)
return closeFn, cjc, jc, informerSet, clientSet, config return server.TearDownFn, cjc, jc, informerSet, clientSet
} }
func newCronJob(name, namespace, schedule string) *batchv1.CronJob { func newCronJob(name, namespace, schedule string) *batchv1.CronJob {
@ -143,14 +144,14 @@ func validateJobAndPod(t *testing.T, clientSet clientset.Interface, namespace st
} }
func TestCronJobLaunchesPodAndCleansUp(t *testing.T) { func TestCronJobLaunchesPodAndCleansUp(t *testing.T) {
closeFn, cjc, jc, informerSet, clientSet, _ := setup(t) closeFn, cjc, jc, informerSet, clientSet := setup(t)
defer closeFn() defer closeFn()
cronJobName := "foo" cronJobName := "foo"
namespaceName := "simple-cronjob-test" namespaceName := "simple-cronjob-test"
ns := framework.CreateTestingNamespace(namespaceName, t) ns := framework.CreateNamespaceOrDie(clientSet, namespaceName, t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(clientSet, ns, t)
cjClient := clientSet.BatchV1().CronJobs(ns.Name) cjClient := clientSet.BatchV1().CronJobs(ns.Name)