diff options
Diffstat (limited to 'scripts/test_scripts/block-clone-test.sh')
| -rwxr-xr-x | scripts/test_scripts/block-clone-test.sh | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/scripts/test_scripts/block-clone-test.sh b/scripts/test_scripts/block-clone-test.sh deleted file mode 100755 index 7c6bf5605..000000000 --- a/scripts/test_scripts/block-clone-test.sh +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env bash -# Test block-clone functionality on temporary Btrfs and XFS loopback filesystems. -# -# Requires: root/sudo, btrfs-progs (mkfs.btrfs), xfsprogs (mkfs.xfs) -# -# Usage: -# sudo ./scripts/test_scripts/block-clone-test.sh [path-to-zencore-test] -# -# If no path is given, defaults to build/linux/x86_64/debug/zencore-test -# relative to the repository root. -# -# Options: -# --btrfs-only Only test Btrfs -# --xfs-only Only test XFS - -set -euo pipefail - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" - -TEST_BINARY="" -RUN_BTRFS=true -RUN_XFS=true - -for arg in "$@"; do - case "$arg" in - --btrfs-only) RUN_XFS=false ;; - --xfs-only) RUN_BTRFS=false ;; - *) TEST_BINARY="$arg" ;; - esac -done - -TEST_BINARY="${TEST_BINARY:-$REPO_ROOT/build/linux/x86_64/debug/zencore-test}" -IMAGE_SIZE="512M" -TEST_CASES="TryCloneFile,CopyFile.Clone,SupportsBlockRefCounting,CloneQueryInterface" - -# Track all temp files for cleanup -CLEANUP_MOUNTS=() -CLEANUP_DIRS=() -CLEANUP_FILES=() - -cleanup() { - local exit_code=$? - set +e - - for mnt in "${CLEANUP_MOUNTS[@]}"; do - if mountpoint -q "$mnt" 2>/dev/null; then - umount "$mnt" - fi - done - for dir in "${CLEANUP_DIRS[@]}"; do - [ -d "$dir" ] && rmdir "$dir" - done - for f in "${CLEANUP_FILES[@]}"; do - [ -f "$f" ] && rm -f "$f" - done - - if [ $exit_code -ne 0 ]; then - echo "FAILED (exit code $exit_code)" - fi - exit $exit_code -} -trap cleanup EXIT - -# --- Preflight checks --- - -if [ "$(id -u)" -ne 0 ]; then - echo "error: this script must be run as root (for mount/umount)" >&2 - exit 1 -fi - -if [ ! -x "$TEST_BINARY" ]; then - echo "error: test binary not found or not executable: $TEST_BINARY" >&2 - echo "hint: build with 'xmake config -m debug && xmake build zencore-test'" >&2 - exit 1 -fi - -if $RUN_BTRFS && ! command -v mkfs.btrfs &>/dev/null; then - echo "warning: mkfs.btrfs not found — install btrfs-progs to test Btrfs, skipping" >&2 - RUN_BTRFS=false -fi - -if $RUN_XFS && ! command -v mkfs.xfs &>/dev/null; then - echo "warning: mkfs.xfs not found — install xfsprogs to test XFS, skipping" >&2 - RUN_XFS=false -fi - -if ! $RUN_BTRFS && ! $RUN_XFS; then - echo "error: no filesystems to test" >&2 - exit 1 -fi - -# --- Helper to create, mount, and run tests on a loopback filesystem --- - -run_tests_on_fs() { - local fs_type="$1" - local mkfs_cmd="$2" - - echo "" - echo "========================================" - echo " Testing block-clone on $fs_type" - echo "========================================" - - local image_path mount_path - image_path="$(mktemp "/tmp/${fs_type}-clone-test-XXXXXX.img")" - mount_path="$(mktemp -d "/tmp/${fs_type}-clone-mount-XXXXXX")" - CLEANUP_FILES+=("$image_path") - CLEANUP_DIRS+=("$mount_path") - CLEANUP_MOUNTS+=("$mount_path") - - echo "Creating ${IMAGE_SIZE} ${fs_type} image at ${image_path} ..." - truncate -s "$IMAGE_SIZE" "$image_path" - $mkfs_cmd "$image_path" - - echo "Mounting at ${mount_path} ..." - mount -o loop "$image_path" "$mount_path" - chmod 777 "$mount_path" - - echo "Copying test binary ..." - cp "$TEST_BINARY" "$mount_path/zencore-test" - chmod +x "$mount_path/zencore-test" - - echo "Running tests ..." - echo "---" - "$mount_path/zencore-test" \ - --test-suite="core.filesystem" \ - --test-case="$TEST_CASES" - echo "---" - echo "$fs_type: all block-clone tests passed." -} - -# --- Run --- - -if $RUN_BTRFS; then - run_tests_on_fs "btrfs" "mkfs.btrfs -q" -fi - -if $RUN_XFS; then - run_tests_on_fs "xfs" "mkfs.xfs -q -m reflink=1" -fi - -echo "" -echo "All block-clone tests passed." |