Best Python code snippet using autotest_python
kernel.py
Source:kernel.py  
...412        expected_ident = self.get_kernel_build_ident()413        if ident:414            when = int(time.time())415            args += " IDENT=%d" % (when)416            self.job.next_step_prepend(["job.end_reboot_and_verify", when,417                                        expected_ident, self.subdir,418                                        self.applied_patches])419        else:420            self.job.next_step_prepend(["job.end_reboot", self.subdir,421                                        expected_ident, self.applied_patches])422        # Check if the kernel has been installed, if not install423        # as the default tag and boot that.424        if not self.installed_as:425            self.install()426        # Boot the selected tag.427        self.add_to_bootloader(args=args, tag=self.installed_as)428        # Boot it.429        self.job.start_reboot()430        self.job.reboot(tag=self.installed_as)431    def get_kernel_build_ver(self):432        """Check Makefile and .config to return kernel version"""433        version = patchlevel = sublevel = extraversion = localversion = ''434        for line in open(self.build_dir + '/Makefile', 'r').readlines():435            if line.startswith('VERSION'):436                version = line[line.index('=') + 1:].strip()437            if line.startswith('PATCHLEVEL'):438                patchlevel = line[line.index('=') + 1:].strip()439            if line.startswith('SUBLEVEL'):440                sublevel = line[line.index('=') + 1:].strip()441            if line.startswith('EXTRAVERSION'):442                extraversion = line[line.index('=') + 1:].strip()443        for line in open(self.build_dir + '/.config', 'r').readlines():444            if line.startswith('CONFIG_LOCALVERSION='):445                localversion = line.rstrip().split('"')[1]446        return "%s.%s.%s%s%s" %(version, patchlevel, sublevel, extraversion, localversion)447    def set_build_target(self, build_target):448        if build_target:449            self.build_target = build_target450            print 'BUILD TARGET: %s' % self.build_target451    def set_cross_cc(self, target_arch=None, cross_compile=None,452                     build_target='bzImage'):453        """Set up to cross-compile.454                This is broken. We need to work out what the default455                compile produces, and if not, THEN set the cross456                compiler.457        """458        if self.target_arch:459            return460        # if someone has set build_target, don't clobber in set_cross_cc461        # run set_build_target before calling set_cross_cc462        if not self.build_target:463            self.set_build_target(build_target)464        # If no 'target_arch' given assume native compilation465        if target_arch is None:466            target_arch = utils.get_current_kernel_arch()467            if target_arch == 'ppc64':468                if self.build_target == 'bzImage':469                    self.build_target = 'vmlinux'470        if not cross_compile:471            cross_compile = self.job.config_get('kernel.cross_cc')472        if cross_compile:473            os.environ['CROSS_COMPILE'] = cross_compile474        else:475            if os.environ.has_key('CROSS_COMPILE'):476                del os.environ['CROSS_COMPILE']477        return                 # HACK. Crap out for now.478        # At this point I know what arch I *want* to build for479        # but have no way of working out what arch the default480        # compiler DOES build for.481        def install_package(package):482            raise NotImplementedError("I don't exist yet!")483        if target_arch == 'ppc64':484            install_package('ppc64-cross')485            cross_compile = os.path.join(self.autodir, 'sources/ppc64-cross/bin')486        elif target_arch == 'x86_64':487            install_package('x86_64-cross')488            cross_compile = os.path.join(self.autodir, 'sources/x86_64-cross/bin')489        os.environ['ARCH'] = self.target_arch = target_arch490        self.cross_compile = cross_compile491        if self.cross_compile:492            os.environ['CROSS_COMPILE'] = self.cross_compile493    def pickle_dump(self, filename):494        """dump a pickle of ourself out to the specified filename495        we can't pickle the backreference to job (it contains fd's),496        nor would we want to. Same for logfile (fd's).497        """498        temp = copy.copy(self)499        temp.job = None500        temp.logfile = None501        pickle.dump(temp, open(filename, 'w'))502class rpm_kernel(object):503    """ Class for installing rpm kernel package504    """505    def __init__(self, job, rpm_package, subdir):506        self.job = job507        self.rpm_package = rpm_package508        self.log_dir = os.path.join(subdir, 'debug')509        self.subdir = os.path.basename(subdir)510        if os.path.exists(self.log_dir):511            utils.system('rm -rf ' + self.log_dir)512        os.mkdir(self.log_dir)513        self.installed_as = None514    @log.record515    @tee_output_logdir_mark516    def install(self, tag='autotest', install_vmlinux=True):517        self.installed_as = tag518        self.image = None519        self.initrd = ''520        for rpm_pack in self.rpm_package:521            rpm_name = utils.system_output('rpm -qp ' + rpm_pack)522            # install523            utils.system('rpm -i --force ' + rpm_pack)524            # get file list525            files = utils.system_output('rpm -ql ' + rpm_name).splitlines()526            # search for vmlinuz527            for file in files:528                if file.startswith('/boot/vmlinuz'):529                    self.full_version = file[len('/boot/vmlinuz-'):]530                    self.image = file531                    self.rpm_flavour = rpm_name.split('-')[1]532                    # get version and release number533                    self.version, self.release = utils.system_output(534                            'rpm --queryformat="%{VERSION}\\n%{RELEASE}\\n" -q '535                            + rpm_name).splitlines()[0:2]536                    # prefer /boot/kernel-version before /boot/kernel537                    if self.full_version:538                        break539            # search for initrd540            for file in files:541                if file.startswith('/boot/initrd'):542                    self.initrd = file543                    # prefer /boot/initrd-version before /boot/initrd544                    if len(file) > len('/boot/initrd'):545                        break546        if self.image == None:547            errmsg = "specified rpm file(s) don't contain /boot/vmlinuz"548            raise error.TestError(errmsg)549        # install vmlinux550        if install_vmlinux:551            for rpm_pack in self.rpm_package:552                vmlinux = utils.system_output(553                        'rpm -q -l -p %s | grep /boot/vmlinux' % rpm_pack)554            utils.system('cd /; rpm2cpio %s | cpio -imuv .%s'555                         % (rpm_pack, vmlinux))556            if not os.path.exists(vmlinux):557                raise error.TestError('%s does not exist after installing %s'558                                      % (vmlinux, rpm_pack))559    def add_to_bootloader(self, tag='autotest', args=''):560        """ Add this kernel to bootloader561        """562        # remove existing entry if present563        self.job.bootloader.remove_kernel(tag)564        # pull the base argument set from the job config565        baseargs = self.job.config_get('boot.default_args')566        if baseargs:567            args = baseargs + ' ' + args568        # otherwise populate from /proc/cmdline569        # if not baseargs:570        #       baseargs = open('/proc/cmdline', 'r').readline().strip()571        # NOTE: This is unnecessary, because boottool does it.572        root = None573        roots = [x for x in args.split() if x.startswith('root=')]574        if roots:575            root = re.sub('^root=', '', roots[0])576        arglist = [x for x in args.split() if not x.startswith('root=')]577        args = ' '.join(arglist)578        # add the kernel entry579        self.job.bootloader.add_kernel(self.image, tag, self.initrd,580                                       args = args, root = root)581    def boot(self, args='', ident=True):582        """ install and boot this kernel583        """584        # Check if the kernel has been installed, if not install585        # as the default tag and boot that.586        if not self.installed_as:587            self.install()588        # If we can check the kernel identity do so.589        expected_ident = self.full_version590        if not expected_ident:591            expected_ident = '-'.join([self.version,592                                       self.rpm_flavour,593                                       self.release])594        if ident:595            when = int(time.time())596            args += " IDENT=%d" % (when)597            self.job.next_step_prepend(["job.end_reboot_and_verify",598                                        when, expected_ident, None, 'rpm'])599        else:600            self.job.next_step_prepend(["job.end_reboot", None,601                                        expected_ident, []])602        # Boot the selected tag.603        self.add_to_bootloader(args=args, tag=self.installed_as)604        # Boot it.605        self.job.start_reboot()606        self.job.reboot(tag=self.installed_as)607class rpm_kernel_suse(rpm_kernel):608    """ Class for installing openSUSE/SLE rpm kernel package609    """610    def install(self):611        # do not set the new kernel as the default one612        os.environ['PBL_AUTOTEST'] = '1'613        rpm_kernel.install(self, 'dummy')614        self.installed_as = self.job.bootloader.get_title_for_kernel(self.image)...kernel_unittest.py
Source:kernel_unittest.py  
1#!/usr/bin/python2import unittest, os, time, re, glob, logging3import common4from autotest_lib.client.common_lib.test_utils import mock5from autotest_lib.client.bin import kernel, job, utils, kernelexpand6from autotest_lib.client.bin import kernel_config, boottool, os_dep7class TestKernel(unittest.TestCase):8    def setUp(self):9        self.god = mock.mock_god()10        logging.disable(logging.CRITICAL)11        self.god.stub_function(time, "time")12        self.god.stub_function(os, "mkdir")13        self.god.stub_function(os, "chdir")14        self.god.stub_function(os, "symlink")15        self.god.stub_function(os, "remove")16        self.god.stub_function(os.path, "isdir")17        self.god.stub_function(os.path, "exists")18        self.god.stub_function(os.path, "isfile")19        self.god.stub_function(os_dep, "commands")20        self.god.stub_function(kernel, "open")21        self.god.stub_function(utils, "system")22        self.god.stub_function(utils, "system_output")23        self.god.stub_function(utils, "get_file")24        self.god.stub_function(utils, "get_current_kernel_arch")25        self.god.stub_function(utils, "cat_file_to_cmd")26        self.god.stub_function(utils, "force_copy")27        self.god.stub_function(utils, "extract_tarball_to_dir")28        self.god.stub_function(utils, "count_cpus")29        self.god.stub_function(utils, "get_os_vendor")30        self.god.stub_function(kernelexpand, "expand_classic")31        self.god.stub_function(kernel_config, "modules_needed")32        self.god.stub_function(glob, "glob")33        def dummy_mark(filename, msg):34            pass35        self.god.stub_with(kernel, '_mark', dummy_mark)36        self.job = self.god.create_mock_class(job.job, "job")37        self.job.bootloader = self.god.create_mock_class(boottool.boottool,38                                                         "boottool")39        class DummyLoggingManager(object):40            def tee_redirect_debug_dir(self, *args, **kwargs):41                pass42            def restore(self, *args, **kwargs):43                pass44        self.job.logging = DummyLoggingManager()45        self.job.autodir = "autodir"46        self.base_tree = "2.6.24"47        self.tmp_dir = "tmpdir"48        self.subdir = "subdir"49    def tearDown(self):50        self.god.unstub_all()51    def construct_kernel(self):52        self.kernel = kernel.kernel.__new__(kernel.kernel)53        self.god.stub_function(self.kernel, "extract")54        # setup55        self.src_dir    = os.path.join(self.tmp_dir, 'src')56        self.build_dir  = os.path.join(self.tmp_dir, "build_dir")57        self.config_dir = os.path.join(self.subdir, 'config')58        self.log_dir    = os.path.join(self.subdir, 'debug')59        self.results_dir = os.path.join(self.subdir, 'results')60        # record61        os.path.isdir.expect_call(self.src_dir).and_return(True)62        utils.system.expect_call('rm -rf ' + self.src_dir)63        os.path.isdir.expect_call(self.build_dir).and_return(True)64        utils.system.expect_call('rm -rf ' + self.build_dir)65        os.path.exists.expect_call(self.src_dir).and_return(False)66        os.mkdir.expect_call(self.src_dir)67        for path in [self.config_dir, self.log_dir, self.results_dir]:68            os.path.exists.expect_call(path).and_return(True)69            utils.system.expect_call('rm -rf ' + path)70            os.mkdir.expect_call(path)71        logpath = os.path.join(self.log_dir, 'build_log')72        self.logfile = self.god.create_mock_class(file, "file")73        kernel.open.expect_call(logpath, 'w+').and_return(self.logfile)74        utils.get_current_kernel_arch.expect_call().and_return('ia64')75        self.logfile.write.expect_call('BASE: %s\n' % self.base_tree)76        self.kernel.extract.expect_call(self.base_tree)77        # finish creation of kernel object and test (and unstub extract)78        self.kernel.__init__(self.job, self.base_tree, self.subdir,79                             self.tmp_dir, "build_dir")80        self.god.check_playback()81        self.god.unstub(self.kernel, "extract")82    def test_constructor(self):83        self.construct_kernel()84    def test_kernelexpand1(self):85        self.construct_kernel()86        ret_val = self.kernel.kernelexpand("/path/to/kernel")87        self.assertEquals(ret_val, ["/path/to/kernel"])88        self.god.check_playback()89    def test_kernel_expand2(self):90        self.construct_kernel()91        kernel = "kernel.tar.gz"92        # record93        self.job.config_get.expect_call('mirror.mirrors').and_return('mirror')94        kernelexpand.expand_classic.expect_call(kernel,95            'mirror').and_return('patches')96        # run97        self.assertEquals(self.kernel.kernelexpand(kernel), 'patches')98        self.god.check_playback()99    def test_kernel_expand3(self):100        self.construct_kernel()101        kernel = "kernel.tar.gz"102        # record103        self.job.config_get.expect_call('mirror.mirrors')104        self.job.config_get.expect_call(105            'mirror.ftp_kernel_org').and_return('mirror')106        korg = 'http://www.kernel.org/pub/linux/kernel'107        mirrors = [108                   [ korg + '/v2.6', 'mirror' + '/v2.6' ],109                   [ korg + '/people/akpm/patches/2.6', 'mirror' + '/akpm' ],110                   [ korg + '/people/mbligh', 'mirror' + '/mbligh' ],111                  ]112        kernelexpand.expand_classic.expect_call(kernel,113            mirrors).and_return('patches')114        # run115        self.assertEquals(self.kernel.kernelexpand(kernel), 'patches')116        self.god.check_playback()117    def test_extract1(self):118        self.construct_kernel()119        # setup120        self.god.stub_function(self.kernel, "get_kernel_tree")121        # record122        os.path.exists.expect_call(self.base_tree).and_return(True)123        self.kernel.get_kernel_tree.expect_call(self.base_tree)124        self.job.record.expect_call('GOOD', self.subdir, 'kernel.extract')125        # run126        self.kernel.extract(self.base_tree)127        self.god.check_playback()128        self.god.unstub(self.kernel, "get_kernel_tree")129    def test_extract2(self):130        self.construct_kernel()131        # setup132        self.god.stub_function(self.kernel, "kernelexpand")133        self.god.stub_function(self.kernel, "get_kernel_tree")134        self.god.stub_function(self.kernel, "patch")135        # record136        os.path.exists.expect_call(self.base_tree).and_return(False)137        components = ["component0", "component1"]138        self.kernel.kernelexpand.expect_call(self.base_tree).and_return(139            components)140        self.kernel.get_kernel_tree.expect_call(components[0])141        self.kernel.patch.expect_call(components[1])142        self.job.record.expect_call('GOOD', self.subdir, 'kernel.extract')143        # run144        self.kernel.extract(self.base_tree)145        self.god.check_playback()146        self.god.unstub(self.kernel, "kernelexpand")147        self.god.unstub(self.kernel, "get_kernel_tree")148        self.god.unstub(self.kernel, "patch")149    def test_patch1(self):150        self.construct_kernel()151        patches = ('patch1', 'patch2')152        self.god.stub_function(self.kernel, "apply_patches")153        self.god.stub_function(self.kernel, "get_patches")154        #record155        self.kernel.get_patches.expect_call(patches).and_return(patches)156        self.kernel.apply_patches.expect_call(patches)157        self.job.record.expect_call('GOOD', self.subdir, 'kernel.patch')158        #run159        self.kernel.patch(*patches)160        self.god.check_playback()161        self.god.unstub(self.kernel, "apply_patches")162        self.god.unstub(self.kernel, "get_patches")163    def test_patch2(self):164        self.construct_kernel()165        patches = []166        # record167        self.job.record.expect_call('GOOD', self.subdir, 'kernel.patch')168        # run169        self.kernel.patch(*patches)170        self.god.check_playback()171    def test_config(self):172        self.construct_kernel()173        # setup174        self.god.stub_function(self.kernel, "set_cross_cc")175        self.god.stub_class(kernel_config, "kernel_config")176        # record177        self.kernel.set_cross_cc.expect_call()178        kernel_config.kernel_config.expect_new(self.job, self.build_dir,179                                               self.config_dir, '', None,180                                               False, self.base_tree, None)181        self.job.record.expect_call('GOOD', self.subdir, 'kernel.config')182        # run183        self.kernel.config()184        self.god.check_playback()185        self.god.unstub(self.kernel, "set_cross_cc")186    def test_get_patches(self):187        self.construct_kernel()188        # setup189        patches = ['patch1', 'patch2', 'patch3']190        local_patches = []191        # record192        for patch in patches:193            dest = os.path.join(self.src_dir, os.path.basename(patch))194            utils.get_file.expect_call(patch, dest)195            utils.system_output.expect_call(196                'md5sum ' + dest).and_return('md5sum')197            local_patches.append((patch, dest, 'md5sum'))198        # run and check199        self.assertEquals(self.kernel.get_patches(patches), local_patches)200        self.god.check_playback()201    def test_apply_patches(self):202        self.construct_kernel()203        # setup204        patches = []205        patches.append(('patch1', 'patch1.gz', 'md5sum1'))206        patches.append(('patch2', 'patch2.bz2', 'md5sum2'))207        patches.append(('patch3', 'patch3', 'md5sum3'))208        applied_patches = []209        # record210        os.chdir.expect_call(self.build_dir)211        patch_id = "%s %s %s" % ('patch1', 'patch1', 'md5sum1')212        log = "PATCH: " + patch_id + "\n"213        utils.cat_file_to_cmd.expect_call('patch1.gz',214            'patch -p1 > /dev/null')215        self.logfile.write.expect_call(log)216        applied_patches.append(patch_id)217        patch_id = "%s %s %s" % ('patch2', 'patch2', 'md5sum2')218        log = "PATCH: " + patch_id + "\n"219        utils.cat_file_to_cmd.expect_call('patch2.bz2',220            'patch -p1 > /dev/null')221        self.logfile.write.expect_call(log)222        applied_patches.append(patch_id)223        utils.force_copy.expect_call('patch3',224            self.results_dir).and_return('local_patch3')225        self.job.relative_path.expect_call('local_patch3').and_return(226            'rel_local_patch3')227        patch_id = "%s %s %s" % ('patch3', 'rel_local_patch3', 'md5sum3')228        log = "PATCH: " + patch_id + "\n"229        utils.cat_file_to_cmd.expect_call('patch3',230            'patch -p1 > /dev/null')231        self.logfile.write.expect_call(log)232        applied_patches.append(patch_id)233        # run and test234        self.kernel.apply_patches(patches)235        self.assertEquals(self.kernel.applied_patches, applied_patches)236        self.god.check_playback()237    def test_get_kernel_tree1(self):238        self.construct_kernel()239        # record240        os.path.isdir.expect_call(self.base_tree).and_return(True)241        os.symlink.expect_call(self.base_tree, self.build_dir)242        # run and check243        self.kernel.get_kernel_tree(self.base_tree)244        self.god.check_playback()245    def test_get_kernel_tree2(self):246        self.construct_kernel()247        # record248        os.path.isdir.expect_call(self.base_tree).and_return(False)249        os.chdir.expect_call(os.path.dirname(self.src_dir))250        tarball = os.path.join(self.src_dir, os.path.basename(self.base_tree))251        utils.get_file.expect_call(self.base_tree, tarball)252        utils.extract_tarball_to_dir.expect_call(tarball,253                                                          self.build_dir)254        # run and check255        self.kernel.get_kernel_tree(self.base_tree)256        self.god.check_playback()257    def test_extraversion(self):258        self.construct_kernel()259        tag = "tag"260        # record261        os.chdir.expect_call(self.build_dir)262        extraversion_sub = r's/^EXTRAVERSION =\s*\(.*\)/EXTRAVERSION = '263        p = extraversion_sub + '\\1-%s/' % tag264        utils.system.expect_call('mv Makefile Makefile.old')265        utils.system.expect_call('sed "%s" < Makefile.old > Makefile' % p)266        # run and check267        self.kernel.extraversion(tag)268        self.god.check_playback()269    def test_build(self):270        self.construct_kernel()271        self.god.stub_function(self.kernel, "extraversion")272        self.god.stub_function(self.kernel, "set_cross_cc")273        self.god.stub_function(self.kernel, "get_kernel_build_ver")274        self.kernel.build_target = 'build_target'275        # record276        os_dep.commands.expect_call('gcc', 'make')277        logfile = os.path.join(self.log_dir, 'kernel_build')278        os.chdir.expect_call(self.build_dir)279        self.kernel.extraversion.expect_call('autotest')280        self.kernel.set_cross_cc.expect_call()281        utils.system.expect_call('make dep', ignore_status=True)282        utils.count_cpus.expect_call().and_return(4)283        threads = 2 * 4284        build_string = 'make -j %d %s %s' % (threads, '', 'build_target')285        utils.system.expect_call(build_string)286        kernel_config.modules_needed.expect_call('.config').and_return(True)287        utils.system.expect_call('make -j %d modules' % (threads))288        self.kernel.get_kernel_build_ver.expect_call().and_return('2.6.24')289        kernel_version = re.sub('-autotest', '', '2.6.24')290        self.logfile.write.expect_call('BUILD VERSION: %s\n' % kernel_version)291        utils.force_copy.expect_call(self.build_dir+'/System.map',292                                              self.results_dir)293        self.job.record.expect_call('GOOD', self.subdir, 'kernel.build')294        # run and check295        self.kernel.build()296        self.god.check_playback()297    def test_build_timed(self):298        self.construct_kernel()299        self.god.stub_function(self.kernel, "set_cross_cc")300        self.god.stub_function(self.kernel, "clean")301        # record302        os.chdir.expect_call(self.build_dir)303        self.kernel.set_cross_cc.expect_call()304        self.kernel.clean.expect_call(logged=False)305        build_string = "/usr/bin/time -o /dev/null make  -j 8 vmlinux"306        build_string += ' > /dev/null 2>&1'307        utils.system.expect_call(build_string)308        os.path.isfile.expect_call('vmlinux').and_return(True)309        # run and check310        self.kernel.build_timed(threads=8)311        self.god.check_playback()312    def test_clean(self):313        self.construct_kernel()314        # record315        os.chdir.expect_call(self.build_dir)316        utils.system.expect_call('make clean > /dev/null 2> /dev/null')317        self.job.record.expect_call('GOOD', self.subdir, 'kernel.clean')318        # run and check319        self.kernel.clean()320        self.god.check_playback()321    def test_mkinitrd(self):322        self.construct_kernel()323        # record324        utils.get_os_vendor.expect_call().and_return('Ubuntu')325        os.path.isfile.expect_call('initrd').and_return(True)326        os.remove.expect_call('initrd')327        self.job.config_get.expect_call(328            'kernel.mkinitrd_extra_args').and_return(None)329        args = ''330        os.path.isfile.expect_call('/usr/sbin/mkinitrd').and_return(True)331        cmd = '/usr/sbin/mkinitrd'332        utils.system.expect_call('%s %s -o initrd 2.6.24' % (cmd, args))333        self.job.record.expect_call('GOOD', self.subdir, 'kernel.mkinitrd')334        # run and check335        self.kernel.mkinitrd(version="2.6.24", image="image",336                             system_map="system_map", initrd="initrd")337        self.god.check_playback()338    def test_install(self):339        self.construct_kernel()340        tag = 'autotest'341        prefix = '/'342        self.kernel.build_image = None343        self.kernel.build_target = 'build_target'344        self.god.stub_function(self.kernel, "get_kernel_build_ver")345        self.god.stub_function(self.kernel, "mkinitrd")346        # record347        os.chdir.expect_call(self.build_dir)348        os.path.isdir.expect_call(prefix).and_return(False)349        os.mkdir.expect_call(prefix)350        boot_dir = os.path.join(prefix, 'boot')351        os.path.isdir.expect_call(boot_dir).and_return(False)352        os.mkdir.expect_call(boot_dir)353        glob.glob.expect_call(354            'arch/*/boot/' + 'build_target').and_return('')355        build_image = self.kernel.build_target356        utils.force_copy.expect_call('vmlinux',357            '/boot/vmlinux-autotest')358        utils.force_copy.expect_call('build_target',359            '/boot/vmlinuz-autotest')360        utils.force_copy.expect_call('System.map',361            '/boot/System.map-autotest')362        utils.force_copy.expect_call('.config',363            '/boot/config-autotest')364        kernel_config.modules_needed.expect_call('.config').and_return(True)365        utils.system.expect_call('make modules_install INSTALL_MOD_PATH=%s'366                                 % prefix)367        initrd = boot_dir + '/initrd-' + tag368        self.kernel.get_kernel_build_ver.expect_call().and_return('2.6.24')369        self.kernel.mkinitrd.expect_call('2.6.24', '/boot/vmlinuz-autotest',370            '/boot/System.map-autotest', '/boot/initrd-autotest')371        self.job.record.expect_call('GOOD', self.subdir, 'kernel.install')372        # run and check373        self.kernel.install()374        self.god.check_playback()375    def test_add_to_bootloader(self):376        self.construct_kernel()377        # setup378        tag = 'autotest'379        args = ''380        self.kernel.image = "image"381        self.kernel.initrd = "initrd"382        # record383        self.job.bootloader.remove_kernel.expect_call(tag)384        self.job.config_get.expect_call(385            'boot.default_args').and_return('baseargs')386        args = 'baseargs' + " " + args387        self.job.bootloader.add_kernel.expect_call('image', 'autotest',388            'initrd', args='baseargs', root=None)389        # run and check390        self.kernel.add_to_bootloader()391        self.god.check_playback()392    def test_get_kernel_build_arch1(self):393        self.construct_kernel()394        # record395        utils.get_current_kernel_arch.expect_call().and_return("i386")396        # run and check397        self.assertEquals(self.kernel.get_kernel_build_arch(), "i386")398        self.god.check_playback()399    def test_get_kernel_build_arch2(self):400        self.construct_kernel()401        # run and check402        self.assertEquals(self.kernel.get_kernel_build_arch('i586'), "i386")403        self.god.check_playback()404    def test_get_kernel_build_release(self):405        self.construct_kernel()406        mock_file = self.god.create_mock_class(file, "file")407        # record408        for f in [self.build_dir + "/include/linux/version.h",409                  self.build_dir + "/include/linux/utsrelease.h"]:410            os.path.exists.expect_call(f).and_return(True)411            kernel.open.expect_call(f, 'r').and_return(mock_file)412            mock_file.readlines.expect_call().and_return("Some lines")413            mock_file.close.expect_call()414        f = self.build_dir + "/include/linux/compile.h"415        os.path.exists.expect_call(f).and_return(False)416        # run and test417        self.kernel.get_kernel_build_release()418        self.god.check_playback()419    def test_get_kernel_build_ident(self):420        self.construct_kernel()421        self.god.stub_function(self.kernel, "get_kernel_build_release")422        # record423        self.kernel.get_kernel_build_release.expect_call().and_return(424            ("AwesomeRelease", "1.0"))425        # run and check426        self.assertEquals(self.kernel.get_kernel_build_ident(),427            "AwesomeRelease::1.0")428        self.god.check_playback()429    def test_boot(self):430        self.construct_kernel()431        self.god.stub_function(self.kernel, "get_kernel_build_ident")432        self.god.stub_function(self.kernel, "install")433        self.god.stub_function(self.kernel, "add_to_bootloader")434        self.kernel.applied_patches = "applied_patches"435        when = 1436        args = ''437        self.kernel.installed_as = False438        # record439        self.kernel.get_kernel_build_ident.expect_call().and_return("ident")440        time.time.expect_call().and_return(when)441        args += " IDENT=%d" % (when)442        self.job.next_step_prepend.expect_call(["job.end_reboot_and_verify",443            when, "ident", self.subdir, self.kernel.applied_patches])444        self.kernel.install.expect_call()445        self.kernel.add_to_bootloader.expect_call(args=args,446            tag=False)447        self.job.start_reboot.expect_call()448        self.job.reboot.expect_call(tag=False)449        # run and check450        self.kernel.boot()451        self.god.check_playback()452    def test_boot_without_ident(self):453        self.construct_kernel()454        self.god.stub_function(self.kernel, "get_kernel_build_ident")455        self.god.stub_function(self.kernel, "install")456        self.god.stub_function(self.kernel, "add_to_bootloader")457        self.kernel.applied_patches = "applied_patches"458        when = 1459        args = ''460        self.kernel.installed_as = False461        # record462        self.kernel.get_kernel_build_ident.expect_call().and_return("ident")463        self.job.next_step_prepend.expect_call(["job.end_reboot",464            self.subdir, "ident", self.kernel.applied_patches])465        self.kernel.install.expect_call()466        self.kernel.add_to_bootloader.expect_call(args=args,467            tag=False)468        self.job.start_reboot.expect_call()469        self.job.reboot.expect_call(tag=False)470        # run and check471        self.kernel.boot(ident=False)472        self.god.check_playback()473if __name__ == "__main__":...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
