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 |
9 class TestKernel(unittest.TestCase): | 97 class TestKernel(unittest.TestCase): |
10 def setUp(self): | 98 def setUp(self): |
11 self.god = mock.mock_god() | 99 self.god = mock.mock_god() |
12 | 100 |
13 logging.disable(logging.CRITICAL) | 101 logging.disable(logging.CRITICAL) |
14 | 102 |
15 self.god.stub_function(time, "time") | 103 self.god.stub_function(time, "time") |
16 self.god.stub_function(os, "mkdir") | 104 self.god.stub_function(os, "mkdir") |
17 self.god.stub_function(os, "chdir") | 105 self.god.stub_function(os, "chdir") |
18 self.god.stub_function(os, "symlink") | 106 self.god.stub_function(os, "symlink") |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 self.kernel.get_kernel_build_ver.expect_call().and_return('2.6.24') | 554 self.kernel.get_kernel_build_ver.expect_call().and_return('2.6.24') |
467 self.kernel.mkinitrd.expect_call('2.6.24', '/boot/vmlinuz-autotest', | 555 self.kernel.mkinitrd.expect_call('2.6.24', '/boot/vmlinuz-autotest', |
468 '/boot/System.map-autotest', '/boot/initrd-autotest') | 556 '/boot/System.map-autotest', '/boot/initrd-autotest') |
469 self.job.record.expect_call('GOOD', self.subdir, 'kernel.install') | 557 self.job.record.expect_call('GOOD', self.subdir, 'kernel.install') |
470 | 558 |
471 # run and check | 559 # run and check |
472 self.kernel.install() | 560 self.kernel.install() |
473 self.god.check_playback() | 561 self.god.check_playback() |
474 | 562 |
475 | 563 |
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 | |
517 def test_get_kernel_build_arch1(self): | 564 def test_get_kernel_build_arch1(self): |
518 self.construct_kernel() | 565 self.construct_kernel() |
519 | 566 |
520 # record | 567 # record |
521 utils.get_current_kernel_arch.expect_call().and_return("i386") | 568 utils.get_current_kernel_arch.expect_call().and_return("i386") |
522 | 569 |
523 # run and check | 570 # run and check |
524 self.assertEquals(self.kernel.get_kernel_build_arch(), "i386") | 571 self.assertEquals(self.kernel.get_kernel_build_arch(), "i386") |
525 self.god.check_playback() | 572 self.god.check_playback() |
526 | 573 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 # run and check | 613 # run and check |
567 self.assertEquals(self.kernel.get_kernel_build_ident(), | 614 self.assertEquals(self.kernel.get_kernel_build_ident(), |
568 "AwesomeRelease::1.0") | 615 "AwesomeRelease::1.0") |
569 self.god.check_playback() | 616 self.god.check_playback() |
570 | 617 |
571 | 618 |
572 def test_boot(self): | 619 def test_boot(self): |
573 self.construct_kernel() | 620 self.construct_kernel() |
574 self.god.stub_function(self.kernel, "get_kernel_build_ident") | 621 self.god.stub_function(self.kernel, "get_kernel_build_ident") |
575 self.god.stub_function(self.kernel, "install") | 622 self.god.stub_function(self.kernel, "install") |
576 self.god.stub_function(self.kernel, "add_to_bootloader") | 623 self.god.stub_function(self.kernel, "_boot_kernel") |
577 self.kernel.applied_patches = "applied_patches" | 624 self.kernel.applied_patches = "applied_patches" |
578 when = 1 | 625 self.kernel.installed_as = None |
579 args = '' | 626 args = '' |
580 self.kernel.installed_as = False | 627 expected_ident = 'ident' |
| 628 ident = True |
581 | 629 |
582 # record | 630 # 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]) | |
588 self.kernel.install.expect_call() | 631 self.kernel.install.expect_call() |
589 self.kernel.add_to_bootloader.expect_call(args=args, | 632 self.kernel.get_kernel_build_ident.expect_call( |
590 tag=False) | 633 ).and_return(expected_ident) |
591 self.job.start_reboot.expect_call() | 634 self.kernel._boot_kernel.expect_call( |
592 self.job.reboot.expect_call(tag=False) | 635 args, ident, expected_ident, |
| 636 self.subdir, self.kernel.applied_patches) |
593 | 637 |
594 # run and check | 638 # run and check |
595 self.kernel.boot() | 639 self.kernel.boot(args=args, ident=ident) |
596 self.god.check_playback() | 640 self.god.check_playback() |
597 | 641 |
598 | 642 |
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 | |
624 if __name__ == "__main__": | 643 if __name__ == "__main__": |
625 unittest.main() | 644 unittest.main() |
OLD | NEW |