* [PATCH v2 0/3] speedup testsuite execution execution
@ 2026-07-20 7:37 'Felix Moessbauer' via isar-users
2026-07-20 7:37 ` [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 'Felix Moessbauer' via isar-users
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 UTC (permalink / raw)
To: isar-users; +Cc: jan.kiszka, Felix Moessbauer
Changes since v1:
- add patch to run vm_start tests right after targets that built it
- remove duplicated cross test
Best regards,
Felix
Felix Moessbauer (3):
ci: run vm_start tests right after targets that built it
testsuite: speedup execution by limiting mc parsing to selected
targets
testsuite: remove duplicated cross test
testsuite/cibase.py | 20 +++++++++++---------
testsuite/cibuilder.py | 17 +++++++++++++++++
testsuite/citest.py | 25 ++++++++-----------------
testsuite/repro-build-test.py | 1 +
4 files changed, 37 insertions(+), 26 deletions(-)
--
2.53.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260720073703.3782697-1-felix.moessbauer%40siemens.com.
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 2026-07-20 7:37 [PATCH v2 0/3] speedup testsuite execution execution 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 ` 'Felix Moessbauer' via isar-users 2026-07-24 9:50 ` Zhihang Wei 2026-07-20 7:37 ` [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 'Felix Moessbauer' via isar-users 2026-07-20 7:37 ` [PATCH v2 3/3] testsuite: remove duplicated cross test 'Felix Moessbauer' via isar-users 2 siblings, 1 reply; 7+ messages in thread From: 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 UTC (permalink / raw) To: isar-users; +Cc: jan.kiszka, Felix Moessbauer As a preparation to reduce the parsing effort, we need to order the vm_start tests right after the target that built the corresponding image. This is needed to ensure we still have the cache data for the to-be-booted configuration. Technically, this was already incorrect before, as the vm_start tests are related to a specific target that has to be built before execution. If other targets are built in-between, the vm that is executed for the test is likely not what was intended to be tested. Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> --- testsuite/citest.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/testsuite/citest.py b/testsuite/citest.py index 1facc8c2..fb44036c 100644 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -75,6 +75,10 @@ class DevTest(CIBaseTest): self.init() self.perform_build_test(targets, image_install='example-raw') + def test_dev_run_arm_bookworm(self): + self.init() + self.vm_start('arm', 'bookworm', skip_modulecheck=True) + def test_dev_apps(self): targets = [ 'mc:qemuamd64-bookworm:isar-image-ci', @@ -84,6 +88,10 @@ class DevTest(CIBaseTest): self.init() self.perform_build_test(targets) + def test_dev_run_arm64_bookworm(self): + self.init() + self.vm_start('arm64', 'bookworm') + def test_dev_rebuild(self): self.init() layerdir_core = CIUtils.getVars('LAYERDIR_core') @@ -103,14 +111,6 @@ class DevTest(CIBaseTest): self.init() self.vm_start('amd64', 'bookworm', image='isar-image-ci') - def test_dev_run_arm64_bookworm(self): - self.init() - self.vm_start('arm64', 'bookworm') - - def test_dev_run_arm_bookworm(self): - self.init() - self.vm_start('arm', 'bookworm', skip_modulecheck=True) - class CompatTest(CIBaseTest): """ -- 2.53.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260720073703.3782697-2-felix.moessbauer%40siemens.com. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 2026-07-20 7:37 ` [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 'Felix Moessbauer' via isar-users @ 2026-07-24 9:50 ` Zhihang Wei 0 siblings, 0 replies; 7+ messages in thread From: Zhihang Wei @ 2026-07-24 9:50 UTC (permalink / raw) To: Felix Moessbauer, isar-users; +Cc: jan.kiszka On 7/20/26 09:37, 'Felix Moessbauer' via isar-users wrote: > As a preparation to reduce the parsing effort, we need to order the > vm_start tests right after the target that built the corresponding > image. This is needed to ensure we still have the cache data for the > to-be-booted configuration. I was testing this series with the 2 KFAIL patches but did not notice for this part. I put one KFAIL between a build and a corresponding vm_start, then the vm_start failed as the ccache data was lost. Let me reorganize the KFAILs and test again. Zhihang > Technically, this was already incorrect before, as the vm_start tests > are related to a specific target that has to be built before execution. > If other targets are built in-between, the vm that is executed for the > test is likely not what was intended to be tested. > -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/843c93d8-4a94-4940-840e-716b00fd9397%40ilbers.de. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 2026-07-20 7:37 [PATCH v2 0/3] speedup testsuite execution execution 'Felix Moessbauer' via isar-users 2026-07-20 7:37 ` [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 ` 'Felix Moessbauer' via isar-users 2026-07-24 14:56 ` Zhihang Wei 2026-07-20 7:37 ` [PATCH v2 3/3] testsuite: remove duplicated cross test 'Felix Moessbauer' via isar-users 2 siblings, 1 reply; 7+ messages in thread From: 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 UTC (permalink / raw) To: isar-users; +Cc: jan.kiszka, Felix Moessbauer The global isar mc.conf has over 70 multiconfig targets defined. This makes initial parsing super slow, leading to parse times of 5-10 minutes on testsuite tasks (per avocado task execution). To speed this up, We now set the BBMULTICONFIG bitbake variable to exactly the targets we want to test. This reduces the parsing time of tests to ~10s per test. When running with sstate cache, this massively speeds up repeated runs, as the parse time was the biggest single contributor. Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> --- testsuite/cibase.py | 20 +++++++++++--------- testsuite/cibuilder.py | 17 +++++++++++++++++ testsuite/repro-build-test.py | 1 + 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/testsuite/cibase.py b/testsuite/cibase.py index 4a6308d0..52748004 100755 --- a/testsuite/cibase.py +++ b/testsuite/cibase.py @@ -15,7 +15,7 @@ from avocado.utils import process class CIBaseTest(CIBuilder): def perform_build_test(self, targets, should_fail=False, **kwargs): - self.configure(**kwargs) + self.configure(targets=targets, **kwargs) if bool(int(self.params.get('depgraph', default=0))): self.generate_dependency_graph(targets, reconfigure=False, **kwargs) @@ -31,7 +31,7 @@ class CIBaseTest(CIBuilder): **kwargs): """Debug helper to better understand test task graphs.""" if reconfigure: - self.configure(**kwargs) + self.configure(targets=targets, **kwargs) self.log.info("Generating dependency graph...") @@ -41,7 +41,7 @@ class CIBaseTest(CIBuilder): self.move_in_build_dir('pn-buildlist', f"pn-buildlist-{self.name}") def perform_wic_partition_test(self, targets, wic_deploy_parts, **kwargs): - self.configure(wic_deploy_parts=wic_deploy_parts, **kwargs) + self.configure(targets=targets, wic_deploy_parts=wic_deploy_parts, **kwargs) self.bitbake(targets, **kwargs) wic_path = f"{self.build_dir}/tmp/deploy/images/*/*.wic.p1" @@ -57,6 +57,7 @@ class CIBaseTest(CIBuilder): gpg_priv_key = os.path.join(keys_dir, 'test_priv.key') self.configure( + targets=targets, gpg_pub_key=gpg_pub_key if signed else None, sstate_dir='', **kwargs, @@ -76,6 +77,7 @@ class CIBaseTest(CIBuilder): repro_type = 'signed' if signed else 'unsigned' self.move_in_build_dir('tmp', f"tmp_middle_repro_{repro_type}") self.configure( + targets=targets, gpg_pub_key=gpg_pub_key if signed else None, offline=True, sstate_dir='', @@ -89,7 +91,7 @@ class CIBaseTest(CIBuilder): if not signed: # Try to build with changed configuration with no cleanup - self.configure(**kwargs) + self.configure(targets=targets, **kwargs) self.bitbake(targets, **kwargs) finally: @@ -109,7 +111,7 @@ class CIBaseTest(CIBuilder): count += int(content[field]) return count - self.configure(ccache=True, sstate_dir='', **kwargs) + self.configure(targets=targets, ccache=True, sstate_dir='', **kwargs) # Field that stores direct ccache hits direct_cache_hit = 22 @@ -173,7 +175,7 @@ class CIBaseTest(CIBuilder): process.run(f"git --work-tree={isar_sstate} checkout HEAD -- .") self.init('../build-sstate', isar_dir=isar_sstate) - self.configure(sstate=True, sstate_dir='', **kwargs) + self.configure(targets=image_target, sstate=True, sstate_dir='', **kwargs) # Cleanup sstate and tmp before test self.delete_from_build_dir('sstate-cache') @@ -196,7 +198,7 @@ class CIBaseTest(CIBuilder): """ Generate signature data for target(s) and check for cacheability issues """ - self.configure(**kwargs) + self.configure(targets=targets, **kwargs) self.delete_from_build_dir('tmp_before_sstate') self.move_in_build_dir('tmp', 'tmp_before_sstate') self.bitbake(targets, sig_handler='none') @@ -246,7 +248,7 @@ class CIBaseTest(CIBuilder): return False return True - self.configure(sstate=True, sstate_dir='', **kwargs) + self.configure(targets=[image_target, package_target], sstate=True, sstate_dir='', **kwargs) deploy_dir = f"{self.build_dir}/tmp/deploy" @@ -380,7 +382,7 @@ class CIBaseTest(CIBuilder): sfiles[target][fname] = CIUtils.get_tar_content(fname) return sfiles - self.configure(**kwargs) + self.configure(targets=targets, **kwargs) tmp_layer_dir = self.create_tmp_layer() try: diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py index d42e8631..1d415084 100755 --- a/testsuite/cibuilder.py +++ b/testsuite/cibuilder.py @@ -104,8 +104,21 @@ class CIBuilder(Test): if not hasattr(self, 'build_dir'): self.error("Broken test implementation: need to call init().") + @staticmethod + def _extract_multiconfigs(targets): + if isinstance(targets, str): + targets = [targets] + mc_names = set() + for target in targets: + if target.startswith('mc:'): + parts = target.split(':') + if len(parts) >= 2: + mc_names.add(parts[1]) + return mc_names + def configure( self, + targets=None, compat_arch=True, cross=True, debsrc_cache=False, @@ -196,6 +209,10 @@ class CIBuilder(Test): # write ci_build.conf with open(self.build_dir + '/conf/ci_build.conf', 'w') as f: + if targets: + mc_names = self._extract_multiconfigs(targets) + if mc_names: + f.write('BBMULTICONFIG = "%s"\n\n' % ' '.join(sorted(mc_names))) if compat_arch: f.write( 'ISAR_ENABLE_COMPAT_ARCH:amd64 = "1"\n' diff --git a/testsuite/repro-build-test.py b/testsuite/repro-build-test.py index c06269f5..c1b51aff 100755 --- a/testsuite/repro-build-test.py +++ b/testsuite/repro-build-test.py @@ -50,6 +50,7 @@ class ReproBuild(CIBuilder): # Build self.log.info("Started Build " + image_name) self.configure( + targets=target, source_date_epoch=source_date_epoch, use_apt_snapshot=True ) self.bitbake(target) -- 2.53.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260720073703.3782697-3-felix.moessbauer%40siemens.com. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 2026-07-20 7:37 ` [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 'Felix Moessbauer' via isar-users @ 2026-07-24 14:56 ` Zhihang Wei 2026-07-24 15:27 ` 'MOESSBAUER, Felix' via isar-users 0 siblings, 1 reply; 7+ messages in thread From: Zhihang Wei @ 2026-07-24 14:56 UTC (permalink / raw) To: Felix Moessbauer, isar-users; +Cc: jan.kiszka On 7/20/26 09:37, 'Felix Moessbauer' via isar-users wrote: > The global isar mc.conf has over 70 multiconfig targets defined. This > makes initial parsing super slow, leading to parse times of 5-10 minutes > on testsuite tasks (per avocado task execution). To speed this up, We now > set the BBMULTICONFIG bitbake variable to exactly the targets we want to > test. This reduces the parsing time of tests to ~10s per test. > > When running with sstate cache, this massively speeds up repeated runs, > as the parse time was the biggest single contributor. > > Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> > --- > testsuite/cibase.py | 20 +++++++++++--------- > testsuite/cibuilder.py | 17 +++++++++++++++++ > testsuite/repro-build-test.py | 1 + > 3 files changed, 29 insertions(+), 9 deletions(-) > > diff --git a/testsuite/cibase.py b/testsuite/cibase.py > index 4a6308d0..52748004 100755 > --- a/testsuite/cibase.py > +++ b/testsuite/cibase.py > @@ -15,7 +15,7 @@ from avocado.utils import process > > class CIBaseTest(CIBuilder): > def perform_build_test(self, targets, should_fail=False, **kwargs): > - self.configure(**kwargs) > + self.configure(targets=targets, **kwargs) > > if bool(int(self.params.get('depgraph', default=0))): > self.generate_dependency_graph(targets, reconfigure=False, **kwargs) > @@ -31,7 +31,7 @@ class CIBaseTest(CIBuilder): > **kwargs): > """Debug helper to better understand test task graphs.""" > if reconfigure: > - self.configure(**kwargs) > + self.configure(targets=targets, **kwargs) > > self.log.info("Generating dependency graph...") > > @@ -41,7 +41,7 @@ class CIBaseTest(CIBuilder): > self.move_in_build_dir('pn-buildlist', f"pn-buildlist-{self.name}") > > def perform_wic_partition_test(self, targets, wic_deploy_parts, **kwargs): > - self.configure(wic_deploy_parts=wic_deploy_parts, **kwargs) > + self.configure(targets=targets, wic_deploy_parts=wic_deploy_parts, **kwargs) > self.bitbake(targets, **kwargs) > > wic_path = f"{self.build_dir}/tmp/deploy/images/*/*.wic.p1" > @@ -57,6 +57,7 @@ class CIBaseTest(CIBuilder): > gpg_priv_key = os.path.join(keys_dir, 'test_priv.key') > > self.configure( > + targets=targets, > gpg_pub_key=gpg_pub_key if signed else None, > sstate_dir='', > **kwargs, > @@ -76,6 +77,7 @@ class CIBaseTest(CIBuilder): > repro_type = 'signed' if signed else 'unsigned' > self.move_in_build_dir('tmp', f"tmp_middle_repro_{repro_type}") > self.configure( > + targets=targets, > gpg_pub_key=gpg_pub_key if signed else None, > offline=True, > sstate_dir='', > @@ -89,7 +91,7 @@ class CIBaseTest(CIBuilder): > > if not signed: > # Try to build with changed configuration with no cleanup > - self.configure(**kwargs) > + self.configure(targets=targets, **kwargs) > self.bitbake(targets, **kwargs) > > finally: > @@ -109,7 +111,7 @@ class CIBaseTest(CIBuilder): > count += int(content[field]) > return count > > - self.configure(ccache=True, sstate_dir='', **kwargs) > + self.configure(targets=targets, ccache=True, sstate_dir='', **kwargs) > > # Field that stores direct ccache hits > direct_cache_hit = 22 > @@ -173,7 +175,7 @@ class CIBaseTest(CIBuilder): > process.run(f"git --work-tree={isar_sstate} checkout HEAD -- .") > > self.init('../build-sstate', isar_dir=isar_sstate) > - self.configure(sstate=True, sstate_dir='', **kwargs) > + self.configure(targets=image_target, sstate=True, sstate_dir='', **kwargs) > > # Cleanup sstate and tmp before test > self.delete_from_build_dir('sstate-cache') > @@ -196,7 +198,7 @@ class CIBaseTest(CIBuilder): > """ > Generate signature data for target(s) and check for cacheability issues > """ > - self.configure(**kwargs) > + self.configure(targets=targets, **kwargs) > self.delete_from_build_dir('tmp_before_sstate') > self.move_in_build_dir('tmp', 'tmp_before_sstate') > self.bitbake(targets, sig_handler='none') > @@ -246,7 +248,7 @@ class CIBaseTest(CIBuilder): > return False > return True > > - self.configure(sstate=True, sstate_dir='', **kwargs) > + self.configure(targets=[image_target, package_target], sstate=True, sstate_dir='', **kwargs) > > deploy_dir = f"{self.build_dir}/tmp/deploy" > > @@ -380,7 +382,7 @@ class CIBaseTest(CIBuilder): > sfiles[target][fname] = CIUtils.get_tar_content(fname) > return sfiles > > - self.configure(**kwargs) > + self.configure(targets=targets, **kwargs) > > tmp_layer_dir = self.create_tmp_layer() > try: > diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py > index d42e8631..1d415084 100755 > --- a/testsuite/cibuilder.py > +++ b/testsuite/cibuilder.py > @@ -104,8 +104,21 @@ class CIBuilder(Test): > if not hasattr(self, 'build_dir'): > self.error("Broken test implementation: need to call init().") > > + @staticmethod > + def _extract_multiconfigs(targets): > + if isinstance(targets, str): > + targets = [targets] > + mc_names = set() > + for target in targets: > + if target.startswith('mc:'): > + parts = target.split(':') > + if len(parts) >= 2: > + mc_names.add(parts[1]) > + return mc_names > + > def configure( > self, > + targets=None, > compat_arch=True, > cross=True, > debsrc_cache=False, > @@ -196,6 +209,10 @@ class CIBuilder(Test): > > # write ci_build.conf > with open(self.build_dir + '/conf/ci_build.conf', 'w') as f: > + if targets: > + mc_names = self._extract_multiconfigs(targets) > + if mc_names: > + f.write('BBMULTICONFIG = "%s"\n\n' % ' '.join(sorted(mc_names))) > if compat_arch: > f.write( > 'ISAR_ENABLE_COMPAT_ARCH:amd64 = "1"\n' > diff --git a/testsuite/repro-build-test.py b/testsuite/repro-build-test.py > index c06269f5..c1b51aff 100755 > --- a/testsuite/repro-build-test.py > +++ b/testsuite/repro-build-test.py > @@ -50,6 +50,7 @@ class ReproBuild(CIBuilder): > # Build > self.log.info("Started Build " + image_name) > self.configure( > + targets=target, > source_date_epoch=source_date_epoch, use_apt_snapshot=True > ) > self.bitbake(target) Hi, It seems this patch does not work with the installer testsuite (-t installer). After the build testcase "test_installer_build" passed, the following "test_installer_run" and "test_installer_root_partition" tests failed. Some log: ...... [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 ERROR| File "/build/isar_wzh_devel_6a/76/bitbake/lib/bb/cooker.py", line 1040, in findBestProvider [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 ERROR| if pn in self.recipecaches[mc].providers: [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 ERROR| ~~~~~~~~~~~~~~~~~^^^^ [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 ERROR| KeyError: 'qemuamd64-bookworm' Zhihang -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/28db2fc3-e0ef-41a5-8350-bd9f8cc2e313%40ilbers.de. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 2026-07-24 14:56 ` Zhihang Wei @ 2026-07-24 15:27 ` 'MOESSBAUER, Felix' via isar-users 0 siblings, 0 replies; 7+ messages in thread From: 'MOESSBAUER, Felix' via isar-users @ 2026-07-24 15:27 UTC (permalink / raw) To: Zhihang Wei, isar-users; +Cc: Kiszka, Jan On Fri, 2026-07-24 at 16:56 +0200, Zhihang Wei wrote: > On 7/20/26 09:37, 'Felix Moessbauer' via isar-users wrote: > > The global isar mc.conf has over 70 multiconfig targets defined. This > > makes initial parsing super slow, leading to parse times of 5-10 minutes > > on testsuite tasks (per avocado task execution). To speed this up, We now > > set the BBMULTICONFIG bitbake variable to exactly the targets we want to > > test. This reduces the parsing time of tests to ~10s per test. > > > > When running with sstate cache, this massively speeds up repeated runs, > > as the parse time was the biggest single contributor. > > > > Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> > > --- > > testsuite/cibase.py | 20 +++++++++++--------- > > testsuite/cibuilder.py | 17 +++++++++++++++++ > > testsuite/repro-build-test.py | 1 + > > 3 files changed, 29 insertions(+), 9 deletions(-) > > > > diff --git a/testsuite/cibase.py b/testsuite/cibase.py > > index 4a6308d0..52748004 100755 > > --- a/testsuite/cibase.py > > +++ b/testsuite/cibase.py > > @@ -15,7 +15,7 @@ from avocado.utils import process > > > > class CIBaseTest(CIBuilder): > > def perform_build_test(self, targets, should_fail=False, **kwargs): > > - self.configure(**kwargs) > > + self.configure(targets=targets, **kwargs) > > > > if bool(int(self.params.get('depgraph', default=0))): > > self.generate_dependency_graph(targets, reconfigure=False, **kwargs) > > @@ -31,7 +31,7 @@ class CIBaseTest(CIBuilder): > > **kwargs): > > """Debug helper to better understand test task graphs.""" > > if reconfigure: > > - self.configure(**kwargs) > > + self.configure(targets=targets, **kwargs) > > > > self.log.info("Generating dependency graph...") > > > > @@ -41,7 +41,7 @@ class CIBaseTest(CIBuilder): > > self.move_in_build_dir('pn-buildlist', f"pn-buildlist-{self.name}") > > > > def perform_wic_partition_test(self, targets, wic_deploy_parts, **kwargs): > > - self.configure(wic_deploy_parts=wic_deploy_parts, **kwargs) > > + self.configure(targets=targets, wic_deploy_parts=wic_deploy_parts, **kwargs) > > self.bitbake(targets, **kwargs) > > > > wic_path = f"{self.build_dir}/tmp/deploy/images/*/*.wic.p1" > > @@ -57,6 +57,7 @@ class CIBaseTest(CIBuilder): > > gpg_priv_key = os.path.join(keys_dir, 'test_priv.key') > > > > self.configure( > > + targets=targets, > > gpg_pub_key=gpg_pub_key if signed else None, > > sstate_dir='', > > **kwargs, > > @@ -76,6 +77,7 @@ class CIBaseTest(CIBuilder): > > repro_type = 'signed' if signed else 'unsigned' > > self.move_in_build_dir('tmp', f"tmp_middle_repro_{repro_type}") > > self.configure( > > + targets=targets, > > gpg_pub_key=gpg_pub_key if signed else None, > > offline=True, > > sstate_dir='', > > @@ -89,7 +91,7 @@ class CIBaseTest(CIBuilder): > > > > if not signed: > > # Try to build with changed configuration with no cleanup > > - self.configure(**kwargs) > > + self.configure(targets=targets, **kwargs) > > self.bitbake(targets, **kwargs) > > > > finally: > > @@ -109,7 +111,7 @@ class CIBaseTest(CIBuilder): > > count += int(content[field]) > > return count > > > > - self.configure(ccache=True, sstate_dir='', **kwargs) > > + self.configure(targets=targets, ccache=True, sstate_dir='', **kwargs) > > > > # Field that stores direct ccache hits > > direct_cache_hit = 22 > > @@ -173,7 +175,7 @@ class CIBaseTest(CIBuilder): > > process.run(f"git --work-tree={isar_sstate} checkout HEAD -- .") > > > > self.init('../build-sstate', isar_dir=isar_sstate) > > - self.configure(sstate=True, sstate_dir='', **kwargs) > > + self.configure(targets=image_target, sstate=True, sstate_dir='', **kwargs) > > > > # Cleanup sstate and tmp before test > > self.delete_from_build_dir('sstate-cache') > > @@ -196,7 +198,7 @@ class CIBaseTest(CIBuilder): > > """ > > Generate signature data for target(s) and check for cacheability issues > > """ > > - self.configure(**kwargs) > > + self.configure(targets=targets, **kwargs) > > self.delete_from_build_dir('tmp_before_sstate') > > self.move_in_build_dir('tmp', 'tmp_before_sstate') > > self.bitbake(targets, sig_handler='none') > > @@ -246,7 +248,7 @@ class CIBaseTest(CIBuilder): > > return False > > return True > > > > - self.configure(sstate=True, sstate_dir='', **kwargs) > > + self.configure(targets=[image_target, package_target], sstate=True, sstate_dir='', **kwargs) > > > > deploy_dir = f"{self.build_dir}/tmp/deploy" > > > > @@ -380,7 +382,7 @@ class CIBaseTest(CIBuilder): > > sfiles[target][fname] = CIUtils.get_tar_content(fname) > > return sfiles > > > > - self.configure(**kwargs) > > + self.configure(targets=targets, **kwargs) > > > > tmp_layer_dir = self.create_tmp_layer() > > try: > > diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py > > index d42e8631..1d415084 100755 > > --- a/testsuite/cibuilder.py > > +++ b/testsuite/cibuilder.py > > @@ -104,8 +104,21 @@ class CIBuilder(Test): > > if not hasattr(self, 'build_dir'): > > self.error("Broken test implementation: need to call init().") > > > > + @staticmethod > > + def _extract_multiconfigs(targets): > > + if isinstance(targets, str): > > + targets = [targets] > > + mc_names = set() > > + for target in targets: > > + if target.startswith('mc:'): > > + parts = target.split(':') > > + if len(parts) >= 2: > > + mc_names.add(parts[1]) > > + return mc_names > > + > > def configure( > > self, > > + targets=None, > > compat_arch=True, > > cross=True, > > debsrc_cache=False, > > @@ -196,6 +209,10 @@ class CIBuilder(Test): > > > > # write ci_build.conf > > with open(self.build_dir + '/conf/ci_build.conf', 'w') as f: > > + if targets: > > + mc_names = self._extract_multiconfigs(targets) > > + if mc_names: > > + f.write('BBMULTICONFIG = "%s"\n\n' % ' '.join(sorted(mc_names))) > > if compat_arch: > > f.write( > > 'ISAR_ENABLE_COMPAT_ARCH:amd64 = "1"\n' > > diff --git a/testsuite/repro-build-test.py b/testsuite/repro-build-test.py > > index c06269f5..c1b51aff 100755 > > --- a/testsuite/repro-build-test.py > > +++ b/testsuite/repro-build-test.py > > @@ -50,6 +50,7 @@ class ReproBuild(CIBuilder): > > # Build > > self.log.info("Started Build " + image_name) > > self.configure( > > + targets=target, > > source_date_epoch=source_date_epoch, use_apt_snapshot=True > > ) > > self.bitbake(target) > > Hi, > > It seems this patch does not work with the installer testsuite (-t > installer). After the build testcase "test_installer_build" passed, > the following "test_installer_run" and "test_installer_root_partition" > tests failed. I see. That's because we don't have the inner image in our BBMULTICONFIG list anymore. The fix is trivial, just append the following to test_installer_build: lines=["BBMULTICONFIG:append = ' qemuamd64-bookworm'"] Will send a v3 in a minute. Felix > > Some log: > ...... > [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 > ERROR| File "/build/isar_wzh_devel_6a/76/bitbake/lib/bb/cooker.py", > line 1040, in findBestProvider > [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 > ERROR| if pn in self.recipecaches[mc].providers: > [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 > ERROR| ~~~~~~~~~~~~~~~~~^^^^ > [stdlog] 2026-07-21 18:11:07,304 avocado.test stacktrace L0049 > ERROR| KeyError: 'qemuamd64-bookworm' > > Zhihang -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/4865535f9b767eb838afab41959755ced0fc56f0.camel%40siemens.com. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] testsuite: remove duplicated cross test 2026-07-20 7:37 [PATCH v2 0/3] speedup testsuite execution execution 'Felix Moessbauer' via isar-users 2026-07-20 7:37 ` [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 'Felix Moessbauer' via isar-users 2026-07-20 7:37 ` [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 ` 'Felix Moessbauer' via isar-users 2 siblings, 0 replies; 7+ messages in thread From: 'Felix Moessbauer' via isar-users @ 2026-07-20 7:37 UTC (permalink / raw) To: isar-users; +Cc: jan.kiszka, Felix Moessbauer The test_cross_debsrc is defined twice with exactly the same content. Python will anyways just execute one. We now remove latter instance, as this gives a cleaner diff. Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> --- testsuite/citest.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/testsuite/citest.py b/testsuite/citest.py index fb44036c..b23b7764 100644 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -422,15 +422,6 @@ class CrossTest(CIBaseTest): self.init() self.perform_build_test(targets, cross=False) - def test_cross_debsrc(self): - targets = [ - 'mc:qemuarm64-bookworm:isar-image-ci', - ] - - self.init() - # only build a single custom package to speedup test - self.perform_build_test(targets, debsrc_cache=True, image_install='cowsay') - def test_cross_kselftest(self): targets = [ 'mc:qemuarm-buster:kselftest', -- 2.53.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260720073703.3782697-4-felix.moessbauer%40siemens.com. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-07-24 15:27 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-07-20 7:37 [PATCH v2 0/3] speedup testsuite execution execution 'Felix Moessbauer' via isar-users 2026-07-20 7:37 ` [PATCH v2 1/3] ci: run vm_start tests right after targets that built it 'Felix Moessbauer' via isar-users 2026-07-24 9:50 ` Zhihang Wei 2026-07-20 7:37 ` [PATCH v2 2/3] testsuite: speedup execution by limiting mc parsing to selected targets 'Felix Moessbauer' via isar-users 2026-07-24 14:56 ` Zhihang Wei 2026-07-24 15:27 ` 'MOESSBAUER, Felix' via isar-users 2026-07-20 7:37 ` [PATCH v2 3/3] testsuite: remove duplicated cross test 'Felix Moessbauer' via isar-users
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox