From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7214004495725887488 X-Received: by 2002:a63:2004:0:b0:4fc:2369:811 with SMTP id g4-20020a632004000000b004fc23690811mr328287pgg.6.1679641310879; Fri, 24 Mar 2023 00:01:50 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:903:1ca:b0:1a1:f67e:e4c4 with SMTP id e10-20020a17090301ca00b001a1f67ee4c4ls1006602plh.8.-pod-prod-gmail; Fri, 24 Mar 2023 00:01:50 -0700 (PDT) X-Google-Smtp-Source: AKy350Y+EvS/Uj/1mk/zuRblEIdHV7wLLEutqDpjDnj3pFUavkVqa8IXuXSz4zp3oIV8GXpP0dk6 X-Received: by 2002:a17:903:210b:b0:1a1:b440:375f with SMTP id o11-20020a170903210b00b001a1b440375fmr1344005ple.65.1679641309882; Fri, 24 Mar 2023 00:01:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679641309; cv=none; d=google.com; s=arc-20160816; b=mp54uQlJdZ+cNYaqfytJXkYlIBNZVOJcPE94xs80cNAObTRqJNMqnuyPdJGeE4FcaN 8QpA01tbDRiT3jShmJpGErolzBWBv8VW81gH+5qZSByJ1DgcUzDXMew9Tmp/ZJulCGDj tskwSQxjId1Dxgws1FDm1ttzD4Rj7WvXVDJDkrZXAcMLMlj50jw5NYX85kVotBItzL2B g2BcO9sCY4JyI1Z1C94ICiH6k2Viz/uIXMJjXS7b0eRmCcKGBrc4JREI4QPhLQKd2ZhY UfH5u3Ffz7+pQmPFjIRhTxumd+BG1NeUQuoZcyTqB0i7kahs2eT5IKRnZk9O9J//cS1h s3Bw== 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:to:from; bh=tOUWtp5Jknj3drLroWYhBs/mT9rbhEyjrx6wNN02VSI=; b=wBTFVgouCvjdJG147eBEQXoFTLq1E+7OlVq0yWC8iA7I/ppDJ+FxVGUBqz9A4ZrLKO dyCLJXtDqpPUjVANU7OyGTM4s91YTVgfqfL0GEyNujiC5+zuJfT+tAlXGtvDdE8mo5iv CcE9NkZAEahgQzMtKa1Z7QAY7SAHZzqkyPFPXZ8d87Lmf0iJLBRa+Hdm1ivM3otOPpna lizPQAj3oUr0geR3aUMJMKtVFi8epkfftykxwOin4x+DGCyS20UI2iwTiauyO07cEHWt oW6tqabtvh6yxhGUFej63g6BGg/7RexRo8iCQpTR7Ev+harLvmRq08iNcj150TMLVeFA YDTg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id l19-20020a170902eb1300b001a1bbb118a4si582372plb.4.2023.03.24.00.01.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 Mar 2023 00:01:49 -0700 (PDT) Received-SPF: pass (google.com: domain of ubely@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 ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from baighyz.m.ilbers.de (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 32O71gCr007069 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 24 Mar 2023 08:01:44 +0100 From: Uladzimir Bely To: isar-users@googlegroups.com Subject: [PATCH v2 3/3] testsuite: Exmaple of custom testcase for downstreams Date: Fri, 24 Mar 2023 08:01:42 +0100 Message-Id: <20230324070142.27122-4-ubely@ilbers.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20230324070142.27122-1-ubely@ilbers.de> References: <20230324070142.27122-1-ubely@ilbers.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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: Nlg2lkCYRpiX Provide a complete example of testsuite implementation on the downstream side in their own testcase directory. Signed-off-by: Uladzimir Bely --- meta-isar/test/.gitignore | 2 ++ meta-isar/test/README.md | 16 ++++++++++ meta-isar/test/run_test.sh | 39 +++++++++++++++++++++++++ meta-isar/test/sample_kas_config.yml | 32 ++++++++++++++++++++ meta-isar/test/sample_test.py | 9 ++++++ meta-isar/test/scripts/sample_script.sh | 7 +++++ testsuite/README.md | 19 ++++++++++++ 7 files changed, 124 insertions(+) create mode 100644 meta-isar/test/.gitignore create mode 100644 meta-isar/test/README.md create mode 100755 meta-isar/test/run_test.sh create mode 100644 meta-isar/test/sample_kas_config.yml create mode 100644 meta-isar/test/sample_test.py create mode 100755 meta-isar/test/scripts/sample_script.sh diff --git a/meta-isar/test/.gitignore b/meta-isar/test/.gitignore new file mode 100644 index 00000000..fd87a392 --- /dev/null +++ b/meta-isar/test/.gitignore @@ -0,0 +1,2 @@ +build/ +isar/ diff --git a/meta-isar/test/README.md b/meta-isar/test/README.md new file mode 100644 index 00000000..f8c6338c --- /dev/null +++ b/meta-isar/test/README.md @@ -0,0 +1,16 @@ +# Example of the downstream testcase + +Use `meta-isar/test/` as working directory. Make sure `kas-container` is +available in $PATH (look at https://github.com/siemens/kas for it). + +Build an image: + +``` +kas-container build sample_kas_config.yml +``` + +Run testcase: + +``` +kas-container shell sample_kas_config.yml -c '/work/run_test.sh' +``` diff --git a/meta-isar/test/run_test.sh b/meta-isar/test/run_test.sh new file mode 100755 index 00000000..c4a7d4ac --- /dev/null +++ b/meta-isar/test/run_test.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# Make Isar testsuite accessable +export PYTHONPATH=${PYTHONPATH}:${TESTSUITEDIR} + +# install avocado in virtualenv in case it is not there already +if ! command -v avocado > /dev/null; then + sudo apt-get -y update + sudo apt-get -y install virtualenv + rm -rf /tmp/avocado_venv + virtualenv --python python3 /tmp/avocado_venv + source /tmp/avocado_venv/bin/activate + pip install avocado-framework==100.1 +fi + +# Install qemu +if ! command -v qemu-system-aarch64 > /dev/null; then + sudo apt-get -y update + sudo apt-get -y install --no-install-recommends qemu-system-aarch64 ipxe-qemu +fi + +# Start tests in this dir +BASE_DIR="/build/avocado" + +# Provide working path +mkdir -p .config/avocado +cat < .config/avocado/avocado.conf +[datadir.paths] +base_dir = ${BASE_DIR}/ +data_dir = ${BASE_DIR}/data +logs_dir = ${BASE_DIR}/logs +test_dir = ${BASE_DIR}/test +EOF +export VIRTUAL_ENV="./" + +tsd=$(dirname $(realpath $0))/scripts + +# Run SSH tests +avocado run --max-parallel-tasks=1 /work/sample_test.py -p test_script_dir=${tsd} diff --git a/meta-isar/test/sample_kas_config.yml b/meta-isar/test/sample_kas_config.yml new file mode 100644 index 00000000..e7635af8 --- /dev/null +++ b/meta-isar/test/sample_kas_config.yml @@ -0,0 +1,32 @@ +header: + version: 11 + +build_system: isar + +distro: debian-bullseye +machine: qemuarm64 +target: mc:qemuarm64-bullseye:isar-image-ci +repos: + isar: + url: "https://github.com/ilbers/isar.git" + refspec: next + layers: + meta: + meta-isar: + +bblayers_conf_header: + standard: | + BBPATH = "${TOPDIR}" + BBFILES ?= "" + +local_conf_header: + standard: | + DISTRO_ARCH ??= "arm64" + PATCHRESOLVE = "noop" + + USERS += "root" + USER_root[password] ??= "$6$rounds=10000$RXeWrnFmkY$DtuS/OmsAS2cCEDo0BF5qQsizIrq6jPgXnwv3PHqREJeKd1sXdHX/ayQtuQWVDHe0KIO0/sVH8dvQm1KthF0d/" + crossbuild: | + ISAR_CROSS_COMPILE = "1" + ccache: | + USE_CCACHE = "1" diff --git a/meta-isar/test/sample_test.py b/meta-isar/test/sample_test.py new file mode 100644 index 00000000..7020c6ff --- /dev/null +++ b/meta-isar/test/sample_test.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 + +from cibase import CIBaseTest + +class SampleTest(CIBaseTest): + def test_sample_script(self): + self.init("/build") + self.vm_start('arm64','bullseye', image='isar-image-ci', \ + script='sample_script.sh') diff --git a/meta-isar/test/scripts/sample_script.sh b/meta-isar/test/scripts/sample_script.sh new file mode 100755 index 00000000..38c0fc1e --- /dev/null +++ b/meta-isar/test/scripts/sample_script.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +sleep 10 + +systemctl is-active getty.target diff --git a/testsuite/README.md b/testsuite/README.md index cf2fdc10..b58a1013 100644 --- a/testsuite/README.md +++ b/testsuite/README.md @@ -121,3 +121,22 @@ And to execute this example: ``` $ avocado run sample.py:SampleTest.test_sample ``` + +## Using a different directory for custom testcases + +Downstreams may want to keep their testcases in a different directory +(e.g. `./test/sample.py` as top-level with test description) but reuse +classes implemented in Isar testsuite (e.g. `./isar/testsuite/*.py`). This is +a common case for downstream that use `kas` to handle layers they use. + +In this case it's important to adjust `PYTHONPATH` variable before running +avocado so that isar testsuite files could be found: + +``` +# TESTSUITEDIR="/work/isar/testsuite" +export PYTHONPATH=${PYTHONPATH}:${TESTSUITEDIR} +``` + +# Example of the downstream testcase + +See `meta-isar/test` for an example of the testcase for kas-based downstream. -- 2.20.1