From: Mike Yuan Date: Mon, 18 Sep 2023 12:31:59 +0000 (+0800) Subject: test: introduce TEST-83-BTRFS X-Git-Tag: v255-rc1~480^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2b344ea808dadb860396e7b95c5f0846db5d04b6;p=thirdparty%2Fsystemd.git test: introduce TEST-83-BTRFS The Ubuntu CIs are deny-listed because the shipped btrfs-progs is too old, i.e. doesn't support the recently-added 'filesystem mkswapfile' command. --- diff --git a/src/test/meson.build b/src/test/meson.build index 6d39006d092..2b3fe83a9f1 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -221,6 +221,10 @@ executables += [ 'sources' : files('test-btrfs.c'), 'type' : 'manual', }, + test_template + { + 'sources' : files('test-btrfs-physical-offset.c'), + 'type' : 'manual', + }, test_template + { 'sources' : files('test-cap-list.c') + generated_gperf_headers, diff --git a/src/test/test-btrfs-physical-offset.c b/src/test/test-btrfs-physical-offset.c new file mode 100644 index 00000000000..bcc6252381c --- /dev/null +++ b/src/test/test-btrfs-physical-offset.c @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include + +#include "btrfs-util.h" +#include "fd-util.h" +#include "format-util.h" +#include "log.h" +#include "memory-util.h" + +int main(int argc, char *argv[]) { + _cleanup_close_ int fd = -EBADF; + uint64_t offset; + int r; + + assert(argc == 2); + assert(!isempty(argv[1])); + + fd = open(argv[1], O_RDONLY|O_CLOEXEC|O_NOCTTY); + if (fd < 0) { + log_error_errno(fd, "Failed to open '%s': %m", argv[1]); + return EXIT_FAILURE; + } + + r = btrfs_get_file_physical_offset_fd(fd, &offset); + if (r < 0) { + log_error_errno(r, "Failed to get physical offset of '%s': %m", argv[1]); + return EXIT_FAILURE; + } + + printf("%" PRIu64 "\n", offset / page_size()); + return EXIT_SUCCESS; +} diff --git a/test/TEST-83-BTRFS/Makefile b/test/TEST-83-BTRFS/Makefile new file mode 120000 index 00000000000..e9f93b1104c --- /dev/null +++ b/test/TEST-83-BTRFS/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-83-BTRFS/deny-list-ubuntu-ci b/test/TEST-83-BTRFS/deny-list-ubuntu-ci new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/TEST-83-BTRFS/test.sh b/test/TEST-83-BTRFS/test.sh new file mode 100755 index 00000000000..5c32c517e17 --- /dev/null +++ b/test/TEST-83-BTRFS/test.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -e + +TEST_DESCRIPTION="test btrfs-util" + +TEST_NO_NSPAWN=1 +FSTYPE=btrfs +IMAGE_NAME="btrfs" +TEST_FORCE_NEWIMAGE=1 + +# shellcheck source=test/test-functions +. "${TEST_BASE_DIR:?}/test-functions" + +if ! command -v btrfs >/dev/null || ! command -v mkfs.btrfs >/dev/null; then + echo "TEST: $TEST_DESCRIPTION [SKIPPED]: btrfs not supported by host" >&2 + exit 0 +fi + +test_append_files() { + install_btrfs + image_install sync +} + +do_test "$@" diff --git a/test/units/testsuite-83.service b/test/units/testsuite-83.service new file mode 100644 index 00000000000..55ebb45730a --- /dev/null +++ b/test/units/testsuite-83.service @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[Unit] +Description=TEST-83-BTRFS + +[Service] +ExecStartPre=rm -f /failed /testok +ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh +Type=oneshot diff --git a/test/units/testsuite-83.sh b/test/units/testsuite-83.sh new file mode 100755 index 00000000000..a722c79d4e5 --- /dev/null +++ b/test/units/testsuite-83.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -eux +set -o pipefail + +TEST_BTRFS_OFFSET=/usr/lib/systemd/tests/unit-tests/manual/test-btrfs-physical-offset + +SWAPFILE=/var/tmp/swapfile + +btrfs filesystem mkswapfile -s 10m "$SWAPFILE" +sync -f "$SWAPFILE" + +offset_btrfs_progs="$(btrfs inspect-internal map-swapfile -r "$SWAPFILE")" +echo "btrfs-progs: $offset_btrfs_progs" + +offset_btrfs_util="$("$TEST_BTRFS_OFFSET" "$SWAPFILE")" +echo "btrfs-util: $offset_btrfs_util" + +(( offset_btrfs_progs == offset_btrfs_util )) + +rm -f "$SWAPFILE" + +/usr/lib/systemd/tests/unit-tests/manual/test-btrfs + +touch /testok