From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7091260455110311936 X-Received: by 2002:a17:907:3f07:b0:6f3:c0ee:d6a3 with SMTP id hq7-20020a1709073f0700b006f3c0eed6a3mr3867596ejc.410.1651062738632; Wed, 27 Apr 2022 05:32:18 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6402:34c8:b0:423:f341:6e06 with SMTP id w8-20020a05640234c800b00423f3416e06ls3876123edc.2.gmail; Wed, 27 Apr 2022 05:32:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPPbSmiEJ8iORnpcVQZOtrW4PGYq5z9E7UbpBE3/5qmGUfYcH/qidjpQV47e7pzMlUkxTb X-Received: by 2002:a05:6402:f07:b0:426:12ba:9b7c with SMTP id i7-20020a0564020f0700b0042612ba9b7cmr4141443eda.0.1651062737572; Wed, 27 Apr 2022 05:32:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651062737; cv=none; d=google.com; s=arc-20160816; b=yFGBpV6Nw5FhCLoOmgpuVB2QseO4vWoeCEbqQkVgb9xFuSt98D0HpnvMnetX/VfiVV C2MXSQxcAeI1bfFqYomQd04cik3UMf6SeKdeEA6ZnZH1vjYbn4mPL47L37JlTNwVRTnp B3b+Qrk0jfvsBwdxiNYjIkYp72UaDpr6nJ2Y3flGN9xQI/4oDm0u+Y3nRIXasuWbGUe9 eKXZg7IKfIbHx7nkbcPoDEF4yzNvHggKVMX3PZZ/piJRNmUxXstGKOQs8CoJPm1/zipB pRiTY/ASjWV9202CMOu5h+OZUop8NsNZa/VBxttZ9pCqnUy5ONeFN6SFfC5ZqHoEiukP Gh5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=sbxq8MBlBPyLkFR1CQuQUjl8gTc0BhicHIOeeaVpAdU=; b=aiN6WWLI55ilZ7vKL/+yS3QzpBgRGLC6CmGyW/ndZQ6zjjgpQ17aSvxSeU7mkASGhe oShqEFWb99tVahmNBFC/kVXu0ByxDJhUQZgcej+FoVH9CyNZzMIQOfnnuAKYoL26mMWQ eDXQRi5p/c/kGLGmqJ3wIRBO7CvGP790QlZWB5pwo2RBUSOzQdln2T/7NyHUP+WvUyrL Xzf91jU9kbBTDl4ZrnNSOYWoFwouWLGFjLln1ZFFBqjgRHHIwqJQG4Tj1xyZe587IiGw rDFX2AnIgP4ds1830Vf2Fyz5MSDXLPIedY9sT1u6lBV93g3E5HbfujvgahWnoP7Awj1E Em+g== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id ec22-20020a0564020d5600b00425ac5c09aesi73742edb.1.2022.04.27.05.32.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 27 Apr 2022 05:32:17 -0700 (PDT) Received-SPF: pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Received: from localhost.localdomain (mm-48-45-214-37.mgts.dynamic.pppoe.byfly.by [37.214.45.48] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8) with ESMTPSA id 23RCWCxN002160 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 27 Apr 2022 14:32:15 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH 1/3] ci: Implement dynamic KFAIL checking Date: Wed, 27 Apr 2022 15:32:03 +0300 Message-Id: <20220427123205.30111-2-amikan@ilbers.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220427123205.30111-1-amikan@ilbers.de> References: <20220427123205.30111-1-amikan@ilbers.de> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-TUID: hSIp3iOErEzV Remove KFAIL protection hardcoding and inctroduce ISAR_CI_KFAIL environment variable instead. Example: ISAR_CI_KFAIL="cross_rpi cross_ubuntu nocross_rpi nocross_sidports" Signed-off-by: Anton Mikanovich --- testsuite/cibuilder.py | 54 ++++++++++++++++++++++++++++-------------- testsuite/citest.py | 30 +++++------------------ 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py index 7ce13dc..98b8933 100755 --- a/testsuite/cibuilder.py +++ b/testsuite/cibuilder.py @@ -10,6 +10,7 @@ import tempfile import start_vm +from avocado.core import exceptions from avocado import Test from avocado.utils import path from avocado.utils import process @@ -124,6 +125,15 @@ class CIBuilder(Test): self.check_init() process.run('rm -rf ' + self.build_dir + '/' + path, sudo=True) + def is_in_list(self, envname): + test_prefix = 'test_' + caller = self._testMethodName + tests_list = (os.getenv(envname) or '').split() + if caller.startswith(test_prefix): + if caller[len(test_prefix):] in tests_list: + return True + return False + def bitbake(self, target, bitbake_cmd=None, **kwargs): self.check_init() self.log.info('===================================================') @@ -141,24 +151,30 @@ class CIBuilder(Test): else: cmdline.append(target) - with subprocess.Popen(" ".join(cmdline), stdout=subprocess.PIPE, - stderr=subprocess.PIPE, universal_newlines=True, - shell=True) as p1: - poller = select.poll() - poller.register(p1.stdout, select.POLLIN) - poller.register(p1.stderr, select.POLLIN) - while p1.poll() is None: - events = poller.poll(1000) - for fd, event in events: - if event != select.POLLIN: - continue - if fd == p1.stdout.fileno(): - self.log.info(p1.stdout.readline().rstrip()) - if fd == p1.stderr.fileno(): - app_log.error(p1.stderr.readline().rstrip()) - p1.wait() - if p1.returncode: - self.fail('Bitbake failed') + try: + with subprocess.Popen(" ".join(cmdline), stdout=subprocess.PIPE, + stderr=subprocess.PIPE, universal_newlines=True, + shell=True) as p1: + poller = select.poll() + poller.register(p1.stdout, select.POLLIN) + poller.register(p1.stderr, select.POLLIN) + while p1.poll() is None: + events = poller.poll(1000) + for fd, event in events: + if event != select.POLLIN: + continue + if fd == p1.stdout.fileno(): + self.log.info(p1.stdout.readline().rstrip()) + if fd == p1.stderr.fileno(): + app_log.error(p1.stderr.readline().rstrip()) + p1.wait() + if p1.returncode: + self.fail('Bitbake failed') + except exceptions.TestFail: + if self.is_in_list('ISAR_CI_KFAIL'): + self.cancel('KFAIL') + else: + raise def backupfile(self, path): self.check_init() @@ -258,4 +274,6 @@ class CIBuilder(Test): else: app_log.error(data.decode(errors='replace')) + if self.is_in_list('ISAR_CI_KFAIL'): + self.cancel('KFAIL: log ' + output_file) self.fail('Log ' + output_file) diff --git a/testsuite/citest.py b/testsuite/citest.py index 994c130..879c8d2 100755 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -79,10 +79,7 @@ class CrossTest(CIBaseTest): ] self.init() - try: - self.perform_build_test(targets, cross=True, debsrc_cache=True) - except: - self.cancel('KFAIL') + self.perform_build_test(targets, cross=True, debsrc_cache=True) def test_cross_ubuntu(self): targets = [ @@ -90,10 +87,7 @@ class CrossTest(CIBaseTest): ] self.init() - try: - self.perform_build_test(targets, cross=True) - except: - self.cancel('KFAIL') + self.perform_build_test(targets, cross=True) def test_cross_bookworm(self): targets = [ @@ -101,10 +95,7 @@ class CrossTest(CIBaseTest): ] self.init() - try: - self.perform_build_test(targets, cross=True) - except: - self.cancel('KFAIL') + self.perform_build_test(targets, cross=True) class SdkTest(CIBaseTest): @@ -165,10 +156,7 @@ class NoCrossTest(CIBaseTest): ] self.init() - try: - self.perform_build_test(targets, cross=False, debsrc_cache=True) - except: - self.cancel('KFAIL') + self.perform_build_test(targets, cross=False, debsrc_cache=True) def test_nocross_bookworm(self): targets = [ @@ -180,10 +168,7 @@ class NoCrossTest(CIBaseTest): ] self.init() - try: - self.perform_build_test(targets, cross=False) - except: - self.cancel('KFAIL') + self.perform_build_test(targets, cross=False) def test_nocross_sidports(self): targets = [ @@ -192,10 +177,7 @@ class NoCrossTest(CIBaseTest): ] self.init() - try: - self.perform_build_test(targets, cross=False) - except: - self.cancel('KFAIL') + self.perform_build_test(targets, cross=False) class RebuildTest(CIBaseTest): -- 2.17.1