mirror of
https://github.com/ceph/ceph
synced 2025-01-19 17:41:39 +00:00
qa: krbd namespaces test
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
dfe95eef11
commit
7fdb879004
5
qa/suites/krbd/rbd-nomount/tasks/krbd_namespaces.yaml
Normal file
5
qa/suites/krbd/rbd-nomount/tasks/krbd_namespaces.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
tasks:
|
||||
- workunit:
|
||||
clients:
|
||||
all:
|
||||
- rbd/krbd_namespaces.sh
|
116
qa/workunits/rbd/krbd_namespaces.sh
Executable file
116
qa/workunits/rbd/krbd_namespaces.sh
Executable file
@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
function get_block_name_prefix() {
|
||||
rbd info --format=json $1 | python -c "import sys, json; print json.load(sys.stdin)['block_name_prefix']"
|
||||
}
|
||||
|
||||
function do_pwrite() {
|
||||
local spec=$1
|
||||
local old_byte=$2
|
||||
local new_byte=$3
|
||||
|
||||
local dev
|
||||
dev=$(sudo rbd map $spec)
|
||||
cmp <(dd if=/dev/zero bs=1M count=10 | tr \\000 \\$old_byte) $dev
|
||||
xfs_io -c "pwrite -b 1M -S $new_byte 0 10M" $dev
|
||||
sudo rbd unmap $dev
|
||||
}
|
||||
|
||||
function do_cmp() {
|
||||
local spec=$1
|
||||
local byte=$2
|
||||
|
||||
local dev
|
||||
dev=$(sudo rbd map $spec)
|
||||
cmp <(dd if=/dev/zero bs=1M count=10 | tr \\000 \\$byte) $dev
|
||||
sudo rbd unmap $dev
|
||||
}
|
||||
|
||||
function gen_child_specs() {
|
||||
local i=$1
|
||||
|
||||
local child_specs="foo/img$i-clone1 foo/img$i-clone2 foo/ns1/img$i-clone1 foo/ns1/img$i-clone2"
|
||||
if [[ $i -ge 3 ]]; then
|
||||
child_specs="$child_specs foo/ns2/img$i-clone1 foo/ns2/img$i-clone2"
|
||||
fi
|
||||
echo $child_specs
|
||||
}
|
||||
|
||||
ceph osd pool create foo 12
|
||||
rbd pool init foo
|
||||
ceph osd pool create bar 12
|
||||
rbd pool init bar
|
||||
|
||||
ceph osd set-require-min-compat-client nautilus
|
||||
rbd namespace create foo/ns1
|
||||
rbd namespace create foo/ns2
|
||||
|
||||
SPECS=(foo/img1 foo/img2 foo/ns1/img3 foo/ns1/img4)
|
||||
|
||||
COUNT=1
|
||||
for spec in "${SPECS[@]}"; do
|
||||
if [[ $spec =~ img1|img3 ]]; then
|
||||
rbd create --size 10 $spec
|
||||
else
|
||||
rbd create --size 10 --data-pool bar $spec
|
||||
fi
|
||||
do_pwrite $spec 000 $(printf %03d $COUNT)
|
||||
rbd snap create $spec@snap
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
for i in {1..4}; do
|
||||
for child_spec in $(gen_child_specs $i); do
|
||||
if [[ $child_spec =~ clone1 ]]; then
|
||||
rbd clone ${SPECS[i - 1]}@snap $child_spec
|
||||
else
|
||||
rbd clone --data-pool bar ${SPECS[i - 1]}@snap $child_spec
|
||||
fi
|
||||
do_pwrite $child_spec $(printf %03d $i) $(printf %03d $COUNT)
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
done
|
||||
|
||||
[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img1)) -eq 3 ]]
|
||||
[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img3)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img4)) -eq 3 ]]
|
||||
|
||||
[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img1-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img1-clone2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img1-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img1-clone2)) -eq 3 ]]
|
||||
|
||||
[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img2-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img2-clone2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img2-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img2-clone2)) -eq 3 ]]
|
||||
|
||||
[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img3-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img3-clone2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img3-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img3-clone2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img3-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img3-clone2)) -eq 3 ]]
|
||||
|
||||
[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img4-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img4-clone2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img4-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img4-clone2)) -eq 3 ]]
|
||||
[[ $(rados -p foo -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img4-clone1)) -eq 3 ]]
|
||||
[[ $(rados -p bar -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img4-clone2)) -eq 3 ]]
|
||||
|
||||
COUNT=1
|
||||
for spec in "${SPECS[@]}"; do
|
||||
do_cmp $spec $(printf %03d $COUNT)
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
for i in {1..4}; do
|
||||
for child_spec in $(gen_child_specs $i); do
|
||||
do_cmp $child_spec $(printf %03d $COUNT)
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
done
|
||||
|
||||
echo OK
|
Loading…
Reference in New Issue
Block a user