mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
Clean shutdown of volume integration tests
This commit is contained in:
parent
3b98f59e16
commit
f68e72a360
@ -19,14 +19,12 @@ package volume
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
clientgoinformers "k8s.io/client-go/informers"
|
clientgoinformers "k8s.io/client-go/informers"
|
||||||
@ -34,6 +32,7 @@ import (
|
|||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
fakecloud "k8s.io/cloud-provider/fake"
|
fakecloud "k8s.io/cloud-provider/fake"
|
||||||
|
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/attachdetach"
|
"k8s.io/kubernetes/pkg/controller/volume/attachdetach"
|
||||||
volumecache "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
volumecache "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
"k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
||||||
@ -144,8 +143,10 @@ var defaultTimerConfig = attachdetach.TimerConfig{
|
|||||||
// event is somehow missed by AttachDetach controller - it still
|
// event is somehow missed by AttachDetach controller - it still
|
||||||
// gets cleaned up by Desired State of World populator.
|
// gets cleaned up by Desired State of World populator.
|
||||||
func TestPodDeletionWithDswp(t *testing.T) {
|
func TestPodDeletionWithDswp(t *testing.T) {
|
||||||
_, server, closeFn := framework.RunAnAPIServer(framework.NewIntegrationTestControlPlaneConfig())
|
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
||||||
defer closeFn()
|
server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
|
||||||
|
defer server.TearDownFn()
|
||||||
|
|
||||||
namespaceName := "test-pod-deletion"
|
namespaceName := "test-pod-deletion"
|
||||||
node := &v1.Node{
|
node := &v1.Node{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
@ -156,10 +157,11 @@ func TestPodDeletionWithDswp(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ns := framework.CreateTestingNamespace(namespaceName, t)
|
testClient, ctrl, _, informers := createAdClients(t, server, defaultSyncPeriod, defaultTimerConfig)
|
||||||
defer framework.DeleteTestingNamespace(ns, t)
|
|
||||||
|
ns := framework.CreateNamespaceOrDie(testClient, namespaceName, t)
|
||||||
|
defer framework.DeleteNamespaceOrDie(testClient, ns, t)
|
||||||
|
|
||||||
testClient, ctrl, _, informers := createAdClients(ns, t, server, defaultSyncPeriod, defaultTimerConfig)
|
|
||||||
pod := fakePodWithVol(namespaceName)
|
pod := fakePodWithVol(namespaceName)
|
||||||
podStopCh := make(chan struct{})
|
podStopCh := make(chan struct{})
|
||||||
|
|
||||||
@ -218,8 +220,9 @@ func initCSIObjects(stopCh <-chan struct{}, informers clientgoinformers.SharedIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPodUpdateWithWithADC(t *testing.T) {
|
func TestPodUpdateWithWithADC(t *testing.T) {
|
||||||
_, server, closeFn := framework.RunAnAPIServer(framework.NewIntegrationTestControlPlaneConfig())
|
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
||||||
defer closeFn()
|
server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
|
||||||
|
defer server.TearDownFn()
|
||||||
namespaceName := "test-pod-update"
|
namespaceName := "test-pod-update"
|
||||||
|
|
||||||
node := &v1.Node{
|
node := &v1.Node{
|
||||||
@ -231,10 +234,10 @@ func TestPodUpdateWithWithADC(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ns := framework.CreateTestingNamespace(namespaceName, t)
|
testClient, ctrl, _, informers := createAdClients(t, server, defaultSyncPeriod, defaultTimerConfig)
|
||||||
defer framework.DeleteTestingNamespace(ns, t)
|
|
||||||
|
|
||||||
testClient, ctrl, _, informers := createAdClients(ns, t, server, defaultSyncPeriod, defaultTimerConfig)
|
ns := framework.CreateNamespaceOrDie(testClient, namespaceName, t)
|
||||||
|
defer framework.DeleteNamespaceOrDie(testClient, ns, t)
|
||||||
|
|
||||||
pod := fakePodWithVol(namespaceName)
|
pod := fakePodWithVol(namespaceName)
|
||||||
podStopCh := make(chan struct{})
|
podStopCh := make(chan struct{})
|
||||||
@ -287,8 +290,9 @@ func TestPodUpdateWithWithADC(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPodUpdateWithKeepTerminatedPodVolumes(t *testing.T) {
|
func TestPodUpdateWithKeepTerminatedPodVolumes(t *testing.T) {
|
||||||
_, server, closeFn := framework.RunAnAPIServer(framework.NewIntegrationTestControlPlaneConfig())
|
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
||||||
defer closeFn()
|
server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
|
||||||
|
defer server.TearDownFn()
|
||||||
namespaceName := "test-pod-update"
|
namespaceName := "test-pod-update"
|
||||||
|
|
||||||
node := &v1.Node{
|
node := &v1.Node{
|
||||||
@ -301,10 +305,10 @@ func TestPodUpdateWithKeepTerminatedPodVolumes(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ns := framework.CreateTestingNamespace(namespaceName, t)
|
testClient, ctrl, _, informers := createAdClients(t, server, defaultSyncPeriod, defaultTimerConfig)
|
||||||
defer framework.DeleteTestingNamespace(ns, t)
|
|
||||||
|
|
||||||
testClient, ctrl, _, informers := createAdClients(ns, t, server, defaultSyncPeriod, defaultTimerConfig)
|
ns := framework.CreateNamespaceOrDie(testClient, namespaceName, t)
|
||||||
|
defer framework.DeleteNamespaceOrDie(testClient, ns, t)
|
||||||
|
|
||||||
pod := fakePodWithVol(namespaceName)
|
pod := fakePodWithVol(namespaceName)
|
||||||
podStopCh := make(chan struct{})
|
podStopCh := make(chan struct{})
|
||||||
@ -397,15 +401,12 @@ func waitForPodFuncInDSWP(t *testing.T, dswp volumecache.DesiredStateOfWorld, ch
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func createAdClients(ns *v1.Namespace, t *testing.T, server *httptest.Server, syncPeriod time.Duration, timers attachdetach.TimerConfig) (*clientset.Clientset, attachdetach.AttachDetachController, *persistentvolume.PersistentVolumeController, clientgoinformers.SharedInformerFactory) {
|
func createAdClients(t *testing.T, server *kubeapiservertesting.TestServer, syncPeriod time.Duration, timers attachdetach.TimerConfig) (*clientset.Clientset, attachdetach.AttachDetachController, *persistentvolume.PersistentVolumeController, clientgoinformers.SharedInformerFactory) {
|
||||||
config := restclient.Config{
|
config := restclient.CopyConfig(server.ClientConfig)
|
||||||
Host: server.URL,
|
config.QPS = 1000000
|
||||||
ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Group: "", Version: "v1"}},
|
config.Burst = 1000000
|
||||||
QPS: 1000000,
|
|
||||||
Burst: 1000000,
|
|
||||||
}
|
|
||||||
resyncPeriod := 12 * time.Hour
|
resyncPeriod := 12 * time.Hour
|
||||||
testClient := clientset.NewForConfigOrDie(&config)
|
testClient := clientset.NewForConfigOrDie(server.ClientConfig)
|
||||||
|
|
||||||
host := volumetest.NewFakeVolumeHost(t, "/tmp/fake", nil, nil)
|
host := volumetest.NewFakeVolumeHost(t, "/tmp/fake", nil, nil)
|
||||||
plugin := &volumetest.FakeVolumePlugin{
|
plugin := &volumetest.FakeVolumePlugin{
|
||||||
@ -471,8 +472,9 @@ func createAdClients(ns *v1.Namespace, t *testing.T, server *httptest.Server, sy
|
|||||||
// event is somehow missed by AttachDetach controller - it still
|
// event is somehow missed by AttachDetach controller - it still
|
||||||
// gets added by Desired State of World populator.
|
// gets added by Desired State of World populator.
|
||||||
func TestPodAddedByDswp(t *testing.T) {
|
func TestPodAddedByDswp(t *testing.T) {
|
||||||
_, server, closeFn := framework.RunAnAPIServer(framework.NewIntegrationTestControlPlaneConfig())
|
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
||||||
defer closeFn()
|
server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
|
||||||
|
defer server.TearDownFn()
|
||||||
namespaceName := "test-pod-deletion"
|
namespaceName := "test-pod-deletion"
|
||||||
|
|
||||||
node := &v1.Node{
|
node := &v1.Node{
|
||||||
@ -483,11 +485,10 @@ func TestPodAddedByDswp(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
testClient, ctrl, _, informers := createAdClients(t, server, defaultSyncPeriod, defaultTimerConfig)
|
||||||
|
|
||||||
ns := framework.CreateTestingNamespace(namespaceName, t)
|
ns := framework.CreateNamespaceOrDie(testClient, namespaceName, t)
|
||||||
defer framework.DeleteTestingNamespace(ns, t)
|
defer framework.DeleteNamespaceOrDie(testClient, ns, t)
|
||||||
|
|
||||||
testClient, ctrl, _, informers := createAdClients(ns, t, server, defaultSyncPeriod, defaultTimerConfig)
|
|
||||||
|
|
||||||
pod := fakePodWithVol(namespaceName)
|
pod := fakePodWithVol(namespaceName)
|
||||||
podStopCh := make(chan struct{})
|
podStopCh := make(chan struct{})
|
||||||
@ -546,14 +547,12 @@ func TestPodAddedByDswp(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPVCBoundWithADC(t *testing.T) {
|
func TestPVCBoundWithADC(t *testing.T) {
|
||||||
_, server, closeFn := framework.RunAnAPIServer(framework.NewIntegrationTestControlPlaneConfig())
|
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
||||||
defer closeFn()
|
server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
|
||||||
|
defer server.TearDownFn()
|
||||||
namespaceName := "test-pod-deletion"
|
namespaceName := "test-pod-deletion"
|
||||||
|
|
||||||
ns := framework.CreateTestingNamespace(namespaceName, t)
|
testClient, ctrl, pvCtrl, informers := createAdClients(t, server, defaultSyncPeriod, attachdetach.TimerConfig{
|
||||||
defer framework.DeleteTestingNamespace(ns, t)
|
|
||||||
|
|
||||||
testClient, ctrl, pvCtrl, informers := createAdClients(ns, t, server, defaultSyncPeriod, attachdetach.TimerConfig{
|
|
||||||
ReconcilerLoopPeriod: 100 * time.Millisecond,
|
ReconcilerLoopPeriod: 100 * time.Millisecond,
|
||||||
ReconcilerMaxWaitForUnmountDuration: 6 * time.Second,
|
ReconcilerMaxWaitForUnmountDuration: 6 * time.Second,
|
||||||
DesiredStateOfWorldPopulatorLoopSleepPeriod: 24 * time.Hour,
|
DesiredStateOfWorldPopulatorLoopSleepPeriod: 24 * time.Hour,
|
||||||
@ -561,6 +560,9 @@ func TestPVCBoundWithADC(t *testing.T) {
|
|||||||
DesiredStateOfWorldPopulatorListPodsRetryDuration: 24 * time.Hour,
|
DesiredStateOfWorldPopulatorListPodsRetryDuration: 24 * time.Hour,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ns := framework.CreateNamespaceOrDie(testClient, namespaceName, t)
|
||||||
|
defer framework.DeleteNamespaceOrDie(testClient, ns, t)
|
||||||
|
|
||||||
node := &v1.Node{
|
node := &v1.Node{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "node-sandbox",
|
Name: "node-sandbox",
|
||||||
|
Loading…
Reference in New Issue
Block a user