mirror of
https://github.com/ceph/ceph
synced 2024-12-20 18:33:44 +00:00
8f712733af
Commit e0da2a4e8c
("qa/workunits/rbd: Add test to list snapshots of
consistency group") added bash-specific syntax.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
259 lines
5.0 KiB
Bash
Executable File
259 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -ex
|
|
|
|
#
|
|
# rbd_consistency_groups.sh - test consistency groups cli commands
|
|
#
|
|
|
|
#
|
|
# Functions
|
|
#
|
|
|
|
create_group()
|
|
{
|
|
local group_name=$1
|
|
|
|
rbd group create $group_name
|
|
}
|
|
|
|
list_groups()
|
|
{
|
|
rbd group list
|
|
}
|
|
|
|
check_group_exists()
|
|
{
|
|
local group_name=$1
|
|
list_groups | grep $group_name
|
|
}
|
|
|
|
remove_group()
|
|
{
|
|
local group_name=$1
|
|
|
|
rbd group remove $group_name
|
|
}
|
|
|
|
rename_group()
|
|
{
|
|
local src_name=$1
|
|
local dest_name=$2
|
|
|
|
rbd group rename $src_name $dest_name
|
|
}
|
|
|
|
check_group_does_not_exist()
|
|
{
|
|
local group_name=$1
|
|
for v in $(list_groups); do
|
|
if [ "$v" == "$group_name" ]; then
|
|
return 1
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
create_image()
|
|
{
|
|
local image_name=$1
|
|
rbd create --size 10M $image_name
|
|
}
|
|
|
|
remove_image()
|
|
{
|
|
local image_name=$1
|
|
rbd remove $image_name
|
|
}
|
|
|
|
add_image_to_group()
|
|
{
|
|
local image_name=$1
|
|
local group_name=$2
|
|
rbd group image add $group_name $image_name
|
|
}
|
|
|
|
remove_image_from_group()
|
|
{
|
|
local image_name=$1
|
|
local group_name=$2
|
|
rbd group image remove $group_name $image_name
|
|
}
|
|
|
|
check_image_in_group()
|
|
{
|
|
local image_name=$1
|
|
local group_name=$2
|
|
for v in $(rbd group image list $group_name); do
|
|
local vtrimmed=${v#*/}
|
|
if [ "$vtrimmed" = "$image_name" ]; then
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
|
|
check_image_not_in_group()
|
|
{
|
|
local image_name=$1
|
|
local group_name=$2
|
|
for v in $(rbd group image list $group_name); do
|
|
local vtrimmed=${v#*/}
|
|
if [ "$vtrimmed" = "$image_name" ]; then
|
|
return 1
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
create_snapshot()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
rbd group snap create $group_name@$snap_name
|
|
}
|
|
|
|
create_snapshots()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
local snap_count=$3
|
|
for i in `seq 1 $snap_count`; do
|
|
rbd group snap create $group_name@$snap_name$i
|
|
done
|
|
}
|
|
|
|
remove_snapshot()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
rbd group snap remove $group_name@$snap_name
|
|
}
|
|
|
|
remove_snapshots()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
local snap_count=$3
|
|
for i in `seq 1 $snap_count`; do
|
|
rbd group snap remove $group_name@$snap_name$i
|
|
done
|
|
}
|
|
|
|
rename_snapshot()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
local new_snap_name=$3
|
|
rbd group snap rename $group_name@$snap_name $new_snap_name
|
|
}
|
|
|
|
list_snapshots()
|
|
{
|
|
local group_name=$1
|
|
rbd group snap list $group_name
|
|
}
|
|
|
|
rollback_snapshot()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
rbd group snap rollback $group_name@$snap_name
|
|
}
|
|
|
|
check_snapshot_in_group()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
list_snapshots $group_name | grep $snap_name
|
|
}
|
|
|
|
check_snapshots_count_in_group()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
local expected_count=$3
|
|
local actual_count
|
|
actual_count=$(list_snapshots $group_name | grep -c $snap_name)
|
|
(( actual_count == expected_count ))
|
|
}
|
|
|
|
check_snapshot_not_in_group()
|
|
{
|
|
local group_name=$1
|
|
local snap_name=$2
|
|
for v in $(list_snapshots $group_name | awk '{print $1}'); do
|
|
if [ "$v" = "$snap_name" ]; then
|
|
return 1
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
echo "TEST: create remove consistency group"
|
|
group="test_consistency_group"
|
|
new_group="test_new_consistency_group"
|
|
create_group $group
|
|
check_group_exists $group
|
|
rename_group $group $new_group
|
|
check_group_exists $new_group
|
|
remove_group $new_group
|
|
check_group_does_not_exist $new_group
|
|
echo "PASSED"
|
|
|
|
echo "TEST: add remove images to consistency group"
|
|
image="test_image"
|
|
group="test_consistency_group"
|
|
create_image $image
|
|
create_group $group
|
|
add_image_to_group $image $group
|
|
check_image_in_group $image $group
|
|
remove_image_from_group $image $group
|
|
check_image_not_in_group $image $group
|
|
remove_group $group
|
|
remove_image $image
|
|
echo "PASSED"
|
|
|
|
echo "TEST: create remove snapshots of consistency group"
|
|
image="test_image"
|
|
group="test_consistency_group"
|
|
snap="group_snap"
|
|
new_snap="new_group_snap"
|
|
sec_snap="group_snap2"
|
|
create_image $image
|
|
create_group $group
|
|
add_image_to_group $image $group
|
|
create_snapshot $group $snap
|
|
check_snapshot_in_group $group $snap
|
|
rename_snapshot $group $snap $new_snap
|
|
check_snapshot_not_in_group $group $snap
|
|
create_snapshot $group $sec_snap
|
|
check_snapshot_in_group $group $sec_snap
|
|
rollback_snapshot $group $new_snap
|
|
remove_snapshot $group $new_snap
|
|
check_snapshot_not_in_group $group $new_snap
|
|
remove_snapshot $group $sec_snap
|
|
check_snapshot_not_in_group $group $sec_snap
|
|
remove_group $group
|
|
remove_image $image
|
|
echo "PASSED"
|
|
|
|
echo "TEST: list snapshots of consistency group"
|
|
image="test_image"
|
|
group="test_consistency_group"
|
|
snap="group_snap"
|
|
create_image $image
|
|
create_group $group
|
|
add_image_to_group $image $group
|
|
create_snapshots $group $snap 10
|
|
check_snapshots_count_in_group $group $snap 10
|
|
remove_snapshots $group $snap 10
|
|
create_snapshots $group $snap 100
|
|
check_snapshots_count_in_group $group $snap 100
|
|
remove_snapshots $group $snap 100
|
|
remove_group $group
|
|
remove_image $image
|
|
echo "PASSED"
|
|
|
|
echo "OK"
|