1=== Successful image creation (defaults) ===
2
3{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "size": 0}}}
4{"return": {}}
5{"execute": "job-dismiss", "arguments": {"id": "job0"}}
6{"return": {}}
7
8{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "node-name": "imgfile"}}
9{"return": {}}
10{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "imgfile", "size": 134217728}}}
11{"return": {}}
12{"execute": "job-dismiss", "arguments": {"id": "job0"}}
13{"return": {}}
14
15image: TEST_IMG
16file format: IMGFMT
17virtual size: 128 MiB (134217728 bytes)
18cluster_size: 8388608
19
20=== Successful image creation (explicit defaults) ===
21
22{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "size": 0}}}
23{"return": {}}
24{"execute": "job-dismiss", "arguments": {"id": "job0"}}
25{"return": {}}
26
27{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 8388608, "block-state-zero": true, "driver": "vhdx", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx"}, "log-size": 1048576, "size": 67108864, "subformat": "dynamic"}}}
28{"return": {}}
29{"execute": "job-dismiss", "arguments": {"id": "job0"}}
30{"return": {}}
31
32image: TEST_IMG
33file format: IMGFMT
34virtual size: 64 MiB (67108864 bytes)
35cluster_size: 8388608
36
37=== Successful image creation (with non-default options) ===
38
39{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "size": 0}}}
40{"return": {}}
41{"execute": "job-dismiss", "arguments": {"id": "job0"}}
42{"return": {}}
43
44{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 268435456, "block-state-zero": false, "driver": "vhdx", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx"}, "log-size": 8388608, "size": 33554432, "subformat": "fixed"}}}
45{"return": {}}
46{"execute": "job-dismiss", "arguments": {"id": "job0"}}
47{"return": {}}
48
49image: TEST_IMG
50file format: IMGFMT
51virtual size: 32 MiB (33554432 bytes)
52cluster_size: 268435456
53
54=== Invalid BlockdevRef ===
55
56{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "this doesn't exist", "size": 33554432}}}
57{"return": {}}
58Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist
59{"execute": "job-dismiss", "arguments": {"id": "job0"}}
60{"return": {}}
61
62=== Zero size ===
63
64{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 0}}}
65{"return": {}}
66{"execute": "job-dismiss", "arguments": {"id": "job0"}}
67{"return": {}}
68
69image: TEST_IMG
70file format: IMGFMT
71virtual size: 0 B (0 bytes)
72cluster_size: 8388608
73
74=== Maximum size ===
75
76{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 70368744177664}}}
77{"return": {}}
78{"execute": "job-dismiss", "arguments": {"id": "job0"}}
79{"return": {}}
80
81image: TEST_IMG
82file format: IMGFMT
83virtual size: 64 TiB (70368744177664 bytes)
84cluster_size: 67108864
85
86=== Invalid sizes ===
87
88{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 18446744073709551104}}}
89{"return": {}}
90Job failed: Image size too large; max of 64TB
91{"execute": "job-dismiss", "arguments": {"id": "job0"}}
92{"return": {}}
93
94{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 9223372036854775808}}}
95{"return": {}}
96Job failed: Image size too large; max of 64TB
97{"execute": "job-dismiss", "arguments": {"id": "job0"}}
98{"return": {}}
99
100{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 9223372036854775296}}}
101{"return": {}}
102Job failed: Image size too large; max of 64TB
103{"execute": "job-dismiss", "arguments": {"id": "job0"}}
104{"return": {}}
105
106{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 70368744177665}}}
107{"return": {}}
108Job failed: Image size too large; max of 64TB
109{"execute": "job-dismiss", "arguments": {"id": "job0"}}
110{"return": {}}
111
112=== Invalid block size ===
113
114{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 1234567, "driver": "vhdx", "file": "node0", "size": 67108864}}}
115{"return": {}}
116Job failed: Block size must be a multiple of 1 MB
117{"execute": "job-dismiss", "arguments": {"id": "job0"}}
118{"return": {}}
119
120{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 128, "driver": "vhdx", "file": "node0", "size": 67108864}}}
121{"return": {}}
122Job failed: Block size must be a multiple of 1 MB
123{"execute": "job-dismiss", "arguments": {"id": "job0"}}
124{"return": {}}
125
126{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 3145728, "driver": "vhdx", "file": "node0", "size": 67108864}}}
127{"return": {}}
128Job failed: Block size must be a power of two
129{"execute": "job-dismiss", "arguments": {"id": "job0"}}
130{"return": {}}
131
132{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 536870912, "driver": "vhdx", "file": "node0", "size": 67108864}}}
133{"return": {}}
134Job failed: Block size must not exceed 268435456
135{"execute": "job-dismiss", "arguments": {"id": "job0"}}
136{"return": {}}
137
138{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 0, "driver": "vhdx", "file": "node0", "size": 67108864}}}
139{"return": {}}
140Job failed: Block size must be a multiple of 1 MB
141{"execute": "job-dismiss", "arguments": {"id": "job0"}}
142{"return": {}}
143
144=== Invalid log size ===
145
146{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 1234567, "size": 67108864}}}
147{"return": {}}
148Job failed: Log size must be a multiple of 1 MB
149{"execute": "job-dismiss", "arguments": {"id": "job0"}}
150{"return": {}}
151
152{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 128, "size": 67108864}}}
153{"return": {}}
154Job failed: Log size must be a multiple of 1 MB
155{"execute": "job-dismiss", "arguments": {"id": "job0"}}
156{"return": {}}
157
158{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 4294967296, "size": 67108864}}}
159{"return": {}}
160Job failed: Log size must be smaller than 4 GB
161{"execute": "job-dismiss", "arguments": {"id": "job0"}}
162{"return": {}}
163
164{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 0, "size": 67108864}}}
165{"return": {}}
166Job failed: Log size must be a multiple of 1 MB
167{"execute": "job-dismiss", "arguments": {"id": "job0"}}
168{"return": {}}
169
170