From: David Gibson <david@gibson.dropbear.id.au>
To: passt-dev@passt.top, Stefano Brivio <sbrivio@redhat.com>
Cc: jarichte@redhat.com, Cleber Rosa <crosa@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [PATCH v2 07/21] avocado: Convert build tests to avocado
Date: Tue, 16 May 2023 12:01:21 +1000 [thread overview]
Message-ID: <20230516020135.1901256-8-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20230516020135.1901256-1-david@gibson.dropbear.id.au>
Move the build and make install tests from the old hand-rolled test
harness to avocado. The avocado versions are safer, in that they make a
private copy of the sources before building, so they won't interfere with
concurrent tests or builds in the original source tree.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
# Conflicts:
# avocado/tasst/site.py
---
avocado/build.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++
oldtest/run | 2 +-
test/build/all | 61 ---------------------------------------
test/lib/setup | 7 -----
test/run | 4 ---
5 files changed, 76 insertions(+), 73 deletions(-)
create mode 100644 avocado/build.py
delete mode 100644 test/build/all
diff --git a/avocado/build.py b/avocado/build.py
new file mode 100644
index 0000000..d0b3274
--- /dev/null
+++ b/avocado/build.py
@@ -0,0 +1,75 @@
+#! /usr/bin/python3
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# avocado/build.py - Test various make targets
+#
+# Copyright Red Hat
+# Author: David Gibson <david@gibson.dropbear.id.au>
+
+import os
+import os.path
+import shutil
+import sys
+
+import tasst
+from tasst.site import CmdError, REAL_HOST
+
+
+class BuildTasst(tasst.Tasst):
+ # Some of these can take a little while
+ timeout = 60.0
+
+ def setUp(self):
+ super().setUp()
+
+ REAL_HOST.require_cmds('git', 'make')
+
+ # Make a temporary copy of the sources
+ srcfiles = REAL_HOST.output('git ls-files').decode('utf-8').splitlines()
+ for src in srcfiles:
+ dst = os.path.join(self.workdir, src)
+ os.makedirs(os.path.dirname(dst), exist_ok=True)
+ shutil.copy(src, dst)
+ os.chdir(self.workdir)
+
+ def build_target(self, target, outputs):
+ self.assertFalse(any(os.path.exists(o) for o in outputs))
+ REAL_HOST.fg('make {} CFLAGS="-Werror"'.format(target))
+ self.assertTrue(all(os.path.exists(o) for o in outputs))
+ REAL_HOST.fg('make clean')
+ self.assertFalse(any(os.path.exists(o) for o in outputs))
+
+ def test_make_passt(self):
+ self.build_target('passt', ['passt'])
+
+ def test_make_pasta(self):
+ self.build_target('pasta', ['pasta'])
+
+ def test_make_qrap(self):
+ self.build_target('qrap', ['qrap'])
+
+ def test_make_all(self):
+ self.build_target('all', ['passt', 'pasta', 'qrap'])
+
+ def test_make_install_uninstall(self):
+ prefix = os.path.join(self.workdir, "prefix")
+ os.makedirs(prefix)
+
+ bindir = os.path.join(prefix, 'bin')
+ mandir = os.path.join(prefix, 'share', 'man')
+ exes = ['passt', 'pasta', 'qrap']
+
+ # Install
+ REAL_HOST.fg('make install CFLAGS="-Werror" prefix={}'.format(prefix))
+
+ for t in exes:
+ self.assertTrue(os.path.isfile(os.path.join(bindir, t)))
+ REAL_HOST.fg('man -M {} -W passt'.format(mandir))
+
+ # Uninstall
+ REAL_HOST.fg('make uninstall prefix={}'.format(prefix))
+
+ for t in exes:
+ self.assertFalse(os.path.exists(os.path.join(bindir, t)))
+ self.assertRaises(CmdError, REAL_HOST.fg, 'man -M {} -W passt'.format(mandir))
diff --git a/oldtest/run b/oldtest/run
index 56fcd1b..a16bc49 100755
--- a/oldtest/run
+++ b/oldtest/run
@@ -65,7 +65,7 @@ run() {
[ ${CI} -eq 1 ] && video_start ci
setup build
-# test build/all
+ test build/all
test build/cppcheck
test build/clang_tidy
teardown build
diff --git a/test/build/all b/test/build/all
deleted file mode 100644
index 1f79e0d..0000000
--- a/test/build/all
+++ /dev/null
@@ -1,61 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-#
-# PASST - Plug A Simple Socket Transport
-# for qemu/UNIX domain socket mode
-#
-# PASTA - Pack A Subtle Tap Abstraction
-# for network namespace/tap device mode
-#
-# test/build/all - Build targets, one by one, then all together, check output
-#
-# Copyright (c) 2021 Red Hat GmbH
-# Author: Stefano Brivio <sbrivio@redhat.com>
-
-htools make cc rm uname getconf mkdir cp rm man
-
-test Build passt
-host make clean
-check ! [ -e passt ]
-host CFLAGS="-Werror" make passt
-check [ -f passt ]
-
-test Build pasta
-host make clean
-check ! [ -e pasta ]
-host CFLAGS="-Werror" make pasta
-check [ -h pasta ]
-
-test Build qrap
-host make clean
-check ! [ -e qrap ]
-host CFLAGS="-Werror" make qrap
-check [ -f qrap ]
-
-test Build all
-host make clean
-check ! [ -e passt ]
-check ! [ -e pasta ]
-check ! [ -e qrap ]
-host CFLAGS="-Werror" make
-check [ -f passt ]
-check [ -h pasta ]
-check [ -f qrap ]
-
-test Install
-host mkdir __STATEDIR__/prefix
-host prefix=__STATEDIR__/prefix make install
-check [ -f __STATEDIR__/prefix/bin/passt ]
-check [ -h __STATEDIR__/prefix/bin/pasta ]
-check [ -f __STATEDIR__/prefix/bin/qrap ]
-check man -M __STATEDIR__/prefix/share/man -W passt
-check man -M __STATEDIR__/prefix/share/man -W pasta
-check man -M __STATEDIR__/prefix/share/man -W qrap
-
-test Uninstall
-host prefix=__STATEDIR__/prefix make uninstall
-check ! [ -f __STATEDIR__/prefix/bin/passt ]
-check ! [ -h __STATEDIR__/prefix/bin/pasta ]
-check ! [ -f __STATEDIR__/prefix/bin/qrap ]
-check ! man -M __STATEDIR__/prefix/share/man -W passt 2>/dev/null
-check ! man -M __STATEDIR__/prefix/share/man -W pasta 2>/dev/null
-check ! man -M __STATEDIR__/prefix/share/man -W qrap 2>/dev/null
diff --git a/test/lib/setup b/test/lib/setup
index 9b39b9f..5386805 100755
--- a/test/lib/setup
+++ b/test/lib/setup
@@ -18,13 +18,6 @@ VCPUS="$( [ $(nproc) -ge 8 ] && echo 6 || echo $(( $(nproc) / 2 + 1 )) )"
__mem_kib="$(sed -n 's/MemTotal:[ ]*\([0-9]*\) kB/\1/p' /proc/meminfo)"
VMEM="$((${__mem_kib} / 1024 / 4))"
-# setup_build() - Set up pane layout for build tests
-setup_build() {
- context_setup_host host
-
- layout_host
-}
-
# setup_passt() - Start qemu and passt
setup_passt() {
context_setup_host host
diff --git a/test/run b/test/run
index ce24f44..b800022 100755
--- a/test/run
+++ b/test/run
@@ -64,10 +64,6 @@ run() {
perf_init
[ ${CI} -eq 1 ] && video_start ci
- setup build
- test build/all
- teardown build
-
setup pasta
test pasta/ndp
test pasta/dhcp
--
@@ -64,10 +64,6 @@ run() {
perf_init
[ ${CI} -eq 1 ] && video_start ci
- setup build
- test build/all
- teardown build
-
setup pasta
test pasta/ndp
test pasta/dhcp
--
2.40.1
next prev parent reply other threads:[~2023-05-16 2:01 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-16 2:01 [PATCH v2 00/21] RFCv2: Proof-of-concept conversion of some tests to Avocado framework David Gibson
2023-05-16 2:01 ` [PATCH v2 01/21] test/nstool: Provide useful error if given a path that's too long David Gibson
2023-05-16 2:01 ` [PATCH v2 02/21] test/nstool: Fix fd leak in accept() loop David Gibson
2023-05-16 2:01 ` [PATCH v2 03/21] avocado: Make a duplicate copy of testsuite for comparison purposes David Gibson
2023-05-16 2:01 ` [PATCH v2 04/21] avocado: Don't double download assets for test/ and oldtest/ David Gibson
2023-05-16 2:01 ` [PATCH v2 05/21] avocado: Move static checkers to avocado David Gibson
2023-05-16 2:01 ` [PATCH v2 06/21] avocado/tasst: Helper functions for executing commands in different places David Gibson
2023-05-16 2:01 ` David Gibson [this message]
2023-05-16 2:01 ` [PATCH v2 08/21] avocado/tasst: Add helpers for running background commands on sites David Gibson
2023-05-16 2:01 ` [PATCH v2 09/21] avocado/tasst: Add helper to get network interface names for a site David Gibson
2023-05-16 2:01 ` [PATCH v2 10/21] avocado/tasst: Add helpers to run commands with nstool David Gibson
2023-05-16 2:01 ` [PATCH v2 11/21] avocado/tasst: Add ifup and network address helpers to Site David Gibson
2023-05-16 2:01 ` [PATCH v2 12/21] avocado/tasst: Helper for creating veth devices between namespaces David Gibson
2023-05-16 2:01 ` [PATCH v2 13/21] avocado/tasst: Add helper for getting MTU of a network interface David Gibson
2023-05-16 2:01 ` [PATCH v2 14/21] avocado/tasst: Add helper to wait for IP address to appear David Gibson
2023-05-16 2:01 ` [PATCH v2 15/21] avocado/tasst: Add helpers for getting a site's routes David Gibson
2023-05-16 2:01 ` [PATCH v2 16/21] avocado/tasst: Helpers for test transferring data between sites David Gibson
2023-05-16 2:01 ` [PATCH v2 17/21] avocado/tasst: IP address allocation helpers David Gibson
2023-05-16 2:01 ` [PATCH v2 18/21] avocado/tasst: Helpers for testing NDP behaviour David Gibson
2023-05-16 2:01 ` [PATCH v2 19/21] avocado/tasst: Helpers for testing DHCP & DHCPv6 behaviour David Gibson
2023-05-16 2:01 ` [PATCH v2 20/21] avocado/tasst: Helpers to construct a simple network environment for tests David Gibson
2023-05-16 2:01 ` [PATCH v2 21/21] avocado: Convert basic pasta tests David Gibson
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=20230516020135.1901256-8-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=crosa@redhat.com \
--cc=jarichte@redhat.com \
--cc=passt-dev@passt.top \
--cc=sbrivio@redhat.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.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).