public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
* [PATCH 0/4] Add test-cases for dracut-based initrds
@ 2025-11-01 11:13 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 1/4] CI: support negative build tests 'Cedric Hombourger' via isar-users
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: 'Cedric Hombourger' via isar-users @ 2025-11-01 11:13 UTC (permalink / raw)
  To: isar-users; +Cc: Cedric Hombourger

[1] is adding support for dracut as the initrd generator. That
patch series missed to add tests. Add several smoke tests.
Note that a small change (add "set -e" to the sudo script used
to generate the initrd) is needed for all initrd tests to pass.

Build results with pristine "Add support for dracut" v5:

    builder@ed1e0b7e8d4e:/work/testsuite$ trun --max-parallel-tasks=1 -p sstate=1 -t initrd citest.py
    JOB ID     : f1601d733e2a811ad04738eef7a1bdba28dbcd52
    JOB LOG    : /tmp/tmp72bozbdi/avocado/job-results/job-2025-11-01T10.19-f1601d7/job.log
     (1/5) citest.py:InitRdTest.test_dracut_in_image: STARTED
     (1/5) citest.py:InitRdTest.test_dracut_in_image: PASS (206.52 s)
     (2/5) citest.py:InitRdTest.test_dracut_build_initrd: STARTED
     (2/5) citest.py:InitRdTest.test_dracut_build_initrd: PASS (57.86 s)
     (3/5) citest.py:InitRdTest.test_dracut_build_failure: STARTED
     (3/5) citest.py:InitRdTest.test_dracut_build_failure: FAIL: Bitbake suceeded but was expected to fail! (159.91 s)
     (4/5) citest.py:InitRdCrossTests.test_dracut_in_image: STARTED
     (4/5) citest.py:InitRdCrossTests.test_dracut_in_image: PASS (1000.05 s)
     (5/5) citest.py:InitRdCrossTests.test_dracut_build_initrd: STARTED
     (5/5) citest.py:InitRdCrossTests.test_dracut_build_initrd: PASS (233.79 s)
    RESULTS    : PASS 4 | ERROR 0 | FAIL 1 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
    JOB TIME   : 1663.01 s

With the suggested change:

    builder@ed1e0b7e8d4e:/work/testsuite$ trun --max-parallel-tasks=1 -p sstate=1 -t initrd citest.py
    JOB ID     : dc55f13f05f5997669aaccce9760bca4bed7a400
    JOB LOG    : /tmp/tmp72bozbdi/avocado/job-results/job-2025-11-01T11.54-dc55f13/job.log
     (1/5) citest.py:InitRdTest.test_dracut_in_image: STARTED
     (1/5) citest.py:InitRdTest.test_dracut_in_image: PASS (117.49 s)
     (2/5) citest.py:InitRdTest.test_dracut_build_initrd: STARTED
     (2/5) citest.py:InitRdTest.test_dracut_build_initrd: PASS (30.33 s)
     (3/5) citest.py:InitRdTest.test_dracut_build_failure: STARTED
     (3/5) citest.py:InitRdTest.test_dracut_build_failure: PASS (73.31 s)
     (4/5) citest.py:InitRdCrossTests.test_dracut_in_image: STARTED
    
     (4/5) citest.py:InitRdCrossTests.test_dracut_in_image: PASS (430.85 s)
     (5/5) citest.py:InitRdCrossTests.test_dracut_build_initrd: STARTED
     (5/5) citest.py:InitRdCrossTests.test_dracut_build_initrd: PASS (55.30 s)
    RESULTS    : PASS 5 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
    JOB TIME   : 711.89 s

[1] https://lists.isar-build.org/isar-users/20251030094451.1303871-1-Quirin.Gylstorff@siemens.com/T/#t

Cedric Hombourger (4):
  CI: support negative build tests
  CI: add smoke-tests for switch to dracut in isar-image-ci
  CI: add build tests for isar-dracut initrd images
  CI: check if the build fails when dracut fails

 testsuite/cibase.py    |  4 +--
 testsuite/cibuilder.py | 12 ++++---
 testsuite/citest.py    | 81 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 91 insertions(+), 6 deletions(-)

