jadmanski | 68ef26e | 2008-08-18 21:01:35 +0000 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | |
| 3 | import unittest, os |
| 4 | import common |
| 5 | from autotest_lib.client.common_lib import utils as common_utils |
| 6 | from autotest_lib.client.common_lib.test_utils import mock |
| 7 | from autotest_lib.server import rpm_kernel, utils, hosts |
| 8 | from autotest_lib.server.hosts import bootloader |
| 9 | |
| 10 | |
| 11 | class TestRpmKernel(unittest.TestCase): |
| 12 | def setUp(self): |
| 13 | self.god = mock.mock_god() |
| 14 | self.kernel = rpm_kernel.RPMKernel() |
| 15 | self.god.stub_function(utils, "run") |
| 16 | self.kernel.source_material = "source.rpm" |
| 17 | |
| 18 | |
| 19 | def tearDown(self): |
| 20 | self.god.unstub_all() |
| 21 | |
| 22 | |
| 23 | def test_install(self): |
| 24 | host = self.god.create_mock_class(hosts.RemoteHost, "host") |
| 25 | host.bootloader = self.god.create_mock_class(bootloader.Bootloader, |
| 26 | "bootloader") |
| 27 | self.god.stub_function(self.kernel, "get_image_name") |
jadmanski | 5664cff | 2008-12-03 18:00:03 +0000 | [diff] [blame] | 28 | self.god.stub_function(self.kernel, "get_vmlinux_name") |
jadmanski | 68ef26e | 2008-08-18 21:01:35 +0000 | [diff] [blame] | 29 | rpm = self.kernel.source_material |
| 30 | rpm_package = "package.rpm" |
| 31 | |
| 32 | # record |
| 33 | remote_tmpdir = 'remote_tmp_dir' |
| 34 | host.get_tmp_dir.expect_call().and_return(remote_tmpdir) |
| 35 | remote_rpm = os.path.join(remote_tmpdir, os.path.basename(rpm)) |
| 36 | result = common_utils.CmdResult() |
| 37 | result.exit_status = 0 |
| 38 | result.stdout = rpm_package |
| 39 | utils.run.expect_call('/usr/bin/rpm -q -p %s' % rpm).and_return(result) |
| 40 | self.kernel.get_image_name.expect_call().and_return("vmlinuz") |
| 41 | host.send_file.expect_call(rpm, remote_rpm) |
| 42 | host.run.expect_call('rpm -e ' + rpm_package, ignore_status = True) |
| 43 | host.run.expect_call('rpm --force -i ' + remote_rpm) |
jadmanski | 5664cff | 2008-12-03 18:00:03 +0000 | [diff] [blame] | 44 | self.kernel.get_vmlinux_name.expect_call().and_return("/boot/vmlinux") |
| 45 | host.run.expect_call('cd /;rpm2cpio %s | cpio -imuv ./boot/vmlinux' % |
| 46 | remote_rpm) |
| 47 | host.run.expect_call('ls /boot/vmlinux') |
mbligh | 1a639fb | 2008-09-10 19:59:14 +0000 | [diff] [blame] | 48 | host.bootloader.remove_kernel.expect_call('autotest') |
| 49 | host.bootloader.add_kernel.expect_call("vmlinuz", 'autotest', |
jadmanski | 68ef26e | 2008-08-18 21:01:35 +0000 | [diff] [blame] | 50 | args='', default=False) |
mbligh | 1a639fb | 2008-09-10 19:59:14 +0000 | [diff] [blame] | 51 | host.bootloader.boot_once.expect_call('autotest') |
jadmanski | 68ef26e | 2008-08-18 21:01:35 +0000 | [diff] [blame] | 52 | |
| 53 | # run and test |
| 54 | self.kernel.install(host) |
| 55 | self.god.check_playback() |
| 56 | |
| 57 | |
| 58 | def test_get_version(self): |
| 59 | # record |
| 60 | result = common_utils.CmdResult() |
| 61 | result.exit_status = 0 |
| 62 | result.stdout = "image" |
| 63 | |
| 64 | cmd = ('rpm -qpi %s | grep Version | awk \'{print($3);}\'' % |
| 65 | (utils.sh_escape("source.rpm"))) |
| 66 | utils.run.expect_call(cmd).and_return(result) |
| 67 | |
| 68 | # run and test |
| 69 | self.assertEquals(self.kernel.get_version(), result.stdout) |
| 70 | self.god.check_playback() |
| 71 | |
| 72 | |
| 73 | def test_get_image_name(self): |
| 74 | # record |
| 75 | result = common_utils.CmdResult() |
| 76 | result.exit_status = 0 |
| 77 | result.stdout = "image" |
| 78 | utils.run.expect_call('rpm -q -l -p source.rpm | grep /boot/vmlinuz' |
| 79 | ).and_return(result) |
| 80 | |
| 81 | # run and test |
| 82 | self.assertEquals(self.kernel.get_image_name(), result.stdout) |
| 83 | self.god.check_playback() |
| 84 | |
| 85 | |
| 86 | def test_get_vmlinux_name(self): |
| 87 | # record |
| 88 | result = common_utils.CmdResult() |
| 89 | result.exit_status = 0 |
| 90 | result.stdout = "vmlinuz" |
| 91 | utils.run.expect_call('rpm -q -l -p source.rpm | grep /boot/vmlinux' |
| 92 | ).and_return(result) |
| 93 | |
| 94 | # run and test |
| 95 | self.assertEquals(self.kernel.get_vmlinux_name(), result.stdout) |
| 96 | self.god.check_playback() |
| 97 | |
| 98 | |
| 99 | def test_get_initrd_name(self): |
| 100 | # record |
| 101 | result = common_utils.CmdResult() |
| 102 | result.exit_status = 0 |
| 103 | utils.run.expect_call('rpm -q -l -p %s | grep /boot/initrd' |
| 104 | % "source.rpm", ignore_status=True).and_return(result) |
| 105 | |
| 106 | # run and test |
| 107 | self.kernel.get_initrd_name() |
| 108 | self.god.check_playback() |
| 109 | |
| 110 | |
| 111 | if __name__ == "__main__": |
| 112 | unittest.main() |