diff --git a/test/integration/evictions/evictions_test.go b/test/integration/evictions/evictions_test.go index 691e174a1f6..d38359d99a1 100644 --- a/test/integration/evictions/evictions_test.go +++ b/test/integration/evictions/evictions_test.go @@ -20,7 +20,6 @@ import ( "context" "encoding/json" "fmt" - "net/http/httptest" "reflect" "strings" "sync" @@ -48,6 +47,7 @@ import ( "k8s.io/client-go/restmapper" "k8s.io/client-go/scale" "k8s.io/client-go/tools/cache" + kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" "k8s.io/kubernetes/pkg/controller/disruption" "k8s.io/kubernetes/test/integration/framework" ) @@ -61,23 +61,17 @@ const ( func TestConcurrentEvictionRequests(t *testing.T) { podNameFormat := "test-pod-%d" - s, closeFn, rm, informers, _ := rmSetup(t) + closeFn, rm, informers, _, clientSet := rmSetup(t) defer closeFn() - ns := framework.CreateTestingNamespace("concurrent-eviction-requests", t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(clientSet, "concurrent-eviction-requests", t) + defer framework.DeleteNamespaceOrDie(clientSet, ns, t) ctx, cancel := context.WithCancel(context.Background()) defer cancel() informers.Start(ctx.Done()) go rm.Run(ctx) - config := restclient.Config{Host: s.URL} - clientSet, err := clientset.NewForConfig(&config) - if err != nil { - t.Fatalf("Failed to create clientset: %v", err) - } - var gracePeriodSeconds int64 = 30 deleteOption := metav1.DeleteOptions{ GracePeriodSeconds: &gracePeriodSeconds, @@ -180,23 +174,17 @@ func TestConcurrentEvictionRequests(t *testing.T) { // TestTerminalPodEviction ensures that PDB is not checked for terminal pods. func TestTerminalPodEviction(t *testing.T) { - s, closeFn, rm, informers, _ := rmSetup(t) + closeFn, rm, informers, _, clientSet := rmSetup(t) defer closeFn() - ns := framework.CreateTestingNamespace("terminalpod-eviction", t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(clientSet, "terminalpod-eviction", t) + defer framework.DeleteNamespaceOrDie(clientSet, ns, t) ctx, cancel := context.WithCancel(context.Background()) defer cancel() informers.Start(ctx.Done()) go rm.Run(ctx) - config := restclient.Config{Host: s.URL} - clientSet, err := clientset.NewForConfig(&config) - if err != nil { - t.Fatalf("Failed to create clientset: %v", err) - } - var gracePeriodSeconds int64 = 30 deleteOption := metav1.DeleteOptions{ GracePeriodSeconds: &gracePeriodSeconds, @@ -259,7 +247,7 @@ func TestTerminalPodEviction(t *testing.T) { // TestEvictionVersions ensures the eviction endpoint accepts and returns the correct API versions func TestEvictionVersions(t *testing.T) { - s, closeFn, rm, informers, clientSet := rmSetup(t) + closeFn, rm, informers, config, clientSet := rmSetup(t) defer closeFn() ctx, cancel := context.WithCancel(context.Background()) @@ -267,8 +255,6 @@ func TestEvictionVersions(t *testing.T) { informers.Start(ctx.Done()) go rm.Run(ctx) - config := restclient.Config{Host: s.URL} - ns := "default" subresource := "eviction" pod := newPod("test") @@ -276,7 +262,7 @@ func TestEvictionVersions(t *testing.T) { t.Errorf("Failed to create pod: %v", err) } - dynamicClient, err := dynamic.NewForConfig(&config) + dynamicClient, err := dynamic.NewForConfig(config) if err != nil { t.Fatalf("Failed to create clientset: %v", err) } @@ -420,25 +406,25 @@ func newV1Eviction(ns, evictionName string, deleteOption metav1.DeleteOptions) * } } -func rmSetup(t *testing.T) (*httptest.Server, framework.CloseFunc, *disruption.DisruptionController, informers.SharedInformerFactory, clientset.Interface) { - controlPlaneConfig := framework.NewIntegrationTestControlPlaneConfig() - _, s, closeFn := framework.RunAnAPIServer(controlPlaneConfig) +func rmSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *disruption.DisruptionController, informers.SharedInformerFactory, *restclient.Config, clientset.Interface) { + // Disable ServiceAccount admission plugin as we don't have serviceaccount controller running. + server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd()) - config := restclient.Config{Host: s.URL} - clientSet, err := clientset.NewForConfig(&config) + config := restclient.CopyConfig(server.ClientConfig) + clientSet, err := clientset.NewForConfig(config) if err != nil { t.Fatalf("Error in create clientset: %v", err) } resyncPeriod := 12 * time.Hour - informers := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "pdb-informers")), resyncPeriod) + informers := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "pdb-informers")), resyncPeriod) - client := clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "disruption-controller")) + client := clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "disruption-controller")) discoveryClient := cacheddiscovery.NewMemCacheClient(clientSet.Discovery()) mapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient) scaleKindResolver := scale.NewDiscoveryScaleKindResolver(client.Discovery()) - scaleClient, err := scale.NewForConfig(&config, mapper, dynamic.LegacyAPIPathResolverFunc, scaleKindResolver) + scaleClient, err := scale.NewForConfig(config, mapper, dynamic.LegacyAPIPathResolverFunc, scaleKindResolver) if err != nil { t.Fatalf("Error in create scaleClient: %v", err) } @@ -455,7 +441,7 @@ func rmSetup(t *testing.T) (*httptest.Server, framework.CloseFunc, *disruption.D scaleClient, client.Discovery(), ) - return s, closeFn, rm, informers, clientSet + return server.TearDownFn, rm, informers, config, clientSet } // wait for the podInformer to observe the pods. Call this function before