...
1
16
17 package testing
18
19 import (
20 "testing"
21
22 v1 "k8s.io/api/core/v1"
23 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24 "k8s.io/apimachinery/pkg/util/wait"
25 "k8s.io/client-go/informers"
26 fakeclient "k8s.io/client-go/kubernetes/fake"
27 utiltesting "k8s.io/client-go/util/testing"
28 "k8s.io/kubernetes/pkg/volume"
29 "k8s.io/kubernetes/pkg/volume/csi"
30 volumetest "k8s.io/kubernetes/pkg/volume/testing"
31 )
32
33
34 func NewTestPlugin(t *testing.T, client *fakeclient.Clientset) (*volume.VolumePluginMgr, *volume.VolumePlugin, string) {
35 tmpDir, err := utiltesting.MkTmpdir("csi-test")
36 if err != nil {
37 t.Fatalf("can't create temp dir: %v", err)
38 }
39
40 if client == nil {
41 client = fakeclient.NewSimpleClientset()
42 }
43
44 client.Tracker().Add(&v1.Node{
45 ObjectMeta: metav1.ObjectMeta{
46 Name: "fakeNode",
47 },
48 Spec: v1.NodeSpec{},
49 })
50
51
52 factory := informers.NewSharedInformerFactory(client, csi.CsiResyncPeriod)
53 csiDriverInformer := factory.Storage().V1().CSIDrivers()
54 csiDriverLister := csiDriverInformer.Lister()
55
56 factory.Start(wait.NeverStop)
57 syncedTypes := factory.WaitForCacheSync(wait.NeverStop)
58 if len(syncedTypes) != 1 {
59 t.Fatalf("informers are not synced")
60 }
61 for ty, ok := range syncedTypes {
62 if !ok {
63 t.Fatalf("failed to sync: %#v", ty)
64 }
65 }
66
67 host := volumetest.NewFakeVolumeHostWithCSINodeName(t,
68 tmpDir,
69 client,
70 csi.ProbeVolumePlugins(),
71 "fakeNode",
72 csiDriverLister,
73 nil,
74 )
75 plugMgr := host.GetPluginMgr()
76
77 plug, err := plugMgr.FindPluginByName(csi.CSIPluginName)
78 if err != nil {
79 t.Fatalf("can't find plugin %v", csi.CSIPluginName)
80 }
81
82 return plugMgr, &plug, tmpDir
83 }
84
View as plain text