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.
This commit is contained in:
Mike Yuan 2023-09-18 20:31:59 +08:00
parent efb6a76a2a
commit 2b344ea808
No known key found for this signature in database
GPG key ID: 417471C0A40F58B3
7 changed files with 96 additions and 0 deletions

View file

@ -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,

View file

@ -0,0 +1,33 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#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;
}

1
test/TEST-83-BTRFS/Makefile Symbolic link
View file

@ -0,0 +1 @@
../TEST-01-BASIC/Makefile

View file

25
test/TEST-83-BTRFS/test.sh Executable file
View file

@ -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 "$@"

View file

@ -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

25
test/units/testsuite-83.sh Executable file
View file

@ -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