@@ -13,3 +13,76 @@ limitations under the License.
13
13
*/
14
14
15
15
package gceGCEDriver
16
+
17
+ import (
18
+ "testing"
19
+
20
+ csi "github.com/container-storage-interface/spec/lib/go/csi"
21
+ "golang.org/x/net/context"
22
+ metadataservice "sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/gce-cloud-provider/metadata"
23
+ mountmanager "sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/mount-manager"
24
+ )
25
+
26
+ func getTestGCEDriver (t * testing.T ) * GCEDriver {
27
+ gceDriver := GetGCEDriver ()
28
+ err := gceDriver .SetupGCEDriver (nil , mountmanager .NewFakeSafeMounter (), mountmanager .NewFakeDeviceUtils (), metadataservice .NewFakeService (), driver , "test-vendor" )
29
+ if err != nil {
30
+ t .Fatalf ("Failed to setup GCE Driver: %v" , err )
31
+ }
32
+ return gceDriver
33
+ }
34
+
35
+ func TestNodeGetVolumeLimits (t * testing.T ) {
36
+
37
+ gceDriver := getTestGCEDriver (t )
38
+ ns := gceDriver .ns
39
+ req := & csi.NodeGetInfoRequest {}
40
+
41
+ testCases := []struct {
42
+ name string
43
+ machineType string
44
+ expVolumeLimit int64
45
+ }{
46
+ {
47
+ name : "Predifined standard machine" ,
48
+ machineType : "n1-standard-1" ,
49
+ expVolumeLimit : volumeLimit128 ,
50
+ },
51
+ {
52
+ name : "Predifined micro machine" ,
53
+ machineType : "f1-micro" ,
54
+ expVolumeLimit : volumeLimit16 ,
55
+ },
56
+ {
57
+ name : "Predifined small machine" ,
58
+ machineType : "g1-small" ,
59
+ expVolumeLimit : volumeLimit16 ,
60
+ },
61
+ {
62
+ name : "Custom machine with 1GiB Mem" ,
63
+ machineType : "custom-1-1024" ,
64
+ expVolumeLimit : volumeLimit128 ,
65
+ },
66
+ {
67
+ name : "Custom machine with 4GiB Mem" ,
68
+ machineType : "custom-2-4096" ,
69
+ expVolumeLimit : volumeLimit128 ,
70
+ },
71
+ }
72
+
73
+ for _ , tc := range testCases {
74
+ t .Logf ("Test case: %s" , tc .name )
75
+ metadataservice .SetMachineType (tc .machineType )
76
+ res , err := ns .NodeGetInfo (context .Background (), req )
77
+ if err != nil {
78
+ t .Fatalf ("Failed to get node info: %v" , err )
79
+ } else {
80
+ volumeLimit := res .GetMaxVolumesPerNode ()
81
+ if volumeLimit != tc .expVolumeLimit {
82
+ t .Fatalf ("Expected volume limit: %v, got %v, for machine-type: %v" ,
83
+ tc .expVolumeLimit , volumeLimit , tc .machineType )
84
+ }
85
+ t .Logf ("Get node info: %v" , res )
86
+ }
87
+ }
88
+ }
0 commit comments