diff options
Diffstat (limited to '')
-rwxr-xr-x | src/spdk/test/dd/basic_rw.sh | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/spdk/test/dd/basic_rw.sh b/src/spdk/test/dd/basic_rw.sh new file mode 100755 index 000000000..5e9be5363 --- /dev/null +++ b/src/spdk/test/dd/basic_rw.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash +testdir=$(readlink -f "$(dirname "$0")") +rootdir=$(readlink -f "$testdir/../../") +source "$testdir/common.sh" + +basic_rw() { + local native_bs=$1 + local count size + local qds bss + + qds=(1 64) + # Generate some bs for tests based on the native_bs + for bs in {0..4}; do + bss+=($((native_bs << bs))) + done + + for bs in "${bss[@]}"; do + for qd in "${qds[@]}"; do + count=$((0xffff / bs)) + count=$((count == 0 ? 1 : count)) + size=$((count * bs)) + + gen_bytes "$size" > "$test_file0" + + "${DD_APP[@]}" \ + --if="$test_file0" \ + --ob="$bdev0" \ + --bs="$bs" \ + --qd="$qd" \ + --json <(gen_conf) + + "${DD_APP[@]}" \ + --ib="$bdev0" \ + --of="$test_file1" \ + --bs="$bs" \ + --qd="$qd" \ + --count="$count" \ + --json <(gen_conf) + + diff -q "$test_file0" "$test_file1" + clear_nvme "$bdev0" "" "$size" + done + done +} + +basic_offset() { + # Check if offseting works - using default io size of 4k + local count seek skip data data_check + + gen_bytes 4096 > "$test_file0" + ((count = seek = skip = 1)) + data=$(< "$test_file0") + + "${DD_APP[@]}" \ + --if="$test_file0" \ + --ob="$bdev0" \ + --seek="$seek" \ + --json <(gen_conf) + + "${DD_APP[@]}" \ + --ib="$bdev0" \ + --of="$test_file1" \ + --skip="$skip" \ + --count="$count" \ + --json <(gen_conf) + + read -rn${#data} data_check < "$test_file1" + [[ $data == "$data_check" ]] +} + +plain_copy() { + # Test if copy between plain files works as well + "${DD_APP[@]}" --if="$test_file0" --of="$test_file1" + diff -q "$test_file0" "$test_file1" +} + +cleanup() { + clear_nvme "$bdev0" + rm -f "$test_file0" "$test_file1" +} + +trap "cleanup" EXIT + +nvmes=("$@") +nvme0=Nvme0 nvme0_pci=${nvmes[0]} bdev0=Nvme0n1 + +declare -A method_bdev_nvme_attach_controller_0=( + ["name"]=$nvme0 + ["traddr"]=$nvme0_pci + ["trtype"]=pcie +) + +test_file0=$SPDK_TEST_STORAGE/dd.dump0 +test_file1=$SPDK_TEST_STORAGE/dd.dump1 +native_bs=$(get_native_nvme_bs "$nvme0_pci") + +# Test if running with bs < native_bs successfully fails +run_test "dd_bs_lt_native_bs" \ + NOT "${DD_APP[@]}" \ + --if=<(:) \ + --ob="$bdev0" \ + --bs=$((native_bs >> 1)) \ + --json <(gen_conf) + +run_test "dd_rw" basic_rw "$native_bs" +run_test "dd_rw_offset" basic_offset +run_test "dd_rw_file_copy" plain_copy |