From e7c5666b7c8adf72a85a87b19f8aa4da602ae0dd Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Wed, 17 Jun 2015 22:59:17 +0530 Subject: [PATCH 154/190] tests/bitrot: Scrub state change tests Change-Id: Ibb4b503e7d723c86ac381ad3747b1198334bd6ad BUG: 1232309 Signed-off-by: Venky Shankar Reviewed-on: https://code.engineering.redhat.com/gerrit/51699 Reviewed-by: Raghavendra Bhat Tested-by: Raghavendra Bhat --- tests/bitrot/br-state-check.t | 81 +++++++++++++++++++++++++++++++++++++++++ tests/volume.rc | 4 +- 2 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 tests/bitrot/br-state-check.t diff --git a/tests/bitrot/br-state-check.t b/tests/bitrot/br-state-check.t new file mode 100644 index 0000000..0390df5 --- /dev/null +++ b/tests/bitrot/br-state-check.t @@ -0,0 +1,81 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../nfs.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd + +## Create a distribute volume +TEST $CLI volume create $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 $H0:$B0/${V0}3; +TEST $CLI volume start $V0; + +## Enable bitrot on volume $V0 +TEST $CLI volume bitrot $V0 enable + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_bitd_count +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_scrubd_count + +## perform a series of scrub related state change tests. As of now, there' +## no way to check if a given change has been correctly acknowledged by +## the scrub process as there isn't an _interface_ to check scrub internal +## state (yet). What's been verified here is scrub state machine execution +## w.r.t. locking and faults. + +## 0x0: verify scrub rescheduling +TEST $CLI volume bitrot $V0 scrub-frequency monthly +TEST $CLI volume bitrot $V0 scrub-frequency daily +TEST $CLI volume bitrot $V0 scrub-frequency hourly + +## 0x1: test reschedule after pause/resume +TEST $CLI volume bitrot $V0 scrub pause +TEST $CLI volume bitrot $V0 scrub-frequency daily +TEST $CLI volume bitrot $V0 scrub resume + +## 0x2: test reschedule w/ an offline brick +TEST kill_brick $V0 $H0 $B0/${V0}1 + +TEST $CLI volume bitrot $V0 scrub-frequency hourly +TEST $CLI volume bitrot $V0 scrub-throttle aggressive + +## 0x3: test pause/resume w/ an offline brick +TEST $CLI volume bitrot $V0 scrub pause +TEST $CLI volume bitrot $V0 scrub-frequency monthly +TEST $CLI volume bitrot $V0 scrub resume + +## 0x4: test "start" from a paused scrub state + +TEST $CLI volume bitrot $V0 scrub pause +TEST $CLI volume start $V0 force + +## 0x4a: try pausing an already paused scrub +TEST ! $CLI volume bitrot $V0 scrub pause + +## 0x4b: perform configuration changes +TEST $CLI volume bitrot $V0 scrub-frequency hourly +TEST $CLI volume bitrot $V0 scrub-throttle lazy +TEST $CLI volume bitrot $V0 scrub resume + +## 0x5: test cleanup upon brick going offline +TEST kill_brick $V0 $H0 $B0/${V0}1 +TEST kill_brick $V0 $H0 $B0/${V0}2 +TEST kill_brick $V0 $H0 $B0/${V0}3 + +## 0x6: test cleanup upon brick going offline when srubber is paused +## (initially paused and otherwise) + +## 0x6a: initially paused case +TEST $CLI volume bitrot $V0 scrub pause +TEST $CLI volume start $V0 force +TEST kill_brick $V0 $H0 $B0/${V0}3 +TEST $CLI volume bitrot $V0 scrub resume + +## 0x6b: paused _after_ execution +TEST $CLI volume start $V0 force +TEST $CLI volume bitrot $V0 scrub pause +TEST kill_brick $V0 $H0 $B0/${V0}2 + +cleanup; diff --git a/tests/volume.rc b/tests/volume.rc index 5a7d034..47ca722 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -536,10 +536,10 @@ fi } function get_bitd_count { - ps auxw | grep glusterfs | grep bitd.pid | grep -v grep | wc -l + ps auxww | grep glusterfs | grep bitd.pid | grep -v grep | wc -l } function get_scrubd_count { - ps auxw | grep glusterfs | grep scrub.pid | grep -v grep | wc -l + ps auxww | grep glusterfs | grep scrub.pid | grep -v grep | wc -l } -- 1.7.1