]>
Commit | Line | Data |
---|---|---|
7c477526 | 1 | #!/usr/bin/env python3 |
9dd003a9 | 2 | # group: rw quick |
cb73747e HR |
3 | # |
4 | # Test VPC and file image creation | |
5 | # | |
6 | # Copyright (C) 2019 Red Hat, Inc. | |
7 | # | |
8 | # This program is free software; you can redistribute it and/or modify | |
9 | # it under the terms of the GNU General Public License as published by | |
10 | # the Free Software Foundation; either version 2 of the License, or | |
11 | # (at your option) any later version. | |
12 | # | |
13 | # This program is distributed in the hope that it will be useful, | |
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | # GNU General Public License for more details. | |
17 | # | |
18 | # You should have received a copy of the GNU General Public License | |
19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 | # | |
21 | ||
22 | import iotests | |
23 | from iotests import imgfmt | |
24 | ||
25 | ||
cb73747e HR |
26 | # Successful image creation (defaults) |
27 | def implicit_defaults(vm, file_path): | |
28 | iotests.log("=== Successful image creation (defaults) ===") | |
29 | iotests.log("") | |
30 | ||
31 | # 8 heads, 964 cyls/head, 17 secs/cyl | |
32 | # (Close to 64 MB) | |
33 | size = 8 * 964 * 17 * 512 | |
34 | ||
de1ff674 KW |
35 | vm.blockdev_create({ 'driver': imgfmt, |
36 | 'file': 'protocol-node', | |
37 | 'size': size }) | |
cb73747e HR |
38 | |
39 | ||
40 | # Successful image creation (explicit defaults) | |
41 | def explicit_defaults(vm, file_path): | |
42 | iotests.log("=== Successful image creation (explicit defaults) ===") | |
43 | iotests.log("") | |
44 | ||
45 | # 16 heads, 964 cyls/head, 17 secs/cyl | |
46 | # (Close to 128 MB) | |
47 | size = 16 * 964 * 17 * 512 | |
48 | ||
de1ff674 KW |
49 | vm.blockdev_create({ 'driver': imgfmt, |
50 | 'file': 'protocol-node', | |
51 | 'size': size, | |
52 | 'subformat': 'dynamic', | |
53 | 'force-size': False }) | |
cb73747e HR |
54 | |
55 | ||
56 | # Successful image creation (non-default options) | |
57 | def non_defaults(vm, file_path): | |
58 | iotests.log("=== Successful image creation (non-default options) ===") | |
59 | iotests.log("") | |
60 | ||
61 | # Not representable in CHS (fine with force-size=True) | |
62 | size = 1048576 | |
63 | ||
de1ff674 KW |
64 | vm.blockdev_create({ 'driver': imgfmt, |
65 | 'file': 'protocol-node', | |
66 | 'size': size, | |
67 | 'subformat': 'fixed', | |
68 | 'force-size': True }) | |
cb73747e HR |
69 | |
70 | ||
71 | # Size not representable in CHS with force-size=False | |
72 | def non_chs_size_without_force(vm, file_path): | |
73 | iotests.log("=== Size not representable in CHS ===") | |
74 | iotests.log("") | |
75 | ||
76 | # Not representable in CHS (will not work with force-size=False) | |
77 | size = 1048576 | |
78 | ||
de1ff674 KW |
79 | vm.blockdev_create({ 'driver': imgfmt, |
80 | 'file': 'protocol-node', | |
81 | 'size': size, | |
82 | 'force-size': False }) | |
cb73747e HR |
83 | |
84 | ||
85 | # Zero size | |
86 | def zero_size(vm, file_path): | |
87 | iotests.log("=== Zero size===") | |
88 | iotests.log("") | |
89 | ||
de1ff674 KW |
90 | vm.blockdev_create({ 'driver': imgfmt, |
91 | 'file': 'protocol-node', | |
92 | 'size': 0 }) | |
cb73747e HR |
93 | |
94 | ||
95 | # Maximum CHS size | |
96 | def maximum_chs_size(vm, file_path): | |
97 | iotests.log("=== Maximum CHS size===") | |
98 | iotests.log("") | |
99 | ||
de1ff674 KW |
100 | vm.blockdev_create({ 'driver': imgfmt, |
101 | 'file': 'protocol-node', | |
102 | 'size': 16 * 65535 * 255 * 512 }) | |
cb73747e HR |
103 | |
104 | ||
105 | # Actual maximum size | |
106 | def maximum_size(vm, file_path): | |
107 | iotests.log("=== Actual maximum size===") | |
108 | iotests.log("") | |
109 | ||
de1ff674 KW |
110 | vm.blockdev_create({ 'driver': imgfmt, |
111 | 'file': 'protocol-node', | |
112 | 'size': 0xff000000 * 512, | |
113 | 'force-size': True }) | |
cb73747e HR |
114 | |
115 | ||
116 | def main(): | |
117 | for test_func in [implicit_defaults, explicit_defaults, non_defaults, | |
118 | non_chs_size_without_force, zero_size, maximum_chs_size, | |
119 | maximum_size]: | |
120 | ||
121 | with iotests.FilePath('t.vpc') as file_path, \ | |
122 | iotests.VM() as vm: | |
123 | ||
124 | vm.launch() | |
125 | ||
126 | iotests.log('--- Creating empty file ---') | |
de1ff674 KW |
127 | vm.blockdev_create({ 'driver': 'file', |
128 | 'filename': file_path, | |
129 | 'size': 0 }) | |
cb73747e HR |
130 | |
131 | vm.qmp_log('blockdev-add', driver='file', filename=file_path, | |
132 | node_name='protocol-node', | |
133 | filters=[iotests.filter_qmp_testfiles]) | |
134 | iotests.log('') | |
135 | ||
136 | print_info = test_func(vm, file_path) | |
137 | iotests.log('') | |
138 | ||
139 | vm.shutdown() | |
140 | iotests.img_info_log(file_path) | |
141 | ||
142 | ||
143 | iotests.script_main(main, | |
144 | supported_fmts=['vpc'], | |
145 | supported_protocols=['file']) |