diff options
Diffstat (limited to 'meta/lib/oeqa')
-rw-r--r-- | meta/lib/oeqa/core/utils/concurrencytest.py | 5 | ||||
-rw-r--r-- | meta/lib/oeqa/selftest/context.py | 35 | ||||
-rw-r--r-- | meta/lib/oeqa/utils/commands.py | 6 |
3 files changed, 28 insertions, 18 deletions
diff --git a/meta/lib/oeqa/core/utils/concurrencytest.py b/meta/lib/oeqa/core/utils/concurrencytest.py index 4f77589b00..5e20b0e126 100644 --- a/meta/lib/oeqa/core/utils/concurrencytest.py +++ b/meta/lib/oeqa/core/utils/concurrencytest.py | |||
@@ -193,11 +193,12 @@ class dummybuf(object): | |||
193 | # | 193 | # |
194 | class ConcurrentTestSuite(unittest.TestSuite): | 194 | class ConcurrentTestSuite(unittest.TestSuite): |
195 | 195 | ||
196 | def __init__(self, suite, processes, setupfunc, removefunc): | 196 | def __init__(self, suite, processes, setupfunc, removefunc, bb_vars): |
197 | super(ConcurrentTestSuite, self).__init__([suite]) | 197 | super(ConcurrentTestSuite, self).__init__([suite]) |
198 | self.processes = processes | 198 | self.processes = processes |
199 | self.setupfunc = setupfunc | 199 | self.setupfunc = setupfunc |
200 | self.removefunc = removefunc | 200 | self.removefunc = removefunc |
201 | self.bb_vars = bb_vars | ||
201 | 202 | ||
202 | def run(self, result): | 203 | def run(self, result): |
203 | testservers, totaltests = fork_for_tests(self.processes, self) | 204 | testservers, totaltests = fork_for_tests(self.processes, self) |
@@ -243,7 +244,7 @@ class ConcurrentTestSuite(unittest.TestSuite): | |||
243 | def fork_for_tests(concurrency_num, suite): | 244 | def fork_for_tests(concurrency_num, suite): |
244 | testservers = [] | 245 | testservers = [] |
245 | if 'BUILDDIR' in os.environ: | 246 | if 'BUILDDIR' in os.environ: |
246 | selftestdir = get_test_layer() | 247 | selftestdir = get_test_layer(suite.bb_vars['BBLAYERS']) |
247 | 248 | ||
248 | test_blocks = partition_tests(suite, concurrency_num) | 249 | test_blocks = partition_tests(suite, concurrency_num) |
249 | # Clear the tests from the original suite so it doesn't keep them alive | 250 | # Clear the tests from the original suite so it doesn't keep them alive |
diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py index 16486e7eb9..5a09aeedff 100644 --- a/meta/lib/oeqa/selftest/context.py +++ b/meta/lib/oeqa/selftest/context.py | |||
@@ -35,12 +35,13 @@ def get_oeselftest_metadata(args): | |||
35 | return result | 35 | return result |
36 | 36 | ||
37 | class NonConcurrentTestSuite(unittest.TestSuite): | 37 | class NonConcurrentTestSuite(unittest.TestSuite): |
38 | def __init__(self, suite, processes, setupfunc, removefunc): | 38 | def __init__(self, suite, processes, setupfunc, removefunc, bb_vars): |
39 | super().__init__([suite]) | 39 | super().__init__([suite]) |
40 | self.processes = processes | 40 | self.processes = processes |
41 | self.suite = suite | 41 | self.suite = suite |
42 | self.setupfunc = setupfunc | 42 | self.setupfunc = setupfunc |
43 | self.removefunc = removefunc | 43 | self.removefunc = removefunc |
44 | self.bb_vars = bb_vars | ||
44 | 45 | ||
45 | def run(self, result): | 46 | def run(self, result): |
46 | (builddir, newbuilddir) = self.setupfunc("-st", None, self.suite) | 47 | (builddir, newbuilddir) = self.setupfunc("-st", None, self.suite) |
@@ -79,16 +80,15 @@ class OESelftestTestContext(OETestContext): | |||
79 | else: | 80 | else: |
80 | self.removebuilddir = removebuilddir | 81 | self.removebuilddir = removebuilddir |
81 | 82 | ||
83 | def set_variables(self, vars): | ||
84 | self.bb_vars = vars | ||
85 | |||
82 | def setup_builddir(self, suffix, selftestdir, suite): | 86 | def setup_builddir(self, suffix, selftestdir, suite): |
83 | # Get SSTATE_DIR from the parent build dir | 87 | sstatedir = self.bb_vars['SSTATE_DIR'] |
84 | with bb.tinfoil.Tinfoil(tracking=True) as tinfoil: | ||
85 | tinfoil.prepare(quiet=2, config_only=True) | ||
86 | d = tinfoil.config_data | ||
87 | sstatedir = str(d.getVar('SSTATE_DIR')) | ||
88 | 88 | ||
89 | builddir = os.environ['BUILDDIR'] | 89 | builddir = os.environ['BUILDDIR'] |
90 | if not selftestdir: | 90 | if not selftestdir: |
91 | selftestdir = get_test_layer() | 91 | selftestdir = get_test_layer(self.bb_vars['BBLAYERS']) |
92 | if self.newbuilddir: | 92 | if self.newbuilddir: |
93 | newbuilddir = os.path.join(self.newbuilddir, 'build' + suffix) | 93 | newbuilddir = os.path.join(self.newbuilddir, 'build' + suffix) |
94 | else: | 94 | else: |
@@ -155,9 +155,9 @@ class OESelftestTestContext(OETestContext): | |||
155 | if processes: | 155 | if processes: |
156 | from oeqa.core.utils.concurrencytest import ConcurrentTestSuite | 156 | from oeqa.core.utils.concurrencytest import ConcurrentTestSuite |
157 | 157 | ||
158 | return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir) | 158 | return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir, self.bb_vars) |
159 | else: | 159 | else: |
160 | return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir) | 160 | return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir, self.bb_vars) |
161 | 161 | ||
162 | def runTests(self, processes=None, machine=None, skips=[]): | 162 | def runTests(self, processes=None, machine=None, skips=[]): |
163 | if machine: | 163 | if machine: |
@@ -270,7 +270,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor): | |||
270 | 270 | ||
271 | builddir = os.environ.get("BUILDDIR") | 271 | builddir = os.environ.get("BUILDDIR") |
272 | self.tc_kwargs['init']['config_paths'] = {} | 272 | self.tc_kwargs['init']['config_paths'] = {} |
273 | self.tc_kwargs['init']['config_paths']['testlayer_path'] = get_test_layer() | 273 | self.tc_kwargs['init']['config_paths']['testlayer_path'] = get_test_layer(bbvars["BBLAYERS"]) |
274 | self.tc_kwargs['init']['config_paths']['builddir'] = builddir | 274 | self.tc_kwargs['init']['config_paths']['builddir'] = builddir |
275 | self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf") | 275 | self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf") |
276 | self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf") | 276 | self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf") |
@@ -310,10 +310,10 @@ class OESelftestTestContextExecutor(OETestContextExecutor): | |||
310 | meta_selftestdir = os.path.join( | 310 | meta_selftestdir = os.path.join( |
311 | self.tc.td["BBLAYERS_FETCH_DIR"], 'meta-selftest') | 311 | self.tc.td["BBLAYERS_FETCH_DIR"], 'meta-selftest') |
312 | if os.path.isdir(meta_selftestdir): | 312 | if os.path.isdir(meta_selftestdir): |
313 | runCmd("bitbake-layers add-layer %s" %meta_selftestdir) | 313 | runCmd("bitbake-layers add-layer %s" % meta_selftestdir) |
314 | # reload data is needed because a meta-selftest layer was add | 314 | # reload data is needed because a meta-selftest layer was add |
315 | self.tc.td = get_bb_vars() | 315 | self.tc.td = get_bb_vars() |
316 | self.tc.config_paths['testlayer_path'] = get_test_layer() | 316 | self.tc.config_paths['testlayer_path'] = get_test_layer(self.tc.td["BBLAYERS"]) |
317 | else: | 317 | else: |
318 | self.tc.logger.error("could not locate meta-selftest in:\n%s" % meta_selftestdir) | 318 | self.tc.logger.error("could not locate meta-selftest in:\n%s" % meta_selftestdir) |
319 | raise OEQAPreRun | 319 | raise OEQAPreRun |
@@ -351,8 +351,15 @@ class OESelftestTestContextExecutor(OETestContextExecutor): | |||
351 | 351 | ||
352 | _add_layer_libs() | 352 | _add_layer_libs() |
353 | 353 | ||
354 | self.tc.logger.info("Running bitbake -e to test the configuration is valid/parsable") | 354 | self.tc.logger.info("Checking base configuration is valid/parsable") |
355 | runCmd("bitbake -e") | 355 | |
356 | with bb.tinfoil.Tinfoil(tracking=True) as tinfoil: | ||
357 | tinfoil.prepare(quiet=2, config_only=True) | ||
358 | d = tinfoil.config_data | ||
359 | vars = {} | ||
360 | vars['SSTATE_DIR'] = str(d.getVar('SSTATE_DIR')) | ||
361 | vars['BBLAYERS'] = str(d.getVar('BBLAYERS')) | ||
362 | self.tc.set_variables(vars) | ||
356 | 363 | ||
357 | def get_json_result_dir(self, args): | 364 | def get_json_result_dir(self, args): |
358 | json_result_dir = os.path.join(self.tc.td["LOG_DIR"], 'oeqa') | 365 | json_result_dir = os.path.join(self.tc.td["LOG_DIR"], 'oeqa') |
diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py index c1f533802e..575e380017 100644 --- a/meta/lib/oeqa/utils/commands.py +++ b/meta/lib/oeqa/utils/commands.py | |||
@@ -285,8 +285,10 @@ def get_bb_vars(variables=None, target=None, postconfig=None): | |||
285 | def get_bb_var(var, target=None, postconfig=None): | 285 | def get_bb_var(var, target=None, postconfig=None): |
286 | return get_bb_vars([var], target, postconfig)[var] | 286 | return get_bb_vars([var], target, postconfig)[var] |
287 | 287 | ||
288 | def get_test_layer(): | 288 | def get_test_layer(bblayers=None): |
289 | layers = get_bb_var("BBLAYERS").split() | 289 | if bblayers is None: |
290 | bblayers = get_bb_var("BBLAYERS") | ||
291 | layers = bblayers.split() | ||
290 | testlayer = None | 292 | testlayer = None |
291 | for l in layers: | 293 | for l in layers: |
292 | if '~' in l: | 294 | if '~' in l: |