Skip to content

Commit ec8e405

Browse files
authored
[master] quicktests: Force VDI format on creation (#6999)
master version of #6998 cherry-picked commits 68c78d8, c3ac00b
2 parents 8eb47f7 + 6960404 commit ec8e405

5 files changed

Lines changed: 66 additions & 45 deletions

File tree

ocaml/quicktest/qt.ml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,20 +192,25 @@ module VDI = struct
192192

193193
let test_vdi_name_description = "VDI for storage quicktest"
194194

195-
let make rpc session_id ?(virtual_size = 4194304L) sR =
195+
let make rpc session_id ?(virtual_size = Int64.(mul (mul 4L 1024L) 1024L))
196+
?backing_format sR =
197+
let sm_config =
198+
match backing_format with Some x -> [("image-format", x)] | None -> []
199+
in
196200
Client.Client.VDI.create ~sR ~session_id ~rpc
197201
~name_label:test_vdi_name_label
198202
~name_description:test_vdi_name_description ~_type:`user ~sharable:false
199203
~read_only:false ~virtual_size ~xenstore_data:[] ~other_config:[] ~tags:[]
200-
~sm_config:[]
204+
~sm_config
201205

202206
let with_destroyed rpc session_id self f =
203207
Xapi_stdext_pervasives.Pervasiveext.finally f (fun () ->
204208
Client.Client.VDI.destroy ~rpc ~session_id ~self
205209
)
206210

207-
let with_new rpc session_id ?(virtual_size = 4194304L) sr f =
208-
let self = make rpc session_id ~virtual_size sr in
211+
let with_new rpc session_id ?(virtual_size = Int64.(mul (mul 4L 1024L) 1024L))
212+
?backing_format sr f =
213+
let self = make rpc session_id ~virtual_size ?backing_format sr in
209214
with_destroyed rpc session_id self (fun () -> f self)
210215

211216
let with_any rpc session_id sr_info f =

ocaml/quicktest/qt.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ module VDI : sig
7575
rpc
7676
-> API.ref_session
7777
-> ?virtual_size:int64
78+
-> ?backing_format:string
7879
-> API.ref_SR
7980
-> (API.ref_VDI -> 'a)
8081
-> 'a

ocaml/quicktest/quicktest_max_vdi_size.ml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
let with_max_vdi rpc session_id sr f =
22
Qt.VDI.with_new rpc session_id ~virtual_size:Constants.max_vhd_size sr
3-
(fun vdi ->
3+
~backing_format:"vhd" (fun vdi ->
44
(* We write some data to the very end of the VDI to ensure the IO code
55
gets tested with large offsets *)
66
Qt.VDI.with_open rpc session_id vdi `RW (fun fd ->
@@ -43,7 +43,8 @@ let test_export_import rpc session_id sr_info () =
4343
|> ignore ;
4444
Xapi_stdext_pervasives.Pervasiveext.finally
4545
(fun () ->
46-
Qt.VDI.with_new rpc session_id ~virtual_size sR (fun new_vdi ->
46+
Qt.VDI.with_new rpc session_id ~virtual_size sR ~backing_format:format
47+
(fun new_vdi ->
4748
let new_vdi_uuid =
4849
Client.Client.VDI.get_uuid ~rpc ~session_id ~self:new_vdi
4950
in

ocaml/quicktest/quicktest_vdi_ops_data_integrity.ml

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,14 @@ let checksum rpc session_id vdi =
5757
Digest.to_hex (Digest.file path)
5858
)
5959

60-
let check_vdi_unchanged rpc session_id ~vdi_size ~prepare_vdi ~vdi_op sr_info ()
61-
=
60+
let check_vdi_unchanged rpc session_id ~vdi_size ~prepare_vdi ~vdi_op
61+
~backing_format sr_info () =
6262
let sR = sr_info.Qt.sr in
63-
Qt.VDI.with_new ~virtual_size:vdi_size rpc session_id sR (fun vdi ->
63+
Qt.VDI.with_new ~virtual_size:vdi_size ~backing_format rpc session_id sR
64+
(fun vdi ->
6465
prepare_vdi rpc session_id vdi ;
6566
let checksum_original = checksum rpc session_id vdi in
66-
let new_vdi = vdi_op rpc session_id sR vdi in
67+
let new_vdi = vdi_op rpc session_id sR vdi backing_format in
6768
Qt.VDI.with_destroyed rpc session_id new_vdi (fun () ->
6869
let checksum_copy = checksum rpc session_id new_vdi in
6970
if checksum_copy <> checksum_original then
@@ -77,11 +78,12 @@ let check_vdi_unchanged rpc session_id ~vdi_size ~prepare_vdi ~vdi_op sr_info ()
7778
)
7879

7980
let check_vdi_delta rpc session_id ~vdi_size ~prepare_vdi ~prepare_vdi_base
80-
~vdi_op sr_info () =
81+
~vdi_op ~backing_format sr_info () =
8182
let sR = sr_info.Qt.sr in
82-
Qt.VDI.with_new ~virtual_size:vdi_size rpc session_id sR
83+
Qt.VDI.with_new ~virtual_size:vdi_size ~backing_format rpc session_id sR
8384
@@ fun vdi_original ->
84-
Qt.VDI.with_new ~virtual_size:vdi_size rpc session_id sR @@ fun base_vdi ->
85+
Qt.VDI.with_new ~virtual_size:vdi_size ~backing_format rpc session_id sR
86+
@@ fun base_vdi ->
8587
prepare_vdi rpc session_id vdi_original ;
8688
let checksum_original = checksum rpc session_id vdi_original in
8789
prepare_vdi_base rpc session_id base_vdi ;
@@ -96,7 +98,7 @@ let check_vdi_delta rpc session_id ~vdi_size ~prepare_vdi ~prepare_vdi_base
9698
checksum_copy checksum_original
9799
)
98100

99-
let copy_vdi rpc session_id sr vdi =
101+
let copy_vdi rpc session_id sr vdi _ =
100102
Client.Client.VDI.copy ~rpc ~session_id ~vdi ~base_vdi:API.Ref.null
101103
~into_vdi:API.Ref.null ~sr
102104

@@ -117,14 +119,15 @@ let export_vdi_to_file ~rpc ~session_id ~exportformat ?base_vdi ~vdi () =
117119
|> ignore ;
118120
file
119121

120-
let create_new_vdi ~rpc ~session_id ~sR ~vdi =
122+
let create_new_vdi ~rpc ~session_id ~sR ~vdi ~backing_format =
121123
let virtual_size =
122124
Client.Client.VDI.get_virtual_size ~rpc ~session_id ~self:vdi
123125
in
126+
let sm_config = [("image-format", backing_format)] in
124127
let new_vdi =
125128
Client.Client.VDI.create ~rpc ~session_id ~name_label:""
126129
~name_description:"" ~sR ~virtual_size ~_type:`user ~sharable:false
127-
~read_only:false ~other_config:[] ~xenstore_data:[] ~sm_config:[] ~tags:[]
130+
~read_only:false ~other_config:[] ~xenstore_data:[] ~sm_config ~tags:[]
128131
in
129132
let new_vdi_uuid =
130133
Client.Client.VDI.get_uuid ~rpc ~session_id ~self:new_vdi
@@ -141,11 +144,13 @@ let import_file_into_vdi ~file ~vdi_uuid ~exportformat =
141144
]
142145
|> ignore
143146

144-
let export_import_vdi rpc session_id ~exportformat sR vdi =
147+
let export_import_vdi rpc session_id ~exportformat sR vdi backing_format =
145148
let file = export_vdi_to_file ~rpc ~session_id ~exportformat ~vdi () in
146149
Xapi_stdext_pervasives.Pervasiveext.finally
147150
(fun () ->
148-
let new_vdi_uuid, new_vdi = create_new_vdi ~rpc ~session_id ~sR ~vdi in
151+
let new_vdi_uuid, new_vdi =
152+
create_new_vdi ~rpc ~session_id ~sR ~vdi ~backing_format
153+
in
149154
import_file_into_vdi ~file ~vdi_uuid:new_vdi_uuid ~exportformat ;
150155
new_vdi
151156
)
@@ -177,79 +182,83 @@ let delta_export_import_vhd = export_delta_import_vdi ~exportformat:"vhd"
177182

178183
let delta_export_import_qcow = export_delta_import_vdi ~exportformat:"qcow2"
179184

180-
let data_integrity_tests vdi_op op_name =
185+
let data_integrity_tests vdi_op op_name backing_format =
181186
[
182187
( op_name ^ ": small empty VDI"
183188
, `Slow
184-
, check_vdi_unchanged ~vdi_size:Sizes.(4L ** mib) ~prepare_vdi:noop ~vdi_op
189+
, check_vdi_unchanged
190+
~vdi_size:Sizes.(4L ** mib)
191+
~prepare_vdi:noop ~vdi_op ~backing_format
185192
)
186193
; ( op_name ^ ": small random VDI"
187194
, `Slow
188195
, check_vdi_unchanged
189196
~vdi_size:Sizes.(4L ** mib)
190-
~prepare_vdi:write_random_data ~vdi_op
197+
~prepare_vdi:write_random_data ~vdi_op ~backing_format
191198
)
192199
; ( op_name ^ ": small full VDI"
193200
, `Slow
194-
, check_vdi_unchanged ~vdi_size:Sizes.(4L ** mib) ~prepare_vdi:fill ~vdi_op
201+
, check_vdi_unchanged
202+
~vdi_size:Sizes.(4L ** mib)
203+
~prepare_vdi:fill ~vdi_op ~backing_format
195204
)
196205
]
197206

198-
let delta_data_integrity_tests vdi_op op_name =
207+
let delta_data_integrity_tests vdi_op op_name backing_format =
199208
[
200209
( op_name ^ ": delta between empty & empty VDI"
201210
, `Slow
202-
, check_vdi_delta
211+
, check_vdi_delta ~backing_format
203212
~vdi_size:Sizes.(4L ** mib)
204213
~prepare_vdi:noop ~prepare_vdi_base:noop ~vdi_op
205214
)
206215
; ( op_name ^ ": delta between random & empty VDI"
207216
, `Slow
208-
, check_vdi_delta
217+
, check_vdi_delta ~backing_format
209218
~vdi_size:Sizes.(4L ** mib)
210219
~prepare_vdi:write_random_data ~prepare_vdi_base:noop ~vdi_op
211220
)
212221
; ( op_name ^ ": delta between random & random VDI"
213222
, `Slow
214-
, check_vdi_delta
223+
, check_vdi_delta ~backing_format
215224
~vdi_size:Sizes.(4L ** mib)
216225
~prepare_vdi:write_random_data ~prepare_vdi_base:write_random_data
217226
~vdi_op
218227
)
219228
; ( op_name ^ ": delta between full and empty VDI"
220229
, `Slow
221-
, check_vdi_delta
230+
, check_vdi_delta ~backing_format
222231
~vdi_size:Sizes.(4L ** mib)
223232
~prepare_vdi:fill ~prepare_vdi_base:noop ~vdi_op
224233
)
225234
; ( op_name ^ ": delta between full and random VDI"
226235
, `Slow
227-
, check_vdi_delta
236+
, check_vdi_delta ~backing_format
228237
~vdi_size:Sizes.(4L ** mib)
229238
~prepare_vdi:fill ~prepare_vdi_base:write_random_data ~vdi_op
230239
)
231240
; ( op_name ^ ": delta between full and full VDI"
232241
, `Slow
233-
, check_vdi_delta
242+
, check_vdi_delta ~backing_format
234243
~vdi_size:Sizes.(4L ** mib)
235244
~prepare_vdi:fill ~prepare_vdi_base:fill ~vdi_op
236245
)
237246
]
238247

239-
let large_data_integrity_tests vdi_op op_name =
248+
let large_data_integrity_tests vdi_op op_name backing_format =
240249
let b = Random.int64 16L in
241250
[
242251
( op_name ^ ": ~2GiB empty VDI"
243252
, `Slow
244253
, check_vdi_unchanged
245254
~vdi_size:Sizes.((2L ** gib) +* b)
246-
~prepare_vdi:noop ~vdi_op
255+
~prepare_vdi:noop ~vdi_op ~backing_format
247256
)
248257
; ( op_name ^ ": ~2GiB random VDI"
249258
, `Slow
250259
, check_vdi_unchanged
251260
~vdi_size:Sizes.((2L ** gib) +* b)
252-
~prepare_vdi:write_random_data ~vdi_op
261+
~prepare_vdi:write_random_data ~vdi_op ~backing_format
253262
)
254263
]
255264

@@ -266,30 +275,33 @@ let supported_gfs2_srs test_case =
266275
test_case |> conn |> sr (sr_with_vdi_create_destroy |> SR.has_type "gfs2")
267276

268277
let tests () =
269-
(data_integrity_tests copy_vdi "VDI.copy" |> supported_srs)
270-
@ (large_data_integrity_tests copy_vdi "VDI.copy" |> supported_srs)
278+
(data_integrity_tests copy_vdi "VDI.copy" "vhd" |> supported_srs)
279+
@ (large_data_integrity_tests copy_vdi "VDI.copy" "vhd" |> supported_srs)
271280
@ (data_integrity_tests export_import_raw "VDI export/import to/from raw file"
281+
"vhd"
272282
|> supported_srs
273283
)
274284
@ (data_integrity_tests export_import_vhd "VDI export/import to/from VHD file"
285+
"vhd"
275286
|> supported_srs
276287
)
277288
@ (delta_data_integrity_tests delta_export_import_vhd
278-
"VDI delta export/import to/from VHD file"
289+
"VDI delta export/import to/from VHD file" "vhd"
279290
|> supported_srs ~f:Qt_filter.SR.smapiv1
280291
)
281-
@ (data_integrity_tests export_import_tar "VDI export/import to/from TAR file"
292+
@ (data_integrity_tests export_import_tar
293+
"VDI export/import to/from TAR file" "vhd"
282294
|> supported_srs
283295
)
284296
@ (data_integrity_tests export_import_qcow
285-
"VDI export/import to/from QCOW file"
297+
"VDI export/import to/from QCOW file" "qcow2"
286298
|> supported_srs
287299
)
288300
@ (delta_data_integrity_tests delta_export_import_qcow
289-
"VDI delta export/import to/from QCOW file"
301+
"VDI delta export/import to/from QCOW file" "qcow2"
290302
|> supported_srs
291303
)
292304
@ (large_data_integrity_tests export_import_tar
293-
"VDI export/import to/from TAR file"
305+
"VDI export/import to/from TAR file" "vhd"
294306
|> supported_gfs2_srs
295307
)

ocaml/quicktest/quicktest_vm_snapshot.ml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@ let with_setup rpc session_id sr vm_template f =
55
print_endline (Printf.sprintf "Template has uuid: %s%!" uuid) ;
66
let vdi =
77
Client.Client.VDI.create ~rpc ~session_id ~name_label:"small"
8-
~name_description:__LOC__ ~sR:sr ~virtual_size:4194304L ~_type:`user
9-
~sharable:false ~read_only:false ~other_config:[] ~xenstore_data:[]
10-
~sm_config:[] ~tags:[]
8+
~name_description:__LOC__ ~sR:sr
9+
~virtual_size:Int64.(mul (mul 4L 1024L) 1024L)
10+
~_type:`user ~sharable:false ~read_only:false ~other_config:[]
11+
~xenstore_data:[] ~sm_config:[] ~tags:[]
1112
in
1213
let vdi2 =
1314
Client.Client.VDI.create ~rpc ~session_id ~name_label:"small2"
14-
~name_description:__LOC__ ~sR:sr ~virtual_size:4194304L ~_type:`user
15-
~sharable:false ~read_only:false ~other_config:[] ~xenstore_data:[]
16-
~sm_config:[] ~tags:[]
15+
~name_description:__LOC__ ~sR:sr
16+
~virtual_size:Int64.(mul (mul 4L 1024L) 1024L)
17+
~_type:`user ~sharable:false ~read_only:false ~other_config:[]
18+
~xenstore_data:[] ~sm_config:[] ~tags:[]
1719
in
1820
Qt.VM.with_new rpc session_id ~template:vm_template (fun vm ->
1921
print_endline (Printf.sprintf "Installed new VM") ;

0 commit comments

Comments
 (0)