-- 
2.47.3

-- 
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/20251101111326.600581-1-cedric.hombourger%40siemens.com.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/4] CI: support negative build tests
  2025-11-01 11:13 [PATCH 0/4] Add test-cases for dracut-based initrds 'Cedric Hombourger' via isar-users
@ 2025-11-01 11:13 ` 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 2/4] CI: add smoke-tests for switch to dracut in isar-image-ci 'Cedric Hombourger' via isar-users
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: 'Cedric Hombourger' via isar-users @ 2025-11-01 11:13 UTC (permalink / raw)
  To: isar-users; +Cc: Cedric Hombourger

It appears that our build tests are only check for successful
builds. We also want to make sure builds fail when they are
expected to. This adds a should_fail boolean to bitbake() and
perform_build_test()

Signed-off-by: Cedric Hombourger <cedric.hombourger@siemens.com>
---
 testsuite/cibase.py    |  4 ++--
 testsuite/cibuilder.py | 12 ++++++++----
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/testsuite/cibase.py b/testsuite/cibase.py
index 6ffedcea..0a006a21 100755
--- a/testsuite/cibase.py
+++ b/testsuite/cibase.py
@@ -14,12 +14,12 @@ from avocado.utils import process
 
 
 class CIBaseTest(CIBuilder):
-    def perform_build_test(self, targets, **kwargs):
+    def perform_build_test(self, targets, should_fail=False, **kwargs):
         self.configure(**kwargs)
 
         self.log.info("Starting build...")
 
-        self.bitbake(targets, **kwargs)
+        self.bitbake(targets, should_fail=should_fail, **kwargs)
 
     def perform_wic_partition_test(self, targets, wic_deploy_parts, **kwargs):
         self.configure(wic_deploy_parts=wic_deploy_parts, **kwargs)
diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
index cd5e70ba..366f6a1f 100755
--- a/testsuite/cibuilder.py
+++ b/testsuite/cibuilder.py
@@ -281,7 +281,8 @@ class CIBuilder(Test):
         if os.path.exists(self.build_dir + '/' + src):
             shutil.move(self.build_dir + '/' + src, self.build_dir + '/' + dst)
 
-    def bitbake(self, target, bitbake_cmd=None, sig_handler=None, **kwargs):
+    def bitbake(self, target, bitbake_cmd=None, should_fail=False,
+                sig_handler=None, **kwargs):
         self.check_init()
         self.log.info("===================================================")
         self.log.info(f"Building {str(target)}")
@@ -318,13 +319,16 @@ class CIBuilder(Test):
                         continue
                     if fd == p1.stdout.fileno():
                         self.log.info(p1.stdout.readline().rstrip())
-                    if fd == p1.stderr.fileno():
+                    if fd == p1.stderr.fileno() and should_fail is False:
                         app_log.error(p1.stderr.readline().rstrip())
                 if p1.poll() is not None:
                     break
             p1.wait()
-            if p1.returncode:
-                self.fail("Bitbake failed")
+            if should_fail is False:
+                if p1.returncode:
+                    self.fail("Bitbake failed")
+            elif p1.returncode == 0:
+                self.fail("Bitbake suceeded but was expected to fail!")
 
     def backupfile(self, path):
         self.check_init()
-- 
2.47.3

-- 
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/20251101111326.600581-2-cedric.hombourger%40siemens.com.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/4] CI: add smoke-tests for switch to dracut in isar-image-ci
  2025-11-01 11:13 [PATCH 0/4] Add test-cases for dracut-based initrds 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 1/4] CI: support negative build tests 'Cedric Hombourger' via isar-users
@ 2025-11-01 11:13 ` 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 3/4] CI: add build tests for isar-dracut initrd images 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 4/4] CI: check if the build fails when dracut fails 'Cedric Hombourger' via isar-users
  3 siblings, 0 replies; 5+ messages in thread
