From patchwork Mon Mar 25 15:55:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 3453 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 25 Mar 2024 16:56:26 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f61.google.com (mail-lf1-f61.google.com [209.85.167.61]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 42PFuPCv012926 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 25 Mar 2024 16:56:25 +0100 Received: by mail-lf1-f61.google.com with SMTP id 2adb3069b0e04-513e3ed9bc4sf3853897e87.3 for ; Mon, 25 Mar 2024 08:56:25 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711382180; cv=pass; d=google.com; s=arc-20160816; b=QptVpRwB4M2eRJDg2JgeakepncOK7IygLvM2rtQmhBsI1yslrewNUO31kSVLfkHjjh zmNZTdnTO7oJ0fXz1e86GDhzepMb4gNNlsLul0fJaKYI0Chq9Gi8LgBwegTgpeF6MRw1 M8hJvGeTe2pSFrwvI6A8KYJLgkn4VrHEV8kznR6m2yW0pO592Qcm+HrTigJ1e3YQLkpy eNCzVsNeCrk8cYtQi8f0aDjYv/RfUI3obQ/cqjvLfPAGhPi1nn9H1SqSHd8AfCGiDQrs bKDCfl9KkhiQt8LYDEGgw6Fr6YRfmusHStxJs9dyLcoNo0GxZ3G3uubGmQeZjBsRWiNW N+MQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=89u0nlPNjU2lTLfWRWDJRqH4ZdBHEJxGAbdrRwmRnwY=; fh=m/RHNyycxXmGQklcVXUBwrK8MUYfdMrBoaNq4cV5GM4=; b=JyZJVLH8kE6i58RFisBfwPzNNJ0GY+6xnKDSLyw++cmgR1uWQ1nM2RGPQFt9mzE8VV 5lSC02J+cJcxXDnFy+KyCWJDvxhgQ1TmhZNOXnyx+mUDN3yohL+ghqXrBiu+DUk0kokd OqwK8TkDmL20G1KXB8OvFAxKZGmzkZaqWvjw4E1cIkplcWLwCl1lEH3iDI50M5dKAZvQ 82iaLD8OVaIZpuei1IVOBFXXMFIEZdh9vRUGTENKRlGPPJipcT+4vyD2hVCEE3JGRbKp qZ4s2Ar2671FHLSh1X/QIfg0kVtiGUEx7U0DX0bPIadZ6ahiqlnmjfg7sxuyhyF2VXz4 5Lfw==; darn=isar-build.org ARC-Authentication-Results: i=2; 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1711382180; x=1711986980; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=89u0nlPNjU2lTLfWRWDJRqH4ZdBHEJxGAbdrRwmRnwY=; b=p0MqXqumDb1hoTlcFxJf32TbYlTfWPmpfBgvjKRIl2aC089JjARPlM5shlYue5wZfG 1o+5NwM0M+A8dXI3tAREtNTow2EX64zMTf+xlym/yI1k0UQrT8vfwYbEqvHTuqHpxqik aaMa0FJqt1HxiQI0Ewx75tahENGudEMK/VyVHXrV2A2fmNFpe9jz1P+kSnrc5poK4KNp gh2CBLwRA52Mp+jZGXlWNstlRjtkfoILLUwl0Vc0ColvsuxWEEE6DdovyIfdGcqPJKw4 fcFhq3fTj/p75rdTagxLlCUMabSbqa8XfcbICMZs5SjS7+WQjp7n8d7OMOk6AcKZDfwN 8lEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711382180; x=1711986980; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=89u0nlPNjU2lTLfWRWDJRqH4ZdBHEJxGAbdrRwmRnwY=; b=OwRF/WZsmPMjn+i3tW5cWOwkhCDeWujngSvxqYAMsCL7vGaShT7M9YWEzW9WNpyGbZ 8r1whvJIUrowppffvKRToNtLRXTmJIZugJN4BYzEan0RkrSELq72gp6qcDaU8hBOvO2L lI6dSy6azed23qhivt9TSNmsQprsgCsY6qX+BGNYcrrlFELuVKtcksx/jK/wmKDpLhT+ GDQ5cJZpSqRZlf718VVHgChb7jK5ZCa9w5OH5hLZEJ27QmsMQR+fvoyQ5OODN3/SFYp8 L2b1kqAucz0yR3R1GSBQLw31doDJsOK2MVh2z6dE9mbt43ARvr0bkTQk27HlvSTC6zmk lryw== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCWSpLEMVslUVB7i2oZPyv+Fva3C+kyU2r3C3XO59fSgHZjfGvaotWOu9eWJvz+7uXf1xvaG4bTOmmwHRMDRIjsUyUbWRq4= X-Gm-Message-State: AOJu0YzDzoO/LQMoWOtMzV5L7KQbX+zAulIBH1e7uWvERcBRh0RKD9bP 5jpo7978aRYSPTK2m3C4fIvPKs0KNWx0zvuaIoR5wfvzlFI5bJ46 X-Google-Smtp-Source: AGHT+IHaAovjBg6nKGGxExBqSVN3nKLnJQ7A00wB/cG/M2n+T91mLtB6z0QJ19exL7H4aiZkcEREAA== X-Received: by 2002:a05:6512:3e20:b0:515:b140:6c0f with SMTP id i32-20020a0565123e2000b00515b1406c0fmr983954lfv.27.1711382179551; Mon, 25 Mar 2024 08:56:19 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:ac2:4c81:0:b0:513:c2e6:28da with SMTP id d1-20020ac24c81000000b00513c2e628dals281873lfl.0.-pod-prod-06-eu; Mon, 25 Mar 2024 08:56:17 -0700 (PDT) X-Received: by 2002:ac2:498e:0:b0:513:dbcd:7b87 with SMTP id f14-20020ac2498e000000b00513dbcd7b87mr4532534lfl.45.1711382177498; Mon, 25 Mar 2024 08:56:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711382177; cv=none; d=google.com; s=arc-20160816; b=DZgH2Hmsy3SfKQrta6FXJ4RqGTtcs9xJu041VCQTDUQmHz8gVYhAIJDyZoN+JDyIWL WCmLFnztidqg8q9MoBJNyMcvPLo+THzeyOYE7HACau2/oePtsCF1LHUY1/Nhbk7YfedV O2BN8BHW4TRvl43SSZUZc56Er7OTln+Ax7CNALQWdobhzKhji7JhM7nXnNy0diici1/o 8kRiAYcMtADdWlryybb3TGncP2uUavu+PxB6uFHy3Fbd+qDAR4Xe7/B7xsYidjrulDh9 P01BO+2n6W4uQlTCegEprCwXCaYbzuzpqFSVKST0yUjpwNd9IEyQME7+qJ3jZOz3R8qP ixTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=cp27DMs6HXA9cA7l4H3j5M7E2QPz6yMP7aDaCPm0FEM=; fh=/h9QQkzJ8EboVkWg45aWwpaUro6WMavIVd2OhN45RtE=; b=GkcvwqaX0KZyDHU9KhAjYZSyqMJdaOlBHw4EZ+7rwe1qAaJnpsaFMC7zcFZKQvNQWI r/GhP8vsmQxLrQsKzINilqzetNiIPaOL0rIoszPCH3nP09YjIcSCz/50vcAn8MRngcO/ pYHGMA+mpK4/MZqrIPheVGu74mC2mu6su6EM9fjVlutUFe/EhF7GEtQP158adQ/3TAYv SGePtIdhiZAtDULA9Zbt//zudQPa956PlcIqZl2KNWIDvsC1AOjrUO8aE1Ubhnugqhhe KKCdPTDnrzsCvlL74PaVKqjv5/OLr44ZuyW/eRLz67NpSkMviAsSTD4DO92kfCEZDOJb yaqQ==; dara=google.com 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 Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id p13-20020a05651211ed00b0051584d7f6a3si153918lfs.8.2024.03.25.08.56.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 25 Mar 2024 08:56: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; Received: from user-B660.promwad.corp ([159.148.83.123]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 42PFtnLW011703 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Mar 2024 16:56:16 +0100 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH 23/23] CI: Add make world test case Date: Mon, 25 Mar 2024 17:55:40 +0200 Message-Id: <20240325155540.4162990-24-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240325155540.4162990-1-amikan@ilbers.de> References: <20240325155540.4162990-1-amikan@ilbers.de> MIME-Version: 1.0 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS 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-Original-Sender: amikan@ilbers.de X-Original-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 Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Add test case which builds all available targets. Single bitbake usage (directly from mc.conf): $ avocado run testsuite/citest.py -t world Multiple bitbakes usage (from generated yaml file): $ avocado run testsuite/citest.py -t world -m testsuite/data/targets.yml There is also a script to regenerate yaml from mc.conf: $ ./testsuite/utils/targets_gen.py Signed-off-by: Anton Mikanovich --- .gitignore | 2 +- scripts/ci_build.sh | 7 +- testsuite/cibuilder.py | 21 ++++++ testsuite/citest.py | 24 +++++++ testsuite/data/targets.yml | 118 +++++++++++++++++++++++++++++++++ testsuite/utils/targets_gen.py | 27 ++++++++ 6 files changed, 197 insertions(+), 2 deletions(-) create mode 100644 testsuite/data/targets.yml create mode 100755 testsuite/utils/targets_gen.py diff --git a/.gitignore b/.gitignore index b1b51dd4..7f5ab1ad 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ /*.patch __pycache__ .config.yaml* -build/ +build* diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index 5903cbe5..c8ca84ad 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -49,6 +49,7 @@ show_help() { echo " -b, --base BASE_DIR set path to base directory. If not set," echo " the tests will be started in current path." echo " -d, --debug enable debug bitbake output." + echo " -m, --muxfile input file for yaml-to-mux plugin." echo " -T, --tags specify basic avocado tags." echo " --help display this message and exit." echo @@ -94,6 +95,10 @@ do NORUN="1" echo "warning: deprecated parameter '$key', consider using '-T ,-startvm' instead" ;; + -m|--muxfile) + MUXFILE="-m $2" + shift + ;; -t|--timeout) TIMEOUT="-p time_to_wait=$2" shift @@ -150,4 +155,4 @@ set -x avocado ${VERBOSE} --config "${BASE_DIR}/avocado.conf" run "${TESTFILE}" \ -t "${TAGS}" --max-parallel-tasks=1 --disable-sysinfo \ - ${SSTATE} ${TIMEOUT} + ${SSTATE} ${MUXFILE} ${TIMEOUT} diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py index cc589b1f..cef52e63 100755 --- a/testsuite/cibuilder.py +++ b/testsuite/cibuilder.py @@ -231,6 +231,15 @@ class CIBuilder(Test): except FileNotFoundError: self.log.warn(path + backup_prefix + ' not exist') + def get_test_images(self): + return ['isar-image-base', 'isar-image-ci'] + + def get_targets(self): + d = bb.data.init() + d.setVar('BBPATH', os.path.join(isar_root, 'meta-isar')) + d = bb.cookerdata.parse_config_file('conf/mc.conf', d, False) + return d.getVar('BBMULTICONFIG').split() + def getVars(self, *vars, target=None): self.check_init() def fixStream(stream): @@ -263,6 +272,18 @@ class CIBuilder(Test): values = values + (tinfoil.config_data.getVar(var, True) or 'None',) return values if len(values) > 1 else values[0] + def gen_targets_yaml(self, fn='targets.yml'): + targetsfile = os.path.join(os.path.dirname(__file__), 'data', fn) + with open(targetsfile, 'w') as f: + f.write('a: !mux\n') + for target in self.get_targets(): + f.write(f' {target}:\n name: {target}\n') + f.write('b: !mux\n') + prefix = 'isar-image-' + for image in self.get_test_images(): + nodename = image[image.startswith(prefix) and len(prefix):] + f.write(f' {nodename}:\n image: {image}\n') + def create_tmp_layer(self): tmp_layer_dir = os.path.join(isar_root, 'meta-tmp') diff --git a/testsuite/citest.py b/testsuite/citest.py index 395b2965..7b504989 100755 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -5,6 +5,7 @@ import os from avocado import skipUnless from avocado.utils import path from cibase import CIBaseTest +from cibuilder import isar_root UMOCI_AVAILABLE = True SKOPEO_AVAILABLE = True @@ -808,3 +809,26 @@ class VmBootFull(CIBaseTest): self.init() self.vm_start('mipsel','bookworm', image='isar-image-ci', script='test_kernel_module.sh example_module') + +class World(CIBaseTest): + + """ + All targets build test + + :avocado: tags=world + """ + def test_world(self): + name = self.params.get('name') + image = self.params.get('image', default='isar-image-ci') + targets = [] + + if name is None: + self.init() + for target in self.get_targets(): + for image in self.get_test_images(): + targets.append(f'mc:{target}:{image}') + else: + targets.append(f'mc:{name}:{image}') + self.init(f'build-{name}') + + self.perform_build_test(targets, container=True) diff --git a/testsuite/data/targets.yml b/testsuite/data/targets.yml new file mode 100644 index 00000000..21fd0522 --- /dev/null +++ b/testsuite/data/targets.yml @@ -0,0 +1,118 @@ +a: !mux + qemuarm-buster: + name: qemuarm-buster + qemuarm-bullseye: + name: qemuarm-bullseye + qemuarm-bookworm: + name: qemuarm-bookworm + qemuarm-trixie: + name: qemuarm-trixie + qemuarm64-buster: + name: qemuarm64-buster + qemuarm64-bullseye: + name: qemuarm64-bullseye + qemuarm64-bookworm: + name: qemuarm64-bookworm + qemuarm64-trixie: + name: qemuarm64-trixie + qemui386-buster: + name: qemui386-buster + qemui386-bullseye: + name: qemui386-bullseye + qemui386-bookworm: + name: qemui386-bookworm + qemuamd64-buster: + name: qemuamd64-buster + qemuamd64-bullseye: + name: qemuamd64-bullseye + qemuamd64-sb-bullseye: + name: qemuamd64-sb-bullseye + qemuamd64-bookworm: + name: qemuamd64-bookworm + qemuamd64-trixie: + name: qemuamd64-trixie + container-amd64-buster: + name: container-amd64-buster + container-amd64-bullseye: + name: container-amd64-bullseye + container-amd64-bookworm: + name: container-amd64-bookworm + qemumipsel-buster: + name: qemumipsel-buster + qemumipsel-bullseye: + name: qemumipsel-bullseye + qemumipsel-bookworm: + name: qemumipsel-bookworm + qemuriscv64-sid: + name: qemuriscv64-sid + bananapi-buster: + name: bananapi-buster + bananapi-bullseye: + name: bananapi-bullseye + bananapi-bookworm: + name: bananapi-bookworm + beagleplay-bookworm: + name: beagleplay-bookworm + de0-nano-soc-buster: + name: de0-nano-soc-buster + de0-nano-soc-bullseye: + name: de0-nano-soc-bullseye + de0-nano-soc-bookworm: + name: de0-nano-soc-bookworm + hikey-bullseye: + name: hikey-bullseye + hikey-bookworm: + name: hikey-bookworm + imx6-sabrelite-buster: + name: imx6-sabrelite-buster + imx6-sabrelite-bullseye: + name: imx6-sabrelite-bullseye + phyboard-mira-bullseye: + name: phyboard-mira-bullseye + nanopi-neo-buster: + name: nanopi-neo-buster + nanopi-neo-bullseye: + name: nanopi-neo-bullseye + nanopi-neo-bookworm: + name: nanopi-neo-bookworm + nanopi-neo-efi-bookworm: + name: nanopi-neo-efi-bookworm + stm32mp15x-bullseye: + name: stm32mp15x-bullseye + virtualbox-bullseye: + name: virtualbox-bullseye + virtualbox-bookworm: + name: virtualbox-bookworm + rpi-arm-bullseye: + name: rpi-arm-bullseye + rpi-arm-bookworm: + name: rpi-arm-bookworm + rpi-arm-v7-bullseye: + name: rpi-arm-v7-bullseye + rpi-arm-v7-bookworm: + name: rpi-arm-v7-bookworm + rpi-arm-v7l-bullseye: + name: rpi-arm-v7l-bullseye + rpi-arm-v7l-bookworm: + name: rpi-arm-v7l-bookworm + rpi-arm64-v8-bullseye: + name: rpi-arm64-v8-bullseye + rpi-arm64-v8-bookworm: + name: rpi-arm64-v8-bookworm + sifive-fu540-sid: + name: sifive-fu540-sid + starfive-visionfive2-sid: + name: starfive-visionfive2-sid + qemuarm64-focal: + name: qemuarm64-focal + qemuarm64-jammy: + name: qemuarm64-jammy + qemuamd64-focal: + name: qemuamd64-focal + qemuamd64-jammy: + name: qemuamd64-jammy +b: !mux + base: + image: isar-image-base + ci: + image: isar-image-ci diff --git a/testsuite/utils/targets_gen.py b/testsuite/utils/targets_gen.py new file mode 100755 index 00000000..49e00dd6 --- /dev/null +++ b/testsuite/utils/targets_gen.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +""" +# This software is a part of Isar. +# Copyright (C) 2024 ilbers GmbH + +# targets_gen.py: Generates yaml for yaml-to-mux Avocado varianter plugin. +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '/..') +from cibuilder import CIBuilder + +class TGen(CIBuilder): + def __init__(self): + super(CIBuilder, self).__init__() + self.gen_targets_yaml() + def test(): + pass + +def main(): + TGen() + +if __name__ == "__main__": + main()