OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 import unittest, os, time, re, glob, logging | 3 import unittest, os, time, re, glob, logging |
4 import common | 4 import common |
5 from autotest_lib.client.common_lib.test_utils import mock | 5 from autotest_lib.client.common_lib.test_utils import mock |
6 from autotest_lib.client.bin import kernel, job, utils, kernelexpand | 6 from autotest_lib.client.bin import kernel, job, utils, kernelexpand |
7 from autotest_lib.client.bin import kernel_config, boottool, os_dep | 7 from autotest_lib.client.bin import kernel_config, boottool, os_dep |
8 | 8 |
9 | |
10 class TestAddKernelToBootLoader(unittest.TestCase): | |
11 | |
12 def add_to_bootloader(self, base_args, args, bootloader_args, | |
13 bootloader_root, tag='image', image='image', | |
14 initrd='initrd'): | |
15 god = mock.mock_god() | |
16 bootloader = god.create_mock_class(boottool.boottool, "boottool") | |
17 | |
18 # record | |
19 bootloader.remove_kernel.expect_call(tag) | |
20 bootloader.add_kernel.expect_call(image, tag, initrd=initrd, | |
21 args=bootloader_args, | |
22 root=bootloader_root) | |
23 | |
24 # run and check | |
25 kernel._add_kernel_to_bootloader(bootloader, base_args, tag, args, | |
26 image, initrd) | |
27 god.check_playback() | |
28 | |
29 | |
30 def test_add_kernel_to_bootloader(self): | |
31 self.add_to_bootloader(base_args='baseargs', args='', | |
32 bootloader_args='baseargs', bootloader_root=None) | |
33 self.add_to_bootloader(base_args='arg1 root=/dev/oldroot arg2', | |
34 args='root=/dev/newroot arg3', | |
35 bootloader_args='arg1 arg2 arg3', | |
36 bootloader_root='/dev/newroot') | |
37 | |
38 | |
39 class TestBootableKernel(unittest.TestCase): | |
40 | |
41 def setUp(self): | |
42 self.god = mock.mock_god() | |
43 self.god.stub_function(time, "time") | |
44 self.god.stub_function(utils, "system") | |
45 self.god.stub_function(kernel, "_add_kernel_to_bootloader") | |
46 job_ = self.god.create_mock_class(job.job, "job") | |
47 self.kernel = kernel.BootableKernel(job_) | |
48 self.kernel.job.bootloader = self.god.create_mock_class( | |
49 boottool.boottool, "boottool") | |
50 | |
51 | |
52 def tearDown(self): | |
53 # note: time.time() can only be unstubbed via tearDown() | |
54 self.god.unstub_all() | |
55 | |
56 | |
57 def boot_kernel(self, ident_check): | |
58 notes = "applied_patches" | |
59 when = 1 | |
60 args = '' | |
61 base_args = 'base_args' | |
62 tag = 'ident' | |
63 subdir = 'subdir' | |
64 self.kernel.image = 'image' | |
65 self.kernel.initrd = 'initrd' | |
66 self.kernel.installed_as = tag | |
67 | |
68 # record | |
69 args_ = args | |
70 if ident_check: | |
71 time.time.expect_call().and_return(when) | |
72 args_ += " IDENT=%d" % when | |
73 status = ["job.end_reboot_and_verify", when, tag, subdir, notes] | |
74 else: | |
75 status = ["job.end_reboot", subdir, tag, notes] | |
76 self.kernel.job.next_step_prepend.expect_call(status) | |
77 self.kernel.job.config_get.expect_call( | |
78 'boot.default_args').and_return(base_args) | |
79 kernel._add_kernel_to_bootloader.expect_call( | |
80 self.kernel.job.bootloader, base_args, tag, | |
81 args_, self.kernel.image, self.kernel.initrd) | |
82 utils.system.expect_call('touch /fastboot') | |
83 self.kernel.job.start_reboot.expect_call() | |
84 self.kernel.job.reboot.expect_call(tag=tag) | |
85 | |
86 # run and check | |
87 self.kernel._boot_kernel(args=args, ident_check=ident_check, | |
88 expected_ident=tag, subdir=subdir, notes=notes) | |
89 self.god.check_playback() | |
90 | |
91 | |
92 def test_boot_kernel(self): | |
93 self.boot_kernel(ident_check=False) | |
94 self.boot_kernel(ident_check=True) | |
95 | |
96 | |
97 class TestKernel(unittest.TestCase): | 9 class TestKernel(unittest.TestCase): |
98 def setUp(self): | 10 def setUp(self): |
99 self.god = mock.mock_god() | 11 self.god = mock.mock_god() |
100 | 12 |
101 logging.disable(logging.CRITICAL) | 13 logging.disable(logging.CRITICAL) |
102 | 14 |
103 self.god.stub_function(time, "time") | 15 self.god.stub_function(time, "time") |
104 self.god.stub_function(os, "mkdir") | 16 self.god.stub_function(os, "mkdir") |
105 self.god.stub_function(os, "chdir") | 17 self.god.stub_function(os, "chdir") |
106 self.god.stub_function(os, "symlink") | 18 self.god.stub_function(os, "symlink") |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 self.kernel.get_kernel_build_ver.expect_call().and_return('2.6.24') | 466 self.kernel.get_kernel_build_ver.expect_call().and_return('2.6.24') |
555 self.kernel.mkinitrd.expect_call('2.6.24', '/boot/vmlinuz-autotest', | 467 self.kernel.mkinitrd.expect_call('2.6.24', '/boot/vmlinuz-autotest', |
556 '/boot/System.map-autotest', '/boot/initrd-autotest') | 468 '/boot/System.map-autotest', '/boot/initrd-autotest') |
557 self.job.record.expect_call('GOOD', self.subdir, 'kernel.install') | 469 self.job.record.expect_call('GOOD', self.subdir, 'kernel.install') |
558 | 470 |
559 # run and check | 471 # run and check |
560 self.kernel.install() | 472 self.kernel.install() |
561 self.god.check_playback() | 473 self.god.check_playback() |
562 | 474 |
563 | 475 |
| 476 def _setup_add_to_bootloader(self, tag='autotest', args='', image='image', |
| 477 initrd='initrd', base_args='baseargs', |
| 478 bootloader_args='baseargs', |
| 479 bootloader_root=None): |
| 480 self.construct_kernel() |
| 481 |
| 482 # setup |
| 483 self.kernel.image = image |
| 484 self.kernel.initrd = initrd |
| 485 |
| 486 # record |
| 487 self.job.config_get.expect_call( |
| 488 'boot.default_args').and_return(base_args) |
| 489 self.job.bootloader.remove_kernel.expect_call(tag) |
| 490 self.job.bootloader.add_kernel.expect_call( |
| 491 image, tag, initrd=initrd, args=bootloader_args, |
| 492 root=bootloader_root) |
| 493 |
| 494 |
| 495 def test_add_to_bootloader(self): |
| 496 # setup |
| 497 self._setup_add_to_bootloader() |
| 498 |
| 499 # run and check |
| 500 self.kernel.add_to_bootloader() |
| 501 self.god.check_playback() |
| 502 |
| 503 |
| 504 def test_add_to_bootloader_root_args(self): |
| 505 # setup |
| 506 args = 'root=/dev/newroot arg3' |
| 507 self._setup_add_to_bootloader(args=args, |
| 508 base_args='arg1 root=/dev/oldroot arg2', |
| 509 bootloader_args='arg1 arg2 arg3', |
| 510 bootloader_root='/dev/newroot') |
| 511 |
| 512 # run and check |
| 513 self.kernel.add_to_bootloader(args=args) |
| 514 self.god.check_playback() |
| 515 |
| 516 |
564 def test_get_kernel_build_arch1(self): | 517 def test_get_kernel_build_arch1(self): |
565 self.construct_kernel() | 518 self.construct_kernel() |
566 | 519 |
567 # record | 520 # record |
568 utils.get_current_kernel_arch.expect_call().and_return("i386") | 521 utils.get_current_kernel_arch.expect_call().and_return("i386") |
569 | 522 |
570 # run and check | 523 # run and check |
571 self.assertEquals(self.kernel.get_kernel_build_arch(), "i386") | 524 self.assertEquals(self.kernel.get_kernel_build_arch(), "i386") |
572 self.god.check_playback() | 525 self.god.check_playback() |
573 | 526 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 # run and check | 566 # run and check |
614 self.assertEquals(self.kernel.get_kernel_build_ident(), | 567 self.assertEquals(self.kernel.get_kernel_build_ident(), |
615 "AwesomeRelease::1.0") | 568 "AwesomeRelease::1.0") |
616 self.god.check_playback() | 569 self.god.check_playback() |
617 | 570 |
618 | 571 |
619 def test_boot(self): | 572 def test_boot(self): |
620 self.construct_kernel() | 573 self.construct_kernel() |
621 self.god.stub_function(self.kernel, "get_kernel_build_ident") | 574 self.god.stub_function(self.kernel, "get_kernel_build_ident") |
622 self.god.stub_function(self.kernel, "install") | 575 self.god.stub_function(self.kernel, "install") |
623 self.god.stub_function(self.kernel, "_boot_kernel") | 576 self.god.stub_function(self.kernel, "add_to_bootloader") |
624 self.kernel.applied_patches = "applied_patches" | 577 self.kernel.applied_patches = "applied_patches" |
625 self.kernel.installed_as = None | 578 when = 1 |
626 args = '' | 579 args = '' |
627 expected_ident = 'ident' | 580 self.kernel.installed_as = False |
628 ident = True | |
629 | 581 |
630 # record | 582 # record |
| 583 self.kernel.get_kernel_build_ident.expect_call().and_return("ident") |
| 584 time.time.expect_call().and_return(when) |
| 585 args += " IDENT=%d" % (when) |
| 586 self.job.next_step_prepend.expect_call(["job.end_reboot_and_verify", |
| 587 when, "ident", self.subdir, self.kernel.applied_patches]) |
631 self.kernel.install.expect_call() | 588 self.kernel.install.expect_call() |
632 self.kernel.get_kernel_build_ident.expect_call( | 589 self.kernel.add_to_bootloader.expect_call(args=args, |
633 ).and_return(expected_ident) | 590 tag=False) |
634 self.kernel._boot_kernel.expect_call( | 591 self.job.start_reboot.expect_call() |
635 args, ident, expected_ident, | 592 self.job.reboot.expect_call(tag=False) |
636 self.subdir, self.kernel.applied_patches) | |
637 | 593 |
638 # run and check | 594 # run and check |
639 self.kernel.boot(args=args, ident=ident) | 595 self.kernel.boot() |
640 self.god.check_playback() | 596 self.god.check_playback() |
641 | 597 |
642 | 598 |
| 599 def test_boot_without_ident(self): |
| 600 self.construct_kernel() |
| 601 self.god.stub_function(self.kernel, "get_kernel_build_ident") |
| 602 self.god.stub_function(self.kernel, "install") |
| 603 self.god.stub_function(self.kernel, "add_to_bootloader") |
| 604 self.kernel.applied_patches = "applied_patches" |
| 605 when = 1 |
| 606 args = '' |
| 607 self.kernel.installed_as = False |
| 608 |
| 609 # record |
| 610 self.kernel.get_kernel_build_ident.expect_call().and_return("ident") |
| 611 self.job.next_step_prepend.expect_call(["job.end_reboot", |
| 612 self.subdir, "ident", self.kernel.applied_patches]) |
| 613 self.kernel.install.expect_call() |
| 614 self.kernel.add_to_bootloader.expect_call(args=args, |
| 615 tag=False) |
| 616 self.job.start_reboot.expect_call() |
| 617 self.job.reboot.expect_call(tag=False) |
| 618 |
| 619 # run and check |
| 620 self.kernel.boot(ident=False) |
| 621 self.god.check_playback() |
| 622 |
| 623 |
643 if __name__ == "__main__": | 624 if __name__ == "__main__": |
644 unittest.main() | 625 unittest.main() |
OLD | NEW |