From: 'Cedric Hombourger' via isar-users @ 2025-11-01 11:13 UTC (permalink / raw)
  To: isar-users; +Cc: Cedric Hombourger

Use IMAGE_PREINSTALL to install dracut in the isar-image-ci
image and verify that it builds and boots. We also check that
a dracut-shutdown service is active (as an indication that
the system was booted using a dracut initrd). A single test
is provided as well as cross-{machine,distro} tests.

Signed-off-by: Cedric Hombourger <cedric.hombourger@siemens.com>
---
 testsuite/citest.py | 58 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/testsuite/citest.py b/testsuite/citest.py
index a1214e9c..23900a6c 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -278,6 +278,64 @@ class KernelTests(CIBaseTest):
         self.perform_build_test(targets, image_install=' '.join(modules), lines=lines)
 
 
+class InitRdBaseTest(CIBaseTest):
+    """
+    Helper class for InitRd build tests
+    """
+
+    DRACUT_CONF = [
+        "IMAGE_PREINSTALL:append = ' dracut'",
+        "IMAGE_INSTALL:remove = 'enable-fsck'",
+    ]
+
+    def dracut_in_image(self, targets):
+        machine = 'qemuamd64'
+        distro = 'bookworm'
+        image = 'isar-image-ci'
+        self.init()
+        self.perform_build_test(targets, lines=InitRdBaseTest.DRACUT_CONF)
+
+        for target in targets:
+            config = target.split(':')
+            machine = config[1].split('-')[0]
+            distro = config[1].split('-')[1]
+            image = config[2]
+
+            # systems booted via a dracut initrd have a dracut-shutdown service
+            # check its presence
+            self.vm_start(
+                machine.removeprefix('qemu'), distro, image=image,
+                cmd="systemctl is-active dracut-shutdown"
+            )
+
+
+class InitRdTest(InitRdBaseTest):
+    """
+    Tests for initrd generation
+    :avocado: tags=initrd,single,full
+    """
+
+    def test_dracut_in_image(self):
+        """Test switch to dracut in an image recipe."""
+        self.dracut_in_image(['mc:qemuamd64-bookworm:isar-image-ci'])
+
+
+class InitRdCrossTests(InitRdBaseTest):
+    """
+    Tests for initrd generation
+    :avocado: tags=initrd,full
+    """
+
+    def test_dracut_in_image(self):
+        """Test switch to dracut in an image recipe."""
+        self.dracut_in_image([
+            'mc:qemuamd64-bookworm:isar-image-ci',
+            'mc:qemuamd64-trixie:isar-image-ci',
+            'mc:qemuarm64-bookworm:isar-image-ci',
+            'mc:qemuarm64-trixie:isar-image-ci'
+        ])
+
+
 class WicTest(CIBaseTest):
 
     """
-- 
2.47.3

-- 
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/20251101111326.600581-3-cedric.hombourger%40siemens.com.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/4] CI: add build tests for isar-dracut initrd images
  2025-11-01 11:13 [PATCH 0/4] Add test-cases for dracut-based initrds 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 1/4] CI: support negative build tests 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 2/4] CI: add smoke-tests for switch to dracut in isar-image-ci 'Cedric Hombourger' via isar-users
@ 2025-11-01 11:13 ` 'Cedric Hombourger' via isar-users
  2025-11-01 11:13 ` [PATCH 4/4] CI: check if the build fails when dracut fails 'Cedric Hombourger' via isar-users
  3 siblings, 0 replies; 5+ messages in thread
From: 'Cedric Hombourger' via isar-users @ 2025-11-01 11:13 UTC (permalink / raw)
  To: isar-users; +Cc: Cedric Hombourger

Signed-off-by: Cedric Hombourger <cedric.hombourger@siemens.com>
---
 testsuite/citest.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/testsuite/citest.py b/testsuite/citest.py
index 23900a6c..7f046a7f 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -319,6 +319,11 @@ class InitRdTest(InitRdBaseTest):
         """Test switch to dracut in an image recipe."""
         self.dracut_in_image(['mc:qemuamd64-bookworm:isar-image-ci'])
 
+    def test_dracut_build_initrd(self):
+        """ Test build of an initrd image that uses dracut."""
+        self.init()
+        self.perform_build_test(['mc:qemuamd64-bookworm:isar-dracut'])
+
 
 class InitRdCrossTests(InitRdBaseTest):
     """
