blob: 5e9be5363fa3699991d964765238545bef159784 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
|