From 192f6ca079bd92f379b01894fa9e537d9d45aeea Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Mon, 24 Apr 2017 15:31:53 +0200 Subject: [PATCH] qa/workunits/rbd: test exclusive map option Signed-off-by: Ilya Dryomov --- .../tasks/krbd_exclusive_option.yaml | 5 + qa/workunits/rbd/krbd_exclusive_option.sh | 165 ++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 qa/suites/krbd/rbd-nomount/tasks/krbd_exclusive_option.yaml create mode 100755 qa/workunits/rbd/krbd_exclusive_option.sh diff --git a/qa/suites/krbd/rbd-nomount/tasks/krbd_exclusive_option.yaml b/qa/suites/krbd/rbd-nomount/tasks/krbd_exclusive_option.yaml new file mode 100644 index 00000000000..567deebfdb7 --- /dev/null +++ b/qa/suites/krbd/rbd-nomount/tasks/krbd_exclusive_option.yaml @@ -0,0 +1,5 @@ +tasks: +- workunit: + clients: + all: + - rbd/krbd_exclusive_option.sh diff --git a/qa/workunits/rbd/krbd_exclusive_option.sh b/qa/workunits/rbd/krbd_exclusive_option.sh new file mode 100755 index 00000000000..958aecf7325 --- /dev/null +++ b/qa/workunits/rbd/krbd_exclusive_option.sh @@ -0,0 +1,165 @@ +#!/bin/bash + +set -ex + +function expect_false() { + if "$@"; then return 1; else return 0; fi +} + +function assert_locked() { + local dev_id="${1#/dev/rbd}" + + local client_addr + client_addr="$(< $SYSFS_DIR/$dev_id/client_addr)" + + local client_id + client_id="$(< $SYSFS_DIR/$dev_id/client_id)" + # client4324 -> client.4324 + client_id="client.${client_id#client}" + + local watch_cookie + watch_cookie="$(rados -p rbd listwatchers rbd_header.$IMAGE_ID | + grep $client_id | cut -d ' ' -f 3 | cut -d '=' -f 2)" + [[ $(echo -n "$watch_cookie" | grep -c '^') -eq 1 ]] + + local actual + actual="$(rados -p rbd --format=json lock info rbd_header.$IMAGE_ID rbd_lock | + python -m json.tool)" + + local expected + expected="$(cat <