@@ -335,6 +340,16 @@ class InitRdCrossTests(InitRdBaseTest):
             'mc:qemuarm64-trixie:isar-image-ci'
         ])
 
+    def test_dracut_build_initrd(self):
+        """ Test build of initrd images that use dracut."""
+        self.init()
+        self.perform_build_test([
+            'mc:qemuamd64-bookworm:isar-dracut',
+            'mc:qemuamd64-trixie:isar-dracut',
+            'mc:qemuarm64-bookworm:isar-dracut',
+            'mc:qemuarm64-trixie:isar-dracut'
+        ])
+
 
 class WicTest(CIBaseTest):
 
-- 
2.47.3

-- 
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/20251101111326.600581-4-cedric.hombourger%40siemens.com.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 4/4] CI: check if the build fails when dracut fails
  2025-11-01 11:13 [PATCH 0/4] Add test-cases for dracut-based initrds 'Cedric Hombourger' via isar-users
                   ` (2 preceding siblings ...)
  2025-11-01 11:13 ` [PATCH 3/4] CI: add build tests for isar-dracut initrd images 'Cedric Hombourger' via isar-users
@ 2025-11-01 11:13 ` 'Cedric Hombourger' via isar-users
  3 siblings, 0 replies; 5+ messages in thread
From: 'Cedric Hombourger' via isar-users @ 2025-11-01 11:13 UTC (permalink / raw)
  To: isar-users; +Cc: Cedric Hombourger

The build should not succeed if dracut fails to generate an
initrd. Amend the dracut command line to add an invalid option
(--unknown-option) to force a build failure and check that
bitbake does fail (it did not in the "Add support for dracut"
patch series v5).

Signed-off-by: Cedric Hombourger <cedric.hombourger@siemens.com>
---
 testsuite/citest.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/testsuite/citest.py b/testsuite/citest.py
index 7f046a7f..e53dfa9b 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -324,6 +324,14 @@ class InitRdTest(InitRdBaseTest):
         self.init()
         self.perform_build_test(['mc:qemuamd64-bookworm:isar-dracut'])
 
+    def test_dracut_build_failure(self):
+        """ Check if the build fails if dracut fails to generate an initrd."""
+        lines = InitRdBaseTest.DRACUT_CONF
+        lines.append("ROOTFS_INITRAMFS_GENERATOR_CMDLINE:append = ' --unknown-option'")
+        self.init()
+        self.perform_build_test('mc:qemuamd64-bookworm:isar-image-ci',
+                                should_fail=True, lines=lines)
+
 
 class InitRdCrossTests(InitRdBaseTest):
     """
-- 
2.47.3

-- 
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/20251101111326.600581-5-cedric.hombourger%40siemens.com.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-11-01 11:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-01 11:13 [PATCH 0/4] Add test-cases for dracut-based initrds 'Cedric Hombourger' via isar-users
2025-11-01 11:13 ` [PATCH 1/4] CI: support negative build tests 'Cedric Hombourger' via isar-users
2025-11-01 11:13 ` [PATCH 2/4] CI: add smoke-tests for switch to dracut in isar-image-ci 'Cedric Hombourger' via isar-users
2025-11-01 11:13 ` [PATCH 3/4] CI: add build tests for isar-dracut initrd images 'Cedric Hombourger' via isar-users
2025-11-01 11:13 ` [PATCH 4/4] CI: check if the build fails when dracut fails 'Cedric Hombourger' 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