]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/test/dd/basic_rw.sh
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / test / dd / basic_rw.sh
diff --git a/ceph/src/spdk/test/dd/basic_rw.sh b/ceph/src/spdk/test/dd/basic_rw.sh
new file mode 100755 (executable)
index 0000000..5e9be53
--- /dev/null
@@ -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