From 326ababfd620ae5ea29bf486b9d68ba3d60cad30 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 9 Jul 2018 15:20:34 +0000 Subject: oeqa: Add selftest parallelisation support This allows oe-selftest to take a -j option which specifies how much test parallelisation to use. Currently this is "module" based with each module being split and run in a separate build directory. Further splitting could be done but this seems a good compromise between test setup and parallelism. You need python-testtools and python-subunit installed to use this but only when the -j option is specified. See notes posted to the openedmbedded-architecture list for more details about the design choices here. Some of this functionality may make more sense in the oeqa core ultimately. Signed-off-by: Richard Purdie --- meta/lib/oeqa/selftest/context.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'meta/lib/oeqa/selftest') diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py index 9e90d3c256..c937b8171c 100644 --- a/meta/lib/oeqa/selftest/context.py +++ b/meta/lib/oeqa/selftest/context.py @@ -25,14 +25,14 @@ class OESelftestTestContext(OETestContext): self.custommachine = None self.config_paths = config_paths - def runTests(self, machine=None, skips=[]): + def runTests(self, processes=None, machine=None, skips=[]): if machine: self.custommachine = machine if machine == 'random': self.custommachine = choice(self.machines) self.logger.info('Run tests with custom MACHINE set to: %s' % \ self.custommachine) - return super(OESelftestTestContext, self).runTests(skips) + return super(OESelftestTestContext, self).runTests(processes, skips) def listTests(self, display_type, machine=None): return super(OESelftestTestContext, self).listTests(display_type) @@ -68,6 +68,9 @@ class OESelftestTestContextExecutor(OETestContextExecutor): action="store_true", default=False, help='List all available tests.') + parser.add_argument('-j', '--num-processes', dest='processes', action='store', + type=int, help="number of processes to execute in parallel with") + parser.add_argument('--machine', required=False, choices=['random', 'all'], help='Run tests on different machines (random/all).') @@ -137,6 +140,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor): self.tc_kwargs['init']['config_paths']['bblayers_backup']) self.tc_kwargs['run']['skips'] = args.skips + self.tc_kwargs['run']['processes'] = args.processes def _pre_run(self): def _check_required_env_variables(vars): -- cgit 1.2.3-korg