virt.virt_test_utils: run_autotest - 'tar' needs relative paths to strip the leading '/'
[autotest-zwu.git] / client / common_lib / boottool_unittest.py
blobf3e06e3ad5361c25413abaa5f60bebb17b80e736
1 #!/usr/bin/python
3 import unittest
4 import common
6 from autotest_lib.client.common_lib.test_utils import mock
7 from autotest_lib.client.common_lib import boottool
10 class test_boottool(unittest.TestCase):
11 def setUp(self):
12 self.god = mock.mock_god()
13 # creates a bootloader with _run_boottool mocked out
14 self.bt_mock = boottool.boottool()
15 self.god.stub_function(self.bt_mock, '_run_boottool')
18 def tearDown(self):
19 self.god.unstub_all()
22 def expect_run_boottool(self, args, result=''):
23 self.bt_mock._run_boottool.expect_call(*args).and_return(result)
26 def test_get_type(self):
27 # set up the recording
28 self.expect_run_boottool(('--bootloader-probe',), 'lilo\n')
29 # run the test
30 self.assertEquals(self.bt_mock.get_type(), 'lilo')
31 self.god.check_playback()
34 def test_get_arch(self):
35 # set up the recording
36 self.expect_run_boottool(('--arch-probe',), 'x86_64\n')
37 # run the test
38 self.assertEquals(self.bt_mock.get_architecture(), 'x86_64')
39 self.god.check_playback()
42 def test_get_default(self):
43 # set up the recording
44 self.expect_run_boottool(('--default',), '0\n')
45 # run the test
46 self.assertEquals(self.bt_mock.get_default(), 0)
47 self.god.check_playback()
50 def test_get_titles(self):
51 # set up the recording
52 self.expect_run_boottool(
53 ('--info=all',), '\nindex\t: 0\ntitle\t: title #1\n'
54 '\nindex\t: 1\ntitle\t: title #2\n')
55 # run the test
56 self.assertEquals(self.bt_mock.get_titles(),
57 ['title #1', 'title #2'])
58 self.god.check_playback()
61 def test_get_entry(self):
62 RESULT = (
63 'index\t: 5\n'
64 'args\t: ro single\n'
65 'boot\t: (hd0,0)\n'
66 'initrd\t: /boot/initrd.img-2.6.15-23-386\n'
67 'kernel\t: /boot/vmlinuz-2.6.15-23-386\n'
68 'root\t: UUID=07D7-0714\n'
69 'savedefault\t: \n'
70 'title\t: Distro, kernel 2.6.15-23-386\n'
72 # set up the recording
73 self.expect_run_boottool(('--info=5',), RESULT)
74 # run the test
75 info = self.bt_mock.get_entry(5)
76 self.god.check_playback()
77 expected_info = {'index': 5, 'args': 'ro single',
78 'boot': '(hd0,0)',
79 'initrd': '/boot/initrd.img-2.6.15-23-386',
80 'kernel': '/boot/vmlinuz-2.6.15-23-386',
81 'root': 'UUID=07D7-0714', 'savedefault': '',
82 'title': 'Distro, kernel 2.6.15-23-386'}
83 self.assertEquals(expected_info, info)
86 def test_get_entry_missing_result(self):
87 # set up the recording
88 self.expect_run_boottool(('--info=4',), '')
89 # run the test
90 info = self.bt_mock.get_entry(4)
91 self.god.check_playback()
92 self.assertEquals({}, info)
95 def test_get_entries(self):
96 RESULT = (
97 'index\t: 5\n'
98 'args\t: ro single\n'
99 'boot\t: (hd0,0)\n'
100 'initrd\t: /boot/initrd.img-2.6.15-23-386\n'
101 'kernel\t: /boot/vmlinuz-2.6.15-23-386\n'
102 'root\t: UUID=07D7-0714\n'
103 'savedefault\t: \n'
104 'title\t: Distro, kernel 2.6.15-23-386\n'
105 '\n'
106 'index\t: 7\n'
107 'args\t: ro single\n'
108 'boot\t: (hd0,0)\n'
109 'initrd\t: /boot/initrd.img-2.6.15-23-686\n'
110 'kernel\t: /boot/vmlinuz-2.6.15-23-686\n'
111 'root\t: UUID=07D7-0714\n'
112 'savedefault\t: \n'
113 'title\t: Distro, kernel 2.6.15-23-686\n'
115 # set up the recording
116 self.expect_run_boottool(('--info=all',), RESULT)
117 # run the test
118 info = self.bt_mock.get_entries()
119 self.god.check_playback()
120 expected_info = {
121 5: {'index': 5, 'args': 'ro single', 'boot': '(hd0,0)',
122 'initrd': '/boot/initrd.img-2.6.15-23-386',
123 'kernel': '/boot/vmlinuz-2.6.15-23-386',
124 'root': 'UUID=07D7-0714', 'savedefault': '',
125 'title': 'Distro, kernel 2.6.15-23-386'},
126 7: {'index': 7, 'args': 'ro single', 'boot': '(hd0,0)',
127 'initrd': '/boot/initrd.img-2.6.15-23-686',
128 'kernel': '/boot/vmlinuz-2.6.15-23-686',
129 'root': 'UUID=07D7-0714', 'savedefault': '',
130 'title': 'Distro, kernel 2.6.15-23-686'}}
131 self.assertEquals(expected_info, info)
134 def test_set_default(self):
135 # set up the recording
136 self.expect_run_boottool(('--set-default=41',))
137 # run the test
138 self.bt_mock.set_default(41)
139 self.god.check_playback()
142 def test_add_args(self):
143 # set up the recording
144 self.expect_run_boottool(
145 ('--update-kernel=10', '--args=some kernel args'))
146 # run the test
147 self.bt_mock.add_args(10, 'some kernel args')
148 self.god.check_playback()
151 def test_remove_args(self):
152 # set up the recording
153 self.expect_run_boottool(
154 ('--update-kernel=12', '--remove-args=some kernel args'))
155 # run the test
156 self.bt_mock.remove_args(12, 'some kernel args')
157 self.god.check_playback()
160 def setup_add_kernel(self, oldtitle, path, title, root=None, args=None,
161 initrd=None, default=False, position='end',
162 xen_hypervisor=None):
163 self.bt_mock.get_titles = self.god.create_mock_function('get_titles')
164 # set up the recording
165 self.bt_mock.get_titles.expect_call().and_return([oldtitle])
166 if oldtitle == title:
167 self.expect_run_boottool(('--remove-kernel=%s' % oldtitle,))
169 parameters = ['--add-kernel=%s' % path, '--title=%s' % title]
170 if root:
171 parameters.append('--root=%s' % root)
172 if args:
173 parameters.append('--args=%s' % args)
174 if initrd:
175 parameters.append('--initrd=%s' % initrd)
176 if default:
177 parameters.append('--make-default')
178 if position:
179 parameters.append('--position=%s' % position)
180 if self.bt_mock.get_xen_mode():
181 parameters.append('--xen')
182 if xen_hypervisor:
183 parameters.append('--xenhyper=%s' % xen_hypervisor)
184 self.expect_run_boottool(parameters)
187 def test_add_kernel_basic(self):
188 # set up the recording
189 self.setup_add_kernel(
190 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel')
191 # run the test
192 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
193 'mylabel')
194 self.god.check_playback()
197 def test_add_kernel_removes_old(self):
198 # set up the recording
199 self.setup_add_kernel(
200 'mylabel', '/unittest/kernels/vmlinuz', 'mylabel')
201 # run the test
202 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz', 'mylabel')
203 self.god.check_playback()
206 def test_add_kernel_adds_root(self):
207 # set up the recording
208 self.setup_add_kernel(
209 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
210 root='/unittest/root')
211 # run the test
212 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
213 'mylabel', root='/unittest/root')
214 self.god.check_playback()
217 def test_add_kernel_adds_args(self):
218 # set up the recording
219 self.setup_add_kernel(
220 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
221 args='my kernel args')
222 # run the test
223 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
224 'mylabel', args='my kernel args')
225 self.god.check_playback()
228 def test_add_kernel_args_remove_duplicates(self):
229 # set up the recording
230 self.setup_add_kernel(
231 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
232 args='param2 param1')
233 # run the test
234 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
235 'mylabel', args='param1 param2 param1')
236 self.god.check_playback()
239 def test_add_kernel_adds_initrd(self):
240 # set up the recording
241 self.setup_add_kernel(
242 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
243 initrd='/unittest/initrd')
244 # run the test
245 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
246 'mylabel', initrd='/unittest/initrd')
247 self.god.check_playback()
250 def test_add_kernel_enables_make_default(self):
251 # set up the recording
252 self.setup_add_kernel(
253 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
254 default=True)
255 # run the test
256 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
257 'mylabel', default=True)
258 self.god.check_playback()
261 def test_add_kernel_position(self):
262 # set up the recording
263 self.setup_add_kernel(
264 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
265 position=5)
266 # run the test
267 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
268 'mylabel', position=5)
269 self.god.check_playback()
272 def test_remove_kernel(self):
273 # set up the recording
274 self.expect_run_boottool(('--remove-kernel=14',))
275 # run the test
276 self.bt_mock.remove_kernel(14)
277 self.god.check_playback()
280 def test_boot_once(self):
281 # set up the recording
282 self.expect_run_boottool(('--boot-once', '--title=autotest'))
283 # run the test
284 self.bt_mock.boot_once('autotest')
285 self.god.check_playback()
288 def test_enable_xen(self):
289 self.bt_mock.enable_xen_mode()
290 self.assertTrue(self.bt_mock.get_xen_mode())
293 def test_disable_xen(self):
294 self.bt_mock.disable_xen_mode()
295 self.assertFalse(self.bt_mock.get_xen_mode())
298 def test_add_kernel_xen(self):
299 # set up the recording
300 self.bt_mock.enable_xen_mode()
301 self.setup_add_kernel(
302 'notmylabel', '/unittest/kernels/vmlinuz', 'mylabel',
303 xen_hypervisor='xen_image')
304 # run the test
305 self.bt_mock.add_kernel('/unittest/kernels/vmlinuz',
306 'mylabel', xen_hypervisor='xen_image')
307 self.god.check_playback()
310 if __name__ == '__main__':
311 unittest.main()