diff options
author | ToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp> | 2020-03-30 09:24:26 +0900 |
---|---|---|
committer | ToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp> | 2020-03-30 09:24:26 +0900 |
commit | 5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (patch) | |
tree | b4bb18dcd1487dbf1ea8127e5671b7bb2eded033 /external/poky/meta/lib/oeqa/buildperf/test_basic.py | |
parent | 706ad73eb02caf8532deaf5d38995bd258725cb8 (diff) |
agl-basesystem
Diffstat (limited to 'external/poky/meta/lib/oeqa/buildperf/test_basic.py')
-rw-r--r-- | external/poky/meta/lib/oeqa/buildperf/test_basic.py | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/external/poky/meta/lib/oeqa/buildperf/test_basic.py b/external/poky/meta/lib/oeqa/buildperf/test_basic.py new file mode 100644 index 00000000..6d6b01b0 --- /dev/null +++ b/external/poky/meta/lib/oeqa/buildperf/test_basic.py @@ -0,0 +1,127 @@ +# Copyright (c) 2016, Intel Corporation. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms and conditions of the GNU General Public License, +# version 2, as published by the Free Software Foundation. +# +# This program is distributed in the hope it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +"""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) |