From 3b8db3d7bede084f6bb242436917899a0e00519f Mon Sep 17 00:00:00 2001 From: Justin Husted Date: Sat, 28 Dec 2019 15:16:09 -0800 Subject: [PATCH] bcachefs-tools: Add a smoke test master script. This script builds and runs with various options to enable easy test coverage. Signed-off-by: Justin Husted --- Makefile | 5 +++- smoke_test | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100755 smoke_test diff --git a/Makefile b/Makefile index 2f6531b6..25de546a 100644 --- a/Makefile +++ b/Makefile @@ -71,8 +71,11 @@ endif .PHONY: all all: bcachefs +.PHONY: tests +tests: tests/test_helper + .PHONY: check -check: tests/test_helper bcachefs +check: tests bcachefs cd tests; $(PYTEST) .PHONY: TAGS tags diff --git a/smoke_test b/smoke_test new file mode 100755 index 00000000..076806d8 --- /dev/null +++ b/smoke_test @@ -0,0 +1,82 @@ +#!/bin/bash +# +# This is a smoke test of bcachefs-tools. +# +# It builds the source with multiple options (debug, release, valgrind, FUSE) +# and runs the test suite. +# +# Returns 0 on success, nonzero on any failure. +# +# Dependencies: +# +# valgrind, python3-pytest, python3-pytest-xdist +# +# On debian/ubuntu based systems, install with: +# +# apt install valgrind python3-pytest python3-pytest-xdist +# +# You also currently need fuse 3.7 or later. Fuse 3.7 unfortunately requires +# debian sid or bullseye at this time, so you may need to install from source. + +set -e + +spam=$(tempfile) +unset BCACHEFS_FUSE BCACHEFS_TEST_USE_VALGRIND D + +trap "set +x; cat ${spam}; rm -f ${spam} ; echo; echo FAILED." EXIT + +echo -- Verify dependencies -- +pkg-config --atleast-version 3.7.0 fuse3 +python3 -c "import pytest" +python3 -c "import xdist" +which valgrind > /dev/null +echo OK + +JOBS=$(nproc) +function build() { + echo Building. + make -j ${JOBS} clean > ${spam} 2>&1 + make -j ${JOBS} tests bcachefs > ${spam} 2>&1 + truncate -s0 ${spam} +} + +function test() { + echo Running tests. + ( + cd tests + pytest-3 -n${JOBS} + ) > ${spam} 2>&1 +} + +function test_vg() { + echo Running tests with valgrind. + ( + export BCACHEFS_TEST_USE_VALGRIND=yes + cd tests + pytest-3 -n${JOBS} + ) > ${spam} 2>&1 +} + + +echo -- Test: default -- +build +test + +echo -- Test: debug -- +export D=1 +build +test + +echo -- Test: debug with valgrind -- +test_vg + +echo -- Test: fuse debug -- +export BCACHEFS_FUSE=1 +build +test + +echo -- Test: fuse debug with valgrind -- +test_vg + +rm -f ${spam} +trap "set +x; echo; echo SUCCESS." EXIT