1
16
17 package framework
18
19 import (
20 v1 "k8s.io/api/core/v1"
21 storagev1 "k8s.io/api/storage/v1"
22 "k8s.io/kubernetes/test/e2e/feature"
23 "k8s.io/kubernetes/test/e2e/framework"
24 e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
25 )
26
27 const (
28
29 MinFileSize = 1 * e2evolume.MiB
30
31
32 FileSizeSmall = 1 * e2evolume.MiB
33
34 FileSizeMedium = 100 * e2evolume.MiB
35
36 FileSizeLarge = 1 * e2evolume.GiB
37 )
38
39
40 type TestVolType string
41
42 var (
43
44 InlineVolume TestVolType = "InlineVolume"
45
46 PreprovisionedPV TestVolType = "PreprovisionedPV"
47
48 DynamicPV TestVolType = "DynamicPV"
49
50 CSIInlineVolume TestVolType = "CSIInlineVolume"
51
52 GenericEphemeralVolume TestVolType = "GenericEphemeralVolume"
53 )
54
55
56 type TestSnapshotType string
57
58 var (
59
60 DynamicCreatedSnapshot TestSnapshotType = "DynamicSnapshot"
61
62 PreprovisionedCreatedSnapshot TestSnapshotType = "PreprovisionedSnapshot"
63 )
64
65
66 type TestSnapshotDeletionPolicy string
67
68 var (
69
70 DeleteSnapshot TestSnapshotDeletionPolicy = "Delete"
71
72 RetainSnapshot TestSnapshotDeletionPolicy = "Retain"
73 )
74
75 func (t TestSnapshotDeletionPolicy) String() string {
76 return string(t)
77 }
78
79
80 type TestPattern struct {
81 Name string
82 TestTags []interface{}
83 VolType TestVolType
84 FsType string
85 VolMode v1.PersistentVolumeMode
86 SnapshotType TestSnapshotType
87 SnapshotDeletionPolicy TestSnapshotDeletionPolicy
88 BindingMode storagev1.VolumeBindingMode
89 AllowExpansion bool
90 }
91
92 var (
93
94
95
96 DefaultFsInlineVolume = TestPattern{
97 Name: "Inline-volume (default fs)",
98 VolType: InlineVolume,
99 }
100
101 DefaultFsCSIEphemeralVolume = TestPattern{
102 Name: "CSI Ephemeral-volume (default fs)",
103 VolType: CSIInlineVolume,
104 }
105
106 DefaultFsGenericEphemeralVolume = TestPattern{
107 Name: "Generic Ephemeral-volume (default fs)",
108 VolType: GenericEphemeralVolume,
109 AllowExpansion: true,
110 }
111
112 DefaultFsPreprovisionedPV = TestPattern{
113 Name: "Pre-provisioned PV (default fs)",
114 VolType: PreprovisionedPV,
115 }
116
117 DefaultFsDynamicPV = TestPattern{
118 Name: "Dynamic PV (default fs)",
119 VolType: DynamicPV,
120 SnapshotType: DynamicCreatedSnapshot,
121 SnapshotDeletionPolicy: DeleteSnapshot,
122 }
123
124
125
126
127 Ext3InlineVolume = TestPattern{
128 Name: "Inline-volume (ext3)",
129 VolType: InlineVolume,
130 FsType: "ext3",
131 }
132
133 Ext3CSIEphemeralVolume = TestPattern{
134 Name: "CSI Ephemeral-volume (ext3)",
135 VolType: CSIInlineVolume,
136 FsType: "ext3",
137 }
138
139 Ext3GenericEphemeralVolume = TestPattern{
140 Name: "Generic Ephemeral-volume (ext3)",
141 VolType: GenericEphemeralVolume,
142 FsType: "ext3",
143 }
144
145 Ext3PreprovisionedPV = TestPattern{
146 Name: "Pre-provisioned PV (ext3)",
147 VolType: PreprovisionedPV,
148 FsType: "ext3",
149 }
150
151 Ext3DynamicPV = TestPattern{
152 Name: "Dynamic PV (ext3)",
153 VolType: DynamicPV,
154 FsType: "ext3",
155 }
156
157
158
159
160 Ext4InlineVolume = TestPattern{
161 Name: "Inline-volume (ext4)",
162 VolType: InlineVolume,
163 FsType: "ext4",
164 }
165
166 Ext4CSIEphemeralVolume = TestPattern{
167 Name: "CSI Ephemeral-volume (ext4)",
168 VolType: CSIInlineVolume,
169 FsType: "ext4",
170 }
171
172 Ext4GenericEphemeralVolume = TestPattern{
173 Name: "Generic Ephemeral-volume (ext4)",
174 VolType: GenericEphemeralVolume,
175 FsType: "ext4",
176 }
177
178 Ext4PreprovisionedPV = TestPattern{
179 Name: "Pre-provisioned PV (ext4)",
180 VolType: PreprovisionedPV,
181 FsType: "ext4",
182 }
183
184 Ext4DynamicPV = TestPattern{
185 Name: "Dynamic PV (ext4)",
186 VolType: DynamicPV,
187 FsType: "ext4",
188 SnapshotType: DynamicCreatedSnapshot,
189 SnapshotDeletionPolicy: DeleteSnapshot,
190 }
191
192
193
194
195 XfsInlineVolume = TestPattern{
196 Name: "Inline-volume (xfs)",
197 VolType: InlineVolume,
198 FsType: "xfs",
199 TestTags: []interface{}{framework.WithSlow()},
200 }
201
202 XfsCSIEphemeralVolume = TestPattern{
203 Name: "CSI Ephemeral-volume (xfs)",
204 VolType: CSIInlineVolume,
205 FsType: "xfs",
206 TestTags: []interface{}{framework.WithSlow()},
207 }
208
209 XfsGenericEphemeralVolume = TestPattern{
210 Name: "Generic Ephemeral-volume (xfs)",
211 VolType: GenericEphemeralVolume,
212 FsType: "xfs",
213 TestTags: []interface{}{framework.WithSlow()},
214 }
215
216 XfsPreprovisionedPV = TestPattern{
217 Name: "Pre-provisioned PV (xfs)",
218 VolType: PreprovisionedPV,
219 FsType: "xfs",
220 TestTags: []interface{}{framework.WithSlow()},
221 }
222
223 XfsDynamicPV = TestPattern{
224 Name: "Dynamic PV (xfs)",
225 VolType: DynamicPV,
226 FsType: "xfs",
227 TestTags: []interface{}{framework.WithSlow()},
228 SnapshotType: DynamicCreatedSnapshot,
229 SnapshotDeletionPolicy: DeleteSnapshot,
230 }
231
232
233
234
235 NtfsInlineVolume = TestPattern{
236 Name: "Inline-volume (ntfs)",
237 VolType: InlineVolume,
238 FsType: "ntfs",
239 TestTags: []interface{}{feature.Windows},
240 }
241
242 NtfsCSIEphemeralVolume = TestPattern{
243 Name: "CSI Ephemeral-volume (ntfs) [alpha]",
244 VolType: CSIInlineVolume,
245 FsType: "ntfs",
246 TestTags: []interface{}{feature.Windows},
247 }
248
249 NtfsGenericEphemeralVolume = TestPattern{
250 Name: "Generic Ephemeral-volume (ntfs)",
251 VolType: GenericEphemeralVolume,
252 FsType: "ntfs",
253 TestTags: []interface{}{feature.Windows},
254 }
255
256 NtfsPreprovisionedPV = TestPattern{
257 Name: "Pre-provisioned PV (ntfs)",
258 VolType: PreprovisionedPV,
259 FsType: "ntfs",
260 TestTags: []interface{}{feature.Windows},
261 }
262
263 NtfsDynamicPV = TestPattern{
264 Name: "Dynamic PV (ntfs)",
265 VolType: DynamicPV,
266 FsType: "ntfs",
267 TestTags: []interface{}{feature.Windows},
268 SnapshotDeletionPolicy: DeleteSnapshot,
269 SnapshotType: DynamicCreatedSnapshot,
270 }
271
272
273
274
275 FsVolModePreprovisionedPV = TestPattern{
276 Name: "Pre-provisioned PV (filesystem volmode)",
277 VolType: PreprovisionedPV,
278 VolMode: v1.PersistentVolumeFilesystem,
279 }
280
281 FsVolModeDynamicPV = TestPattern{
282 Name: "Dynamic PV (filesystem volmode)",
283 VolType: DynamicPV,
284 VolMode: v1.PersistentVolumeFilesystem,
285 }
286
287
288
289
290 BlockVolModePreprovisionedPV = TestPattern{
291 Name: "Pre-provisioned PV (block volmode)",
292 VolType: PreprovisionedPV,
293 VolMode: v1.PersistentVolumeBlock,
294 }
295
296 BlockVolModeDynamicPV = TestPattern{
297 Name: "Dynamic PV (block volmode)",
298 VolType: DynamicPV,
299 VolMode: v1.PersistentVolumeBlock,
300 SnapshotType: DynamicCreatedSnapshot,
301 SnapshotDeletionPolicy: DeleteSnapshot,
302 }
303
304 BlockVolModeGenericEphemeralVolume = TestPattern{
305 Name: "Generic Ephemeral-volume (block volmode) (late-binding)",
306 VolType: GenericEphemeralVolume,
307 VolMode: v1.PersistentVolumeBlock,
308 BindingMode: storagev1.VolumeBindingWaitForFirstConsumer,
309 AllowExpansion: true,
310 }
311
312
313
314
315 DynamicSnapshotDelete = TestPattern{
316 Name: "Dynamic Snapshot (delete policy)",
317 SnapshotType: DynamicCreatedSnapshot,
318 SnapshotDeletionPolicy: DeleteSnapshot,
319 VolType: DynamicPV,
320 }
321
322 PreprovisionedSnapshotDelete = TestPattern{
323 Name: "Pre-provisioned Snapshot (delete policy)",
324 SnapshotType: PreprovisionedCreatedSnapshot,
325 SnapshotDeletionPolicy: DeleteSnapshot,
326 VolType: DynamicPV,
327 }
328
329
330 EphemeralSnapshotDelete = TestPattern{
331 Name: "Ephemeral Snapshot (delete policy)",
332 SnapshotType: DynamicCreatedSnapshot,
333 SnapshotDeletionPolicy: DeleteSnapshot,
334 VolType: GenericEphemeralVolume,
335 }
336
337 DynamicSnapshotRetain = TestPattern{
338 Name: "Dynamic Snapshot (retain policy)",
339 SnapshotType: DynamicCreatedSnapshot,
340 SnapshotDeletionPolicy: RetainSnapshot,
341 VolType: DynamicPV,
342 }
343
344 PreprovisionedSnapshotRetain = TestPattern{
345 Name: "Pre-provisioned Snapshot (retain policy)",
346 SnapshotType: PreprovisionedCreatedSnapshot,
347 SnapshotDeletionPolicy: RetainSnapshot,
348 VolType: DynamicPV,
349 }
350
351
352 EphemeralSnapshotRetain = TestPattern{
353 Name: "Ephemeral Snapshot (retain policy)",
354 SnapshotType: DynamicCreatedSnapshot,
355 SnapshotDeletionPolicy: RetainSnapshot,
356 VolType: GenericEphemeralVolume,
357 }
358
359
360
361
362 DefaultFsDynamicPVAllowExpansion = TestPattern{
363 Name: "Dynamic PV (default fs)(allowExpansion)",
364 VolType: DynamicPV,
365 AllowExpansion: true,
366 }
367
368
369 NtfsDynamicPVAllowExpansion = TestPattern{
370 Name: "Dynamic PV (ntfs)(allowExpansion)",
371 VolType: DynamicPV,
372 AllowExpansion: true,
373 FsType: "ntfs",
374 TestTags: []interface{}{feature.Windows},
375 }
376
377
378 BlockVolModeDynamicPVAllowExpansion = TestPattern{
379 Name: "Dynamic PV (block volmode)(allowExpansion)",
380 VolType: DynamicPV,
381 VolMode: v1.PersistentVolumeBlock,
382 AllowExpansion: true,
383 }
384
385
386
387
388 TopologyImmediate = TestPattern{
389 Name: "Dynamic PV (immediate binding)",
390 VolType: DynamicPV,
391 BindingMode: storagev1.VolumeBindingImmediate,
392 }
393
394
395 TopologyDelayed = TestPattern{
396 Name: "Dynamic PV (delayed binding)",
397 VolType: DynamicPV,
398 BindingMode: storagev1.VolumeBindingWaitForFirstConsumer,
399 }
400 )
401
402
403 func NewVolTypeMap(types ...TestVolType) map[TestVolType]bool {
404 m := map[TestVolType]bool{}
405 for _, t := range types {
406 m[t] = true
407 }
408 return m
409 }
410
View as plain text