diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2016-06-27 14:45:02 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-08-17 10:35:43 +0100 |
commit | daee7558a563fad5034cb7aeb7d67e7c1cbb17e8 (patch) | |
tree | aa9d95030cc270a7bb75c6e044687b9297c64535 /meta/lib/oeqa/buildperf/test_basic.py | |
parent | 6203a77a53fe44dd51f36c40268f26b68ab72d70 (diff) | |
download | poky-daee7558a563fad5034cb7aeb7d67e7c1cbb17e8.tar.gz |
oeqa.buildperf: rename module containing basic tests
(From OE-Core rev: 56e455cf4b42ff4db36debd342bcb03c5199ba52)
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/buildperf/test_basic.py')
-rw-r--r-- | meta/lib/oeqa/buildperf/test_basic.py | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/meta/lib/oeqa/buildperf/test_basic.py b/meta/lib/oeqa/buildperf/test_basic.py new file mode 100644 index 0000000000..ada5aba053 --- /dev/null +++ b/meta/lib/oeqa/buildperf/test_basic.py | |||
@@ -0,0 +1,133 @@ | |||
1 | # Copyright (c) 2016, Intel Corporation. | ||
2 | # | ||
3 | # This program is free software; you can redistribute it and/or modify it | ||
4 | # under the terms and conditions of the GNU General Public License, | ||
5 | # version 2, as published by the Free Software Foundation. | ||
6 | # | ||
7 | # This program is distributed in the hope it will be useful, but WITHOUT | ||
8 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
9 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
10 | # more details. | ||
11 | # | ||
12 | """Basic set of build performance tests""" | ||
13 | import os | ||
14 | import shutil | ||
15 | |||
16 | from . import BuildPerfTest, perf_test_case | ||
17 | from oeqa.utils.commands import get_bb_vars | ||
18 | |||
19 | |||
20 | @perf_test_case | ||
21 | class Test1P1(BuildPerfTest): | ||
22 | name = "test1" | ||
23 | build_target = 'core-image-sato' | ||
24 | description = "Measure wall clock of bitbake {} and size of tmp dir".format(build_target) | ||
25 | |||
26 | def _run(self): | ||
27 | self.log_cmd_output("bitbake {} -c fetchall".format(self.build_target)) | ||
28 | self.rm_tmp() | ||
29 | self.rm_sstate() | ||
30 | self.rm_cache() | ||
31 | self.sync() | ||
32 | self.measure_cmd_resources(['bitbake', self.build_target], 'build', | ||
33 | 'bitbake ' + self.build_target) | ||
34 | self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir') | ||
35 | self.save_buildstats() | ||
36 | |||
37 | |||
38 | @perf_test_case | ||
39 | class Test1P2(BuildPerfTest): | ||
40 | name = "test12" | ||
41 | build_target = 'virtual/kernel' | ||
42 | description = "Measure bitbake {}".format(build_target) | ||
43 | |||
44 | def _run(self): | ||
45 | self.log_cmd_output("bitbake {} -c cleansstate".format( | ||
46 | self.build_target)) | ||
47 | self.sync() | ||
48 | self.measure_cmd_resources(['bitbake', self.build_target], 'build', | ||
49 | 'bitbake ' + self.build_target) | ||
50 | |||
51 | |||
52 | @perf_test_case | ||
53 | class Test1P3(BuildPerfTest): | ||
54 | name = "test13" | ||
55 | build_target = 'core-image-sato' | ||
56 | description = "Build {} with rm_work enabled".format(build_target) | ||
57 | |||
58 | def _run(self): | ||
59 | postfile = os.path.join(self.out_dir, 'postfile.conf') | ||
60 | with open(postfile, 'w') as fobj: | ||
61 | fobj.write('INHERIT += "rm_work"\n') | ||
62 | try: | ||
63 | self.rm_tmp() | ||
64 | self.rm_sstate() | ||
65 | self.rm_cache() | ||
66 | self.sync() | ||
67 | cmd = ['bitbake', '-R', postfile, self.build_target] | ||
68 | self.measure_cmd_resources(cmd, 'build', | ||
69 | 'bitbake' + self.build_target) | ||
70 | self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir') | ||
71 | finally: | ||
72 | os.unlink(postfile) | ||
73 | self.save_buildstats() | ||
74 | |||
75 | |||
76 | @perf_test_case | ||
77 | class Test2(BuildPerfTest): | ||
78 | name = "test2" | ||
79 | build_target = 'core-image-sato' | ||
80 | description = "Measure bitbake {} -c rootfs with sstate".format(build_target) | ||
81 | |||
82 | def _run(self): | ||
83 | self.rm_tmp() | ||
84 | self.rm_cache() | ||
85 | self.sync() | ||
86 | cmd = ['bitbake', self.build_target, '-c', 'rootfs'] | ||
87 | self.measure_cmd_resources(cmd, 'do_rootfs', 'bitbake do_rootfs') | ||
88 | |||
89 | |||
90 | @perf_test_case | ||
91 | class Test3(BuildPerfTest): | ||
92 | name = "test3" | ||
93 | description = "Parsing time metrics (bitbake -p)" | ||
94 | |||
95 | def _run(self): | ||
96 | # Drop all caches and parse | ||
97 | self.rm_cache() | ||
98 | self.force_rm(os.path.join(self.bb_vars['TMPDIR'], 'cache')) | ||
99 | self.measure_cmd_resources(['bitbake', '-p'], 'parse_1', | ||
100 | 'bitbake -p (no caches)') | ||
101 | # Drop tmp/cache | ||
102 | self.force_rm(os.path.join(self.bb_vars['TMPDIR'], 'cache')) | ||
103 | self.measure_cmd_resources(['bitbake', '-p'], 'parse_2', | ||
104 | 'bitbake -p (no tmp/cache)') | ||
105 | # Parse with fully cached data | ||
106 | self.measure_cmd_resources(['bitbake', '-p'], 'parse_3', | ||
107 | 'bitbake -p (cached)') | ||
108 | |||
109 | |||
110 | @perf_test_case | ||
111 | class Test4(BuildPerfTest): | ||
112 | name = "test4" | ||
113 | build_target = 'core-image-sato' | ||
114 | description = "eSDK metrics" | ||
115 | |||
116 | def _run(self): | ||
117 | self.log_cmd_output("bitbake {} -c do_populate_sdk_ext".format( | ||
118 | self.build_target)) | ||
119 | self.bb_vars = get_bb_vars(None, self.build_target) | ||
120 | tmp_dir = self.bb_vars['TMPDIR'] | ||
121 | installer = os.path.join( | ||
122 | self.bb_vars['SDK_DEPLOY'], | ||
123 | self.bb_vars['TOOLCHAINEXT_OUTPUTNAME'] + '.sh') | ||
124 | # Measure installer size | ||
125 | self.measure_disk_usage(installer, 'installer_bin', 'eSDK installer') | ||
126 | # Measure deployment time and deployed size | ||
127 | deploy_dir = os.path.join(tmp_dir, 'esdk-deploy') | ||
128 | if os.path.exists(deploy_dir): | ||
129 | shutil.rmtree(deploy_dir) | ||
130 | self.sync() | ||
131 | self.measure_cmd_resources([installer, '-y', '-d', deploy_dir], | ||
132 | 'deploy', 'eSDK deploy') | ||
133 | self.measure_disk_usage(deploy_dir, 'deploy_dir', 'deploy dir') | ||