Clean shutdown of replicationcontroller integration tests

This commit is contained in:
Wojciech Tyczyński 2022-05-21 10:54:05 +02:00
parent 33831c9fd3
commit 7ac6638f92

View File

@ -38,6 +38,7 @@ import (
"k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/retry" "k8s.io/client-go/util/retry"
featuregatetesting "k8s.io/component-base/featuregate/testing" featuregatetesting "k8s.io/component-base/featuregate/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
podutil "k8s.io/kubernetes/pkg/api/v1/pod" podutil "k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/controller/replication" "k8s.io/kubernetes/pkg/controller/replication"
"k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/features"
@ -109,26 +110,26 @@ func newMatchingPod(podName, namespace string) *v1.Pod {
} }
} }
func rmSetup(t *testing.T) (framework.CloseFunc, *replication.ReplicationManager, informers.SharedInformerFactory, clientset.Interface) { func rmSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *replication.ReplicationManager, informers.SharedInformerFactory, clientset.Interface) {
controlPlaneConfig := framework.NewIntegrationTestControlPlaneConfig() // Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
_, s, closeFn := framework.RunAnAPIServer(controlPlaneConfig) server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
config := restclient.Config{Host: s.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 in create clientset: %v", err) t.Fatalf("Error in create clientset: %v", err)
} }
resyncPeriod := 12 * time.Hour resyncPeriod := 12 * time.Hour
informers := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "rc-informers")), resyncPeriod) informers := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "rc-informers")), resyncPeriod)
rm := replication.NewReplicationManager( rm := replication.NewReplicationManager(
informers.Core().V1().Pods(), informers.Core().V1().Pods(),
informers.Core().V1().ReplicationControllers(), informers.Core().V1().ReplicationControllers(),
clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "replication-controller")), clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "replication-controller")),
replication.BurstReplicas, replication.BurstReplicas,
) )
return closeFn, rm, informers, clientSet return server.TearDownFn, rm, informers, clientSet
} }
// Run RC controller and informers // Run RC controller and informers
@ -412,8 +413,8 @@ func TestAdoption(t *testing.T) {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
closeFn, rm, informers, clientSet := rmSetup(t) closeFn, rm, informers, clientSet := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace(fmt.Sprintf("rc-adoption-%d", i), t) ns := framework.CreateNamespaceOrDie(clientSet, fmt.Sprintf("rc-adoption-%d", i), t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(clientSet, ns, t)
rcClient := clientSet.CoreV1().ReplicationControllers(ns.Name) rcClient := clientSet.CoreV1().ReplicationControllers(ns.Name)
podClient := clientSet.CoreV1().Pods(ns.Name) podClient := clientSet.CoreV1().Pods(ns.Name)
@ -455,8 +456,8 @@ func TestAdoption(t *testing.T) {
func TestSpecReplicasChange(t *testing.T) { func TestSpecReplicasChange(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-spec-replicas-change", t) ns := framework.CreateNamespaceOrDie(c, "test-spec-replicas-change", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -498,8 +499,8 @@ func TestLogarithmicScaleDown(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.LogarithmicScaleDown, true)() defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.LogarithmicScaleDown, true)()
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-spec-replicas-change", t) ns := framework.CreateNamespaceOrDie(c, "test-spec-replicas-change", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -535,8 +536,8 @@ func TestLogarithmicScaleDown(t *testing.T) {
func TestDeletingAndFailedPods(t *testing.T) { func TestDeletingAndFailedPods(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-deleting-and-failed-pods", t) ns := framework.CreateNamespaceOrDie(c, "test-deleting-and-failed-pods", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -600,8 +601,8 @@ func TestDeletingAndFailedPods(t *testing.T) {
func TestOverlappingRCs(t *testing.T) { func TestOverlappingRCs(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-overlapping-rcs", t) ns := framework.CreateNamespaceOrDie(c, "test-overlapping-rcs", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -635,8 +636,8 @@ func TestOverlappingRCs(t *testing.T) {
func TestPodOrphaningAndAdoptionWhenLabelsChange(t *testing.T) { func TestPodOrphaningAndAdoptionWhenLabelsChange(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-pod-orphaning-and-adoption-when-labels-change", t) ns := framework.CreateNamespaceOrDie(c, "test-pod-orphaning-and-adoption-when-labels-change", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -712,8 +713,8 @@ func TestPodOrphaningAndAdoptionWhenLabelsChange(t *testing.T) {
func TestGeneralPodAdoption(t *testing.T) { func TestGeneralPodAdoption(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-general-pod-adoption", t) ns := framework.CreateNamespaceOrDie(c, "test-general-pod-adoption", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -744,8 +745,8 @@ func TestGeneralPodAdoption(t *testing.T) {
func TestReadyAndAvailableReplicas(t *testing.T) { func TestReadyAndAvailableReplicas(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-ready-and-available-replicas", t) ns := framework.CreateNamespaceOrDie(c, "test-ready-and-available-replicas", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -796,8 +797,8 @@ func TestReadyAndAvailableReplicas(t *testing.T) {
func TestRCScaleSubresource(t *testing.T) { func TestRCScaleSubresource(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-rc-scale-subresource", t) ns := framework.CreateNamespaceOrDie(c, "test-rc-scale-subresource", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()
@ -815,8 +816,8 @@ func TestRCScaleSubresource(t *testing.T) {
func TestExtraPodsAdoptionAndDeletion(t *testing.T) { func TestExtraPodsAdoptionAndDeletion(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-extra-pods-adoption-and-deletion", t) ns := framework.CreateNamespaceOrDie(c, "test-extra-pods-adoption-and-deletion", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
rc := newRC("rc", ns.Name, 2) rc := newRC("rc", ns.Name, 2)
// Create 3 pods, RC should adopt only 2 of them // Create 3 pods, RC should adopt only 2 of them
@ -847,8 +848,8 @@ func TestExtraPodsAdoptionAndDeletion(t *testing.T) {
func TestFullyLabeledReplicas(t *testing.T) { func TestFullyLabeledReplicas(t *testing.T) {
closeFn, rm, informers, c := rmSetup(t) closeFn, rm, informers, c := rmSetup(t)
defer closeFn() defer closeFn()
ns := framework.CreateTestingNamespace("test-fully-labeled-replicas", t) ns := framework.CreateNamespaceOrDie(c, "test-fully-labeled-replicas", t)
defer framework.DeleteTestingNamespace(ns, t) defer framework.DeleteNamespaceOrDie(c, ns, t)
stopControllers := runControllerAndInformers(t, rm, informers, 0) stopControllers := runControllerAndInformers(t, rm, informers, 0)
defer stopControllers() defer stopControllers()