mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-20 09:05:26 +00:00
Extend test CSI plugin constructor to support multiple volume host types
This commit is contained in:
parent
1db6c30947
commit
12e85e0e1c
@ -41,8 +41,22 @@ import (
|
|||||||
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
// create a plugin mgr to load plugins and setup a fake client
|
const (
|
||||||
|
volumeHostType int = iota
|
||||||
|
kubeletVolumeHostType
|
||||||
|
attachDetachVolumeHostType
|
||||||
|
)
|
||||||
|
|
||||||
func newTestPlugin(t *testing.T, client *fakeclient.Clientset) (*csiPlugin, string) {
|
func newTestPlugin(t *testing.T, client *fakeclient.Clientset) (*csiPlugin, string) {
|
||||||
|
return newTestPluginWithVolumeHost(t, client, kubeletVolumeHostType)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newTestPluginWithAttachDetachVolumeHost(t *testing.T, client *fakeclient.Clientset) (*csiPlugin, string) {
|
||||||
|
return newTestPluginWithVolumeHost(t, client, attachDetachVolumeHostType)
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a plugin mgr to load plugins and setup a fake client
|
||||||
|
func newTestPluginWithVolumeHost(t *testing.T, client *fakeclient.Clientset, hostType int) (*csiPlugin, string) {
|
||||||
tmpDir, err := utiltesting.MkTmpdir("csi-test")
|
tmpDir, err := utiltesting.MkTmpdir("csi-test")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("can't create temp dir: %v", err)
|
t.Fatalf("can't create temp dir: %v", err)
|
||||||
@ -77,7 +91,19 @@ func newTestPlugin(t *testing.T, client *fakeclient.Clientset) (*csiPlugin, stri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
host := volumetest.NewFakeKubeletVolumeHostWithCSINodeName(t,
|
var host volume.VolumeHost
|
||||||
|
switch hostType {
|
||||||
|
case volumeHostType:
|
||||||
|
host = volumetest.NewFakeVolumeHostWithCSINodeName(t,
|
||||||
|
tmpDir,
|
||||||
|
client,
|
||||||
|
ProbeVolumePlugins(),
|
||||||
|
"fakeNode",
|
||||||
|
csiDriverLister,
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
case kubeletVolumeHostType:
|
||||||
|
host = volumetest.NewFakeKubeletVolumeHostWithCSINodeName(t,
|
||||||
tmpDir,
|
tmpDir,
|
||||||
client,
|
client,
|
||||||
ProbeVolumePlugins(),
|
ProbeVolumePlugins(),
|
||||||
@ -85,8 +111,25 @@ func newTestPlugin(t *testing.T, client *fakeclient.Clientset) (*csiPlugin, stri
|
|||||||
csiDriverLister,
|
csiDriverLister,
|
||||||
volumeAttachmentLister,
|
volumeAttachmentLister,
|
||||||
)
|
)
|
||||||
|
case attachDetachVolumeHostType:
|
||||||
|
host = volumetest.NewFakeAttachDetachVolumeHostWithCSINodeName(t,
|
||||||
|
tmpDir,
|
||||||
|
client,
|
||||||
|
ProbeVolumePlugins(),
|
||||||
|
"fakeNode",
|
||||||
|
csiDriverLister,
|
||||||
|
volumeAttachmentLister,
|
||||||
|
)
|
||||||
|
default:
|
||||||
|
t.Fatalf("Unsupported volume host type")
|
||||||
|
}
|
||||||
|
|
||||||
pluginMgr := host.GetPluginMgr()
|
fakeHost, ok := host.(volumetest.FakeVolumeHost)
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("Unsupported volume host type")
|
||||||
|
}
|
||||||
|
|
||||||
|
pluginMgr := fakeHost.GetPluginMgr()
|
||||||
plug, err := pluginMgr.FindPluginByName(CSIPluginName)
|
plug, err := pluginMgr.FindPluginByName(CSIPluginName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("can't find plugin %v", CSIPluginName)
|
t.Fatalf("can't find plugin %v", CSIPluginName)
|
||||||
|
@ -253,7 +253,33 @@ type fakeAttachDetachVolumeHost struct {
|
|||||||
var _ AttachDetachVolumeHost = &fakeAttachDetachVolumeHost{}
|
var _ AttachDetachVolumeHost = &fakeAttachDetachVolumeHost{}
|
||||||
var _ FakeVolumeHost = &fakeAttachDetachVolumeHost{}
|
var _ FakeVolumeHost = &fakeAttachDetachVolumeHost{}
|
||||||
|
|
||||||
// TODO: Create constructors for AttachDetachVolumeHost once it's consumed in tests.
|
func NewFakeAttachDetachVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
||||||
|
return newFakeAttachDetachVolumeHost(t, rootDir, kubeClient, plugins, nil, nil, nodeName, driverLister, volumeAttachLister)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFakeAttachDetachVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, cloud cloudprovider.Interface, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
||||||
|
host := &fakeAttachDetachVolumeHost{}
|
||||||
|
host.rootDir = rootDir
|
||||||
|
host.kubeClient = kubeClient
|
||||||
|
host.cloud = cloud
|
||||||
|
host.nodeName = nodeName
|
||||||
|
host.csiDriverLister = driverLister
|
||||||
|
host.volumeAttachmentLister = volumeAttachLister
|
||||||
|
host.mounter = mount.NewFakeMounter(nil)
|
||||||
|
host.hostUtil = hostutil.NewFakeHostUtil(pathToTypeMap)
|
||||||
|
host.exec = &testingexec.FakeExec{DisableScripts: true}
|
||||||
|
host.pluginMgr = &VolumePluginMgr{}
|
||||||
|
if err := host.pluginMgr.InitPlugins(plugins, nil /* prober */, host); err != nil {
|
||||||
|
t.Fatalf("Failed to init plugins while creating fake volume host: %v", err)
|
||||||
|
}
|
||||||
|
host.subpather = &subpath.FakeSubpath{}
|
||||||
|
host.informerFactory = informers.NewSharedInformerFactory(kubeClient, time.Minute)
|
||||||
|
// Wait until the InitPlugins setup is finished before returning from this setup func
|
||||||
|
if err := host.WaitForKubeletErrNil(); err != nil {
|
||||||
|
t.Fatalf("Failed to wait for kubelet err to be nil while creating fake volume host: %v", err)
|
||||||
|
}
|
||||||
|
return host
|
||||||
|
}
|
||||||
|
|
||||||
func (f *fakeAttachDetachVolumeHost) CSINodeLister() storagelistersv1.CSINodeLister {
|
func (f *fakeAttachDetachVolumeHost) CSINodeLister() storagelistersv1.CSINodeLister {
|
||||||
// not needed for testing
|
// not needed for testing
|
||||||
|
Loading…
Reference in New Issue
Block a user