From d95b791e8d19c62cfa908b4004486752f0f4f175 Mon Sep 17 00:00:00 2001 From: Victor Denisov Date: Sun, 2 Apr 2017 15:03:48 -0700 Subject: [PATCH] qa/workunits/rbd: Add tests for consistency groups Signed-off-by: Victor Denisov --- .../rbd/cli/workloads/rbd_cli_groups.yaml | 5 + qa/workunits/rbd/rbd_groups.sh | 174 ++++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml create mode 100755 qa/workunits/rbd/rbd_groups.sh diff --git a/qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml b/qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml new file mode 100644 index 0000000000000..6ff83634250bf --- /dev/null +++ b/qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml @@ -0,0 +1,5 @@ +tasks: +- workunit: + clients: + client.0: + - rbd/rbd_groups.sh diff --git a/qa/workunits/rbd/rbd_groups.sh b/qa/workunits/rbd/rbd_groups.sh new file mode 100755 index 0000000000000..5520b15785160 --- /dev/null +++ b/qa/workunits/rbd/rbd_groups.sh @@ -0,0 +1,174 @@ +#!/bin/sh -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 +} + +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 +} + +remove_snapshot() +{ + local group_name=$1 + local snap_name=$2 + rbd group snap remove $group_name $snap_name +} + +list_snapshots() +{ + local group_name=$1 + rbd group snap list $group_name +} + +check_snapshot_in_group() +{ + local group_name=$1 + local snap_name=$2 + list_snapshots $group_name | grep $snap_name +} + +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" +create_group $group +check_group_exists $group +remove_group $group +check_group_does_not_exist $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" +create_image $image +create_group $group +add_image_to_group $image $group +create_snapshot $group $snap +check_snapshot_in_group $group $snap +remove_snapshot $group $snap +check_snapshot_not_in_group $group $snap +remove_group $group +remove_image $image +echo "PASSED" + +echo "OK" -- 2.39.5