123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # Copyright (c) 2016, Intel Corporation.
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- """Basic set of build performance tests"""
- import os
- import shutil
- import oe.path
- from oeqa.buildperf import BuildPerfTestCase
- from oeqa.utils.commands import get_bb_var, get_bb_vars
- class Test1P1(BuildPerfTestCase):
- build_target = 'core-image-sato'
- def test1(self):
- """Build core-image-sato"""
- self.rm_tmp()
- self.rm_sstate()
- self.rm_cache()
- self.sync()
- self.measure_cmd_resources(['bitbake', self.build_target], 'build',
- 'bitbake ' + self.build_target, save_bs=True)
- self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir')
- self.measure_disk_usage(get_bb_var("IMAGE_ROOTFS", self.build_target), 'rootfs', 'rootfs', True)
- class Test1P2(BuildPerfTestCase):
- build_target = 'virtual/kernel'
- def test12(self):
- """Build virtual/kernel"""
- # Build and cleans state in order to get all dependencies pre-built
- self.run_cmd(['bitbake', self.build_target])
- self.run_cmd(['bitbake', self.build_target, '-c', 'cleansstate'])
- self.sync()
- self.measure_cmd_resources(['bitbake', self.build_target], 'build',
- 'bitbake ' + self.build_target)
- class Test1P3(BuildPerfTestCase):
- build_target = 'core-image-sato'
- def test13(self):
- """Build core-image-sato with rm_work enabled"""
- postfile = os.path.join(self.tmp_dir, 'postfile.conf')
- with open(postfile, 'w') as fobj:
- fobj.write('INHERIT += "rm_work"\n')
- self.rm_tmp()
- self.rm_sstate()
- self.rm_cache()
- self.sync()
- cmd = ['bitbake', '-R', postfile, self.build_target]
- self.measure_cmd_resources(cmd, 'build',
- 'bitbake' + self.build_target,
- save_bs=True)
- self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir')
- class Test2(BuildPerfTestCase):
- build_target = 'core-image-sato'
- def test2(self):
- """Run core-image-sato do_rootfs with sstate"""
- # Build once in order to populate sstate cache
- self.run_cmd(['bitbake', self.build_target])
- self.rm_tmp()
- self.rm_cache()
- self.sync()
- cmd = ['bitbake', self.build_target, '-c', 'rootfs']
- self.measure_cmd_resources(cmd, 'do_rootfs', 'bitbake do_rootfs')
- class Test3(BuildPerfTestCase):
- def test3(self):
- """Bitbake parsing (bitbake -p)"""
- # Drop all caches and parse
- self.rm_cache()
- oe.path.remove(os.path.join(self.bb_vars['TMPDIR'], 'cache'), True)
- self.measure_cmd_resources(['bitbake', '-p'], 'parse_1',
- 'bitbake -p (no caches)')
- # Drop tmp/cache
- oe.path.remove(os.path.join(self.bb_vars['TMPDIR'], 'cache'), True)
- self.measure_cmd_resources(['bitbake', '-p'], 'parse_2',
- 'bitbake -p (no tmp/cache)')
- # Parse with fully cached data
- self.measure_cmd_resources(['bitbake', '-p'], 'parse_3',
- 'bitbake -p (cached)')
- class Test4(BuildPerfTestCase):
- build_target = 'core-image-sato'
- def test4(self):
- """eSDK metrics"""
- self.run_cmd(['bitbake', '-c', 'do_populate_sdk_ext',
- self.build_target])
- self.bb_vars = get_bb_vars(None, self.build_target)
- tmp_dir = self.bb_vars['TMPDIR']
- installer = os.path.join(
- self.bb_vars['SDK_DEPLOY'],
- self.bb_vars['TOOLCHAINEXT_OUTPUTNAME'] + '.sh')
- # Measure installer size
- self.measure_disk_usage(installer, 'installer_bin', 'eSDK installer',
- apparent_size=True)
- # Measure deployment time and deployed size
- deploy_dir = os.path.join(tmp_dir, 'esdk-deploy')
- if os.path.exists(deploy_dir):
- shutil.rmtree(deploy_dir)
- self.sync()
- self.measure_cmd_resources([installer, '-y', '-d', deploy_dir],
- 'deploy', 'eSDK deploy')
- #make sure bitbake is unloaded
- self.sync()
- self.measure_disk_usage(deploy_dir, 'deploy_dir', 'deploy dir',
- apparent_size=True)
|