Skip to content

Commit 747ea3b

Browse files
author
klapinsk
committed
Add ocf stress tests
Signed-off-by: klapinsk <[email protected]>
1 parent 6b0a70e commit 747ea3b

7 files changed

+381
-0
lines changed

test/ocf/ocf.sh

+9
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,18 @@ rootdir=$(readlink -f $testdir/../..)
55

66
source $rootdir/test/common/autotest_common.sh
77

8+
9+
run_test "ocf_stress_create_remove" "$testdir/stress/stress-create-remove.sh"
10+
run_test "ocf_stress_create_remove_io" "$testdir/stress/stress-create-remove-io.sh"
11+
run_test "ocf_stress_load_from_disk" "$testdir/stress/stress-load-from-disk.sh"
12+
run_test "ocf_stress_load_from_disk_io" "$testdir/stress/stress-load-from-disk-io.sh"
13+
run_test "ocf_stress_load_from_ram_io" "$testdir/stress/stress-load-from-ram-io.sh"
14+
run_test "ocf_stress_get_stats" "$testdir/stress/stress-get-stats.sh"
15+
816
run_test "ocf_fio_modes" "$testdir/integrity/fio-modes.sh"
917
run_test "ocf_bdevperf_iotypes" "$testdir/integrity/bdevperf-iotypes.sh"
1018
run_test "ocf_stats" "$testdir/integrity/stats.sh"
19+
1120
run_test "ocf_create_destruct" "$testdir/management/create-destruct.sh"
1221
run_test "ocf_multicore" "$testdir/management/multicore.sh"
1322
run_test "ocf_persistent_metadata" "$testdir/management/persistent-metadata.sh"
+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/usr/bin/env bash
2+
3+
curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4+
rootdir=$(readlink -f $curdir/../../..)
5+
source $rootdir/test/ocf/common.sh
6+
source $rootdir/scripts/common.sh
7+
source $rootdir/test/common/autotest_common.sh
8+
rpc_py=$rootdir/scripts/rpc.py
9+
bdevperf=$rootdir/test/bdev/bdevperf/bdevperf
10+
11+
iterations=55555che_modes=("wa" "wb" "wt" "pt" "wo" "wi")
12+
RANDOM=$$$(date +%s)
13+
14+
# Setup NVMe devices
15+
$rootdir/scripts/setup.sh
16+
17+
# Create NVMe config
18+
prepare_nvme_config
19+
20+
# Clear nvme device which we will use in test
21+
clear_nvme
22+
23+
# Start SPDK app
24+
start_spdk "$curdir/config"
25+
26+
# Create 2x256MiB partitions on NVMe device
27+
create_partitions Nvme0n1 2 256
28+
29+
# Test loop with creating and deleting CAS device
30+
for i in $(eval echo "{1..$iterations}")
31+
do
32+
# Create CAS device
33+
random_cache_mode=${cache_modes[$RANDOM % ${#cache_modes[@]}]}
34+
$rpc_py bdev_ocf_create cas_dev $random_cache_mode Nvme0n1p0 Nvme0n1p1 --create --force
35+
36+
# Save current configuration and add force and create parameters
37+
$rpc_py save_config > "$curdir/config-cas"
38+
echo $(cat "$curdir/config-cas" | jq 'del(.subsystems[] | select(.subsystem != "bdev"))' | jq 'del(.subsystems[] | .config[] | select(.method != "bdev_split_create" and .method != "bdev_nvme_attach_controller" and .method != "bdev_ocf_create"))') > "$curdir/config-cas"
39+
echo '{ "subsystems": [ { "subsystem": "bdev", "config": ' $(cat "$curdir/config" | jq '.subsystems[] | select(.subsystem == "bdev") | .config[] | select(.method=="bdev_ocf_create").params |= . + { "force": true, "create": true}' | jq -s '.') ' } ] }' > "$curdir/config-cas"
40+
41+
# Check that CAS device was created properly
42+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
43+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .started' | grep true
44+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .cache.attached' | grep true
45+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .core.attached' | grep true
46+
47+
# Remove CAS device
48+
$rpc_py bdev_ocf_delete cas_dev
49+
50+
# Check that CAS device was deleted properly
51+
! $rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
52+
53+
# Stop SPDK app
54+
stop_spdk
55+
56+
# Run I/O for 30s
57+
$bdevperf --json "$curdir/config-cas" -q 128 -o 4096 -w write -t 30
58+
59+
# Clean NVMe
60+
clear_nvme
61+
62+
# Start SPDK
63+
start_spdk "$curdir/config"
64+
done
65+
66+
# Stop SPDK app and cleanup
67+
stop_spdk
68+
69+
clear_nvme $bdf
70+
71+
remove_config
72+
rm -f "$curdir/config-cas"
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env bash
2+
3+
curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4+
rootdir=$(readlink -f $curdir/../../..)
5+
source $rootdir/test/ocf/common.sh
6+
source $rootdir/scripts/common.sh
7+
source $rootdir/test/common/autotest_common.sh
8+
rpc_py=$rootdir/scripts/rpc.py
9+
10+
iterations=50
11+
cache_modes=("wa" "wb" "wt" "pt" "wo" "wi")
12+
RANDOM=$$$(date +%s)
13+
14+
# Setup NVMe devices
15+
$rootdir/scripts/setup.sh
16+
17+
# Create NVMe config
18+
prepare_nvme_config
19+
20+
# Clear nvme device which we will use in test
21+
clear_nvme
22+
23+
# Start SPDK app
24+
start_spdk "$curdir/config"
25+
26+
# Create 2x256MiB partitions on NVMe device
27+
create_partitions Nvme0n1 2 256
28+
29+
# Test loop with creating and deleting CAS device
30+
for i in $(eval echo "{1..$iterations}")
31+
do
32+
# Create CAS device
33+
random_cache_mode=${cache_modes[$RANDOM % ${#cache_modes[@]}]}
34+
$rpc_py bdev_ocf_create cas_dev $random_cache_mode Nvme0n1p0 Nvme0n1p1 --create --force
35+
36+
# Check that CAS device was created properly
37+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
38+
39+
# Remove CAS device
40+
$rpc_py bdev_ocf_delete cas_dev
41+
42+
# Check that CAS device was deleted properly
43+
! $rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
44+
done
45+
46+
# Stop SPDK app and cleanup
47+
stop_spdk
48+
49+
clear_nvme $bdf
50+
51+
remove_config

test/ocf/stress/stress-get-stats.sh

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bash
2+
3+
curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4+
rootdir=$(readlink -f $curdir/../../..)
5+
source $rootdir/test/ocf/common.sh
6+
source $rootdir/scripts/common.sh
7+
source $rootdir/test/common/autotest_common.sh
8+
rpc_py=$rootdir/scripts/rpc.py
9+
bdevperf=$rootdir/test/bdev/bdevperf/bdevperf
10+
iterations=50
11+
12+
# Setup NVMe devices
13+
$rootdir/scripts/setup.sh
14+
15+
# Create NVMe config
16+
prepare_nvme_config
17+
18+
# Clear nvme device which we will use in test
19+
clear_nvme
20+
21+
# Start SPDK app
22+
start_spdk "$curdir/config"
23+
24+
# Create 2x256MiB partitions on NVMe device
25+
create_partitions Nvme0n1 2 256
26+
27+
# Create CAS device
28+
$rpc_py bdev_ocf_create cas_dev wt Nvme0n1p0 Nvme0n1p1 --create --force
29+
30+
# Check that CAS device was created properly
31+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
32+
33+
save_and_clean_bdev_config
34+
stop_spdk
35+
36+
# Start I/O in background
37+
$bdevperf --json "$curdir/config" -q 128 -o 4096 -w write -t 360 -r /var/tmp/spdk.sock &
38+
bdev_perf_pid=$!
39+
waitforlisten $bdev_perf_pid
40+
sleep 1
41+
42+
# Test loop with getting CAS device statistics
43+
for i in $(eval echo "{1..$iterations}")
44+
do
45+
get_stat_json cas_dev | jq
46+
sleep 1
47+
done
48+
49+
# Cleanup
50+
kill -9 $bdev_perf_pid
51+
wait $bdev_perf_pid || true
52+
clear_nvme $bdf
53+
remove_config
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env bash
2+
3+
curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4+
rootdir=$(readlink -f $curdir/../../..)
5+
source $rootdir/test/ocf/common.sh
6+
source $rootdir/scripts/common.sh
7+
source $rootdir/test/common/autotest_common.sh
8+
rpc_py=$rootdir/scripts/rpc.py
9+
bdevperf=$rootdir/test/bdev/bdevperf/bdevperf
10+
iterations=50
11+
12+
# Setup NVMe devices
13+
$rootdir/scripts/setup.sh
14+
15+
# Create NVMe config
16+
prepare_nvme_config
17+
18+
# Clear NVMe device which we will use in test
19+
clear_nvme
20+
21+
# Start SPDK app
22+
start_spdk "$curdir/config"
23+
24+
# Create 2x256MiB partitions on NVMe device and save config
25+
create_partitions Nvme0n1 2 256
26+
27+
# Create CAS device
28+
$rpc_py bdev_ocf_create cas_dev wb Nvme0n1p0 Nvme0n1p1 --create --force
29+
30+
# Check that CAS device was created properly
31+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
32+
33+
# Save current configuration
34+
save_and_clean_bdev_config
35+
36+
# Stop SPDK app
37+
stop_spdk
38+
39+
# Run I/O for 30s
40+
$bdevperf --json "$curdir/config" -q 128 -o 4096 -w write -t 30
41+
42+
# Remove shared memory files
43+
rm -f /dev/shm/ocf.cas_dev*
44+
45+
# Test loop with loading CAS device
46+
for i in $(eval echo "{1..$iterations}")
47+
do
48+
# Start SPDK app
49+
start_spdk "$curdir/config"
50+
51+
# Check that CAS device was loaded properly
52+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
53+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .started' | grep true
54+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .cache.attached' | grep true
55+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .core.attached' | grep true
56+
57+
#Stop SPDK app
58+
stop_spdk
59+
60+
# Run I/O for 30s
61+
$bdevperf --json "$curdir/config" -q 128 -o 4096 -w write -t 30 -r /var/tmp/spdk.sock
62+
63+
# Remove shared memory files
64+
rm -f /dev/shm/ocf.cas_dev*
65+
done
66+
67+
# Cleanup
68+
clear_nvme $bdf
69+
remove_config
+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env bash
2+
3+
curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4+
rootdir=$(readlink -f $curdir/../../..)
5+
source $rootdir/test/ocf/common.sh
6+
source $rootdir/scripts/common.sh
7+
source $rootdir/test/common/autotest_common.sh
8+
rpc_py=$rootdir/scripts/rpc.py
9+
10+
iterations=50
11+
12+
# Setup NVMe devices
13+
$rootdir/scripts/setup.sh
14+
15+
# Create NVMe config
16+
prepare_nvme_config
17+
18+
# Clear NVMe device which we will use in test
19+
clear_nvme
20+
21+
# Start SPDK app
22+
start_spdk "$curdir/config"
23+
24+
# Create 2x256MiB partitions on NVMe device and save config
25+
create_partitions Nvme0n1 2 256
26+
save_and_clean_bdev_config
27+
28+
# Create CAS device
29+
$rpc_py bdev_ocf_create cas_dev wb Nvme0n1p0 Nvme0n1p1 --create --force
30+
31+
# Check that CAS device was created properly
32+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
33+
34+
# Stop SPDK app
35+
stop_spdk
36+
37+
# Remove shared memory files
38+
rm -f /dev/shm/cas_dev*
39+
40+
# Test loop with loading CAS device
41+
for i in $(eval echo "{1..$iterations}")
42+
do
43+
# Start SPDK app
44+
start_spdk "$curdir/config"
45+
46+
# Load CAS device
47+
$rpc_py bdev_ocf_create cas_dev wb Nvme0n1p0 Nvme0n1p1
48+
49+
# Check that CAS device was loaded properly
50+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
51+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .started' | grep true
52+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .cache.attached' | grep true
53+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .core.attached' | grep true
54+
55+
# Stop SPDK app
56+
stop_spdk
57+
58+
# Remove shared memory files
59+
rm -f /dev/shm/cas_dev*
60+
done
61+
62+
# Cleanup
63+
clear_nvme $bdf
64+
remove_config
+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env bash
2+
3+
curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4+
rootdir=$(readlink -f $curdir/../../..)
5+
source $rootdir/test/ocf/common.sh
6+
source $rootdir/scripts/common.sh
7+
source $rootdir/test/common/autotest_common.sh
8+
rpc_py=$rootdir/scripts/rpc.py
9+
bdevperf=$rootdir/test/bdev/bdevperf/bdevperf
10+
iterations=50
11+
12+
# Setup NVMe devices
13+
$rootdir/scripts/setup.sh
14+
15+
# Create NVMe config
16+
prepare_nvme_config
17+
18+
# Clear NVMe device which we will use in test
19+
clear_nvme
20+
21+
# Start SPDK app
22+
start_spdk "$curdir/config"
23+
24+
# Create 2x256MiB partitions on NVMe device and save config
25+
create_partitions Nvme0n1 2 256
26+
27+
# Create CAS device
28+
$rpc_py bdev_ocf_create cas_dev wb Nvme0n1p0 Nvme0n1p1 --create --force
29+
30+
# Check that CAS device was created properly
31+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
32+
33+
# Save current configuration
34+
save_and_clean_bdev_config
35+
36+
# Stop SPDK app
37+
stop_spdk
38+
39+
# Run I/O for 30s
40+
$bdevperf --json "$curdir/config" -q 128 -o 4096 -w write -t 30
41+
42+
# Test loop with loading CAS device
43+
for i in $(eval echo "{1..$iterations}")
44+
do
45+
# Start SPDK app
46+
start_spdk "$curdir/config"
47+
48+
# Check that CAS device was loaded properly
49+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .name' | grep -qw cas_dev
50+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .started' | grep true
51+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .cache.attached' | grep true
52+
$rpc_py bdev_ocf_get_bdevs | jq -r '.[] .core.attached' | grep true
53+
54+
#Stop SPDK app
55+
stop_spdk
56+
57+
# Run I/O for 30s
58+
$bdevperf --json "$curdir/config" -q 128 -o 4096 -w write -t 30 -r /var/tmp/spdk.sock
59+
done
60+
61+
# Cleanup
62+
clear_nvme $bdf
63+
remove_config

0 commit comments

Comments
 (0)