@@ -45,6 +45,75 @@ func TestClustersCompatible(t *testing.T) {
4545 })
4646}
4747
48+ func TestMayUseLocalSSD (t * testing.T ) {
49+ tests := []struct {
50+ name string
51+ spec ClusterSpec
52+ defaultPreferLocalSSD bool
53+ expected bool
54+ }{
55+ {
56+ name : "default spec with PreferLocalSSD=true" ,
57+ defaultPreferLocalSSD : true ,
58+ expected : true ,
59+ },
60+ {
61+ name : "default spec with PreferLocalSSD=false" ,
62+ defaultPreferLocalSSD : false ,
63+ expected : false ,
64+ },
65+ {
66+ name : "explicit non-local-ssd volume type" ,
67+ spec : ClusterSpec {VolumeType : "gp3" },
68+ defaultPreferLocalSSD : true ,
69+ expected : false ,
70+ },
71+ {
72+ name : "explicit local-ssd volume type" ,
73+ spec : ClusterSpec {VolumeType : "local-ssd" },
74+ defaultPreferLocalSSD : false ,
75+ expected : true ,
76+ },
77+ {
78+ name : "LocalSSD disabled" ,
79+ spec : ClusterSpec {LocalSSD : LocalSSDDisable },
80+ defaultPreferLocalSSD : true ,
81+ expected : false ,
82+ },
83+ {
84+ name : "LocalSSD preferred" ,
85+ spec : ClusterSpec {LocalSSD : LocalSSDPreferOn },
86+ defaultPreferLocalSSD : false ,
87+ expected : true ,
88+ },
89+ {
90+ name : "RandomizeVolumeType enabled" ,
91+ spec : ClusterSpec {RandomizeVolumeType : true },
92+ defaultPreferLocalSSD : false ,
93+ expected : true ,
94+ },
95+ {
96+ name : "VolumeSize set overrides PreferLocalSSD" ,
97+ spec : ClusterSpec {VolumeSize : 100 },
98+ defaultPreferLocalSSD : true ,
99+ expected : false ,
100+ },
101+ {
102+ name : "VolumeSize set overrides LocalSSDPreferOn" ,
103+ spec : ClusterSpec {VolumeSize : 100 , LocalSSD : LocalSSDPreferOn },
104+ defaultPreferLocalSSD : true ,
105+ expected : false ,
106+ },
107+ }
108+
109+ for _ , tc := range tests {
110+ t .Run (tc .name , func (t * testing.T ) {
111+ result := tc .spec .mayUseLocalSSD (tc .defaultPreferLocalSSD )
112+ require .Equal (t , tc .expected , result )
113+ })
114+ }
115+ }
116+
48117func TestClustersRetainClearedInfo (t * testing.T ) {
49118 // Adding a test in case we switch the ClustersCompatible signature to take
50119 // pointers to ClusterSpec in the future.
0 commit comments