• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/python
2
3import unittest, os
4import common
5from autotest_lib.client.common_lib import utils as common_utils
6from autotest_lib.client.common_lib.test_utils import mock
7from autotest_lib.server import rpm_kernel, utils, hosts
8from autotest_lib.server.hosts import bootloader
9
10
11class 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")
28        self.god.stub_function(self.kernel, "get_vmlinux_name")
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)
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')
48        host.bootloader.remove_kernel.expect_call('autotest')
49        host.bootloader.add_kernel.expect_call("vmlinuz", 'autotest',
50                                               args='', default=False)
51        host.bootloader.boot_once.expect_call('autotest')
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
111if __name__ == "__main__":
112    unittest.main()
113