public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Anton Mikanovich <amikan@ilbers.de>
To: isar-users@googlegroups.com
Cc: Anton Mikanovich <amikan@ilbers.de>
Subject: [PATCH 10/23] CI: Fix errors reporting during startvm
Date: Mon, 25 Mar 2024 17:55:27 +0200	[thread overview]
Message-ID: <20240325155540.4162990-11-amikan@ilbers.de> (raw)
In-Reply-To: <20240325155540.4162990-1-amikan@ilbers.de>

Test case failure should be triggered by self.fail() API.
It helps to prepare much more correct log output.
So rebuild error handling of startvm related functions.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 testsuite/cibuilder.py | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
index fa30c2f5..d282f8ee 100755
--- a/testsuite/cibuilder.py
+++ b/testsuite/cibuilder.py
@@ -475,7 +475,7 @@ BBPATH .= ":${LAYERDIR}"\
         p1 = subprocess.Popen('exec ' + ' '.join(cmdline), shell=True,
                               stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                               universal_newlines=True)
-        self.log.info("Started VM with pid %s" % (p1.pid))
+        self.log.info("Starting VM with pid %s" % (p1.pid))
 
         return p1, cmdline, boot_log
 
@@ -506,8 +506,10 @@ BBPATH .= ":${LAYERDIR}"\
                 if fd == p1.stderr.fileno():
                     app_log.error(p1.stderr.readline().rstrip())
 
-        self.log.error("Didn't get login prompt")
-        return 1
+        rc = 1
+        if time.time() > timeout:
+            rc = 2
+        return rc
 
 
     def vm_parse_output(self, boot_log, multiconfig, skip_modulecheck):
@@ -539,10 +541,8 @@ BBPATH .= ":${LAYERDIR}"\
                 if (module_output in data or skip_modulecheck):
                     if resize_output and not resize_output in data:
                         rc = 1
-                        self.log.error("No resize output while expected")
                 else:
                     rc = 2
-                    self.log.error("No example module output while expected")
         return rc
 
 
@@ -553,13 +553,16 @@ BBPATH .= ":${LAYERDIR}"\
 
 
     def vm_turn_off(self, vm):
-        pid = self.vm_dict[vm][0]
-        os.kill(pid, signal.SIGKILL)
+        try:
+            pid = self.vm_dict[vm][0]
+            os.kill(pid, signal.SIGKILL)
 
-        del(self.vm_dict[vm])
-        self.vm_dump_dict(vm)
+            del(self.vm_dict[vm])
+            self.vm_dump_dict(vm)
 
-        self.log.info("Stopped VM with pid %s" % (pid))
+            self.log.info("Stopped VM with pid %s" % (pid))
+        except ProcessLookupError:
+            self.log.error("Can't stop VM %s" % vm)
 
 
     def vm_start(self, arch='amd64', distro='buster',
@@ -611,7 +614,10 @@ BBPATH .= ":${LAYERDIR}"\
             rc = self.vm_wait_boot(p1, timeout)
             if rc != 0:
                 self.vm_turn_off(vm)
-                self.fail('Failed to boot qemu machine')
+                if rc == 2:
+                    self.fail("Didn't get login prompt")
+                else:
+                    self.fail('Failed to boot qemu machine')
 
         if cmd is not None or script is not None:
             self.ssh_user='ci'
@@ -638,7 +644,12 @@ BBPATH .= ":${LAYERDIR}"\
             if rc != 0:
                 if not keep:
                     self.vm_turn_off(vm)
-                self.fail('Failed to parse output')
+                if rc == 1:
+                    self.fail("No resize output while expected")
+                elif rc == 2:
+                    self.fail("No example module output while expected")
+                else:
+                    self.fail('Failed to parse output')
 
         if not keep:
             self.vm_turn_off(vm)
-- 
2.34.1


  parent reply	other threads:[~2024-03-25 15:56 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-25 15:55 [PATCH 00/23] Additional CI improvements Anton Mikanovich
2024-03-25 15:55 ` [PATCH 01/23] CI: Introduce Standard CI for cross building Anton Mikanovich
2024-03-25 15:55 ` [PATCH 02/23] CI: Rename cross to fast Anton Mikanovich
2024-03-25 15:55 ` [PATCH 03/23] CI: Rename nocross to full Anton Mikanovich
2024-03-25 15:55 ` [PATCH 04/23] CI: Remove test keyword from class names Anton Mikanovich
2024-03-25 15:55 ` [PATCH 05/23] CI: Rename base test cases Anton Mikanovich
2024-03-25 15:55 ` [PATCH 06/23] CI: Remove cleanup before nocross build Anton Mikanovich
2024-03-25 15:55 ` [PATCH 07/23] CI: Update default target to bookworm Anton Mikanovich
2024-03-25 15:55 ` [PATCH 08/23] CI: Remove duplicated targets Anton Mikanovich
2024-03-25 15:55 ` [PATCH 09/23] CI: Run startvm for all qemu targets Anton Mikanovich
2024-03-25 15:55 ` Anton Mikanovich [this message]
2024-03-25 15:55 ` [PATCH 11/23] CI: Remove logging hack for job.log Anton Mikanovich
2024-03-25 15:55 ` [PATCH 12/23] CI: Do not lost errors on failed processes Anton Mikanovich
2024-03-25 15:55 ` [PATCH 13/23] CI: Remove container package list hack from testsuite Anton Mikanovich
2024-03-25 15:55 ` [PATCH 14/23] CI: Minimize debsrc_cache checking Anton Mikanovich
2024-03-25 15:55 ` [PATCH 15/23] CI: Minimize kselftest checking Anton Mikanovich
2024-03-25 15:55 ` [PATCH 16/23] CI: Do not include testsuites into each other Anton Mikanovich
2024-03-25 15:55 ` [PATCH 17/23] CI: Mark some single testcases with tags Anton Mikanovich
2024-03-25 15:55 ` [PATCH 18/23] CI: Execute startvm testcases after building Anton Mikanovich
2024-03-25 15:55 ` [PATCH 19/23] CI: Fix missing endline in generated config Anton Mikanovich
2024-03-25 15:55 ` [PATCH 20/23] CI: Remove absolute path to citest.py Anton Mikanovich
2024-03-25 15:55 ` [PATCH 21/23] CI: Create avocado.conf inside build_dir Anton Mikanovich
2024-03-25 15:55 ` [PATCH 22/23] CI: Set also cache dir for Avocado Anton Mikanovich
2024-03-25 15:55 ` [PATCH 23/23] CI: Add make world test case Anton Mikanovich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240325155540.4162990-11-amikan@ilbers.de \
    --to=amikan@ilbers.de \
    --cc=isar-users@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox