aboutsummaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/buildperf/basic_tests.py
blob: a3c1e82bceab5d6d91fa12f594fed6712070dd15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 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

from . import BuildPerfTest, perf_test_case


@perf_test_case
class Test1P1(BuildPerfTest):
    name = "test1"
    build_target = 'core-image-sato'
    description = "Measure wall clock of bitbake {} and size of tmp dir".format(build_target)

    def _run(self):
        self.log_cmd_output("bitbake {} -c fetchall".format(self.build_target))
        self.rm_tmp()
        self.rm_sstate()
        self.rm_cache()
        self.sync()
        self.measure_cmd_resources(['bitbake', self.build_target], 'build',
                                   'bitbake ' + self.build_target)
        self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir')
        self.save_buildstats()


@perf_test_case
class Test1P2(BuildPerfTest):
    name = "test12"
    build_target = 'virtual/kernel'
    description = "Measure bitbake {}".format(build_target)

    def _run(self):
        self.log_cmd_output("bitbake {} -c cleansstate".format(
            self.build_target))
        self.sync()
        self.measure_cmd_resources(['bitbake', self.build_target], 'build',
                                   'bitbake ' + self.build_target)


@perf_test_case
class Test1P3(BuildPerfTest):
    name = "test13"
    build_target = 'core-image-sato'
    description = "Build {} with rm_work enabled".format(build_target)

    def _run(self):
        postfile = os.path.join(self.out_dir, 'postfile.conf')
        with open(postfile, 'w') as fobj:
            fobj.write('INHERIT += "rm_work"\n')
        try:
            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)
            self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir')
        finally:
            os.unlink(postfile)
        self.save_buildstats()