From a8744e2bd55db3b8a5625c66b04b21c88f574637 Mon Sep 17 00:00:00 2001 From: Xavier Hernandez Date: Tue, 30 Sep 2014 17:47:26 +0200 Subject: ec: Add state dump support This is a backport of http://review.gluster.org/8891/ Change-Id: I4504f3050674dde217e79af28cb4d2b5370fe2d5 BUG: 1148093 Signed-off-by: Xavier Hernandez Reviewed-on: http://review.gluster.org/8899 Tested-by: Gluster Build System Reviewed-by: Dan Lambright Reviewed-by: Vijay Bellur --- tests/basic/ec/statedump.t | 26 ++++++++++++++++++++++++++ tests/volume.rc | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 tests/basic/ec/statedump.t (limited to 'tests') diff --git a/tests/basic/ec/statedump.t b/tests/basic/ec/statedump.t new file mode 100644 index 00000000000..bff41ab333e --- /dev/null +++ b/tests/basic/ec/statedump.t @@ -0,0 +1,26 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 redundancy 1 $H0:$B0/${V0}{0..2} +TEST $CLI volume start $V0 +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 --volfile-id=/$V0 --volfile-server=$H0 $M0 + +EXPECT_WITHIN $CHILD_UP_TIMEOUT "3" ec_child_up_count $V0 0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" ec_child_up_status $V0 0 0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" ec_child_up_status $V0 0 1 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" ec_child_up_status $V0 0 2 + +TEST kill_brick $V0 $H0 $B0/${V0}0 + +EXPECT_WITHIN $CHILD_UP_TIMEOUT "2" ec_child_up_count $V0 0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "0" ec_child_up_status $V0 0 0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" ec_child_up_status $V0 0 1 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" ec_child_up_status $V0 0 2 + +cleanup diff --git a/tests/volume.rc b/tests/volume.rc index 1d1d58efa66..71d0947c5a6 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -110,6 +110,30 @@ function afr_child_up_status { _afr_child_up_status $vol $brick_id generate_mount_statedump } +function ec_get_info { + local vol=$1 + local dist_id=$2 + local key=$3 + local fpath=$(generate_mount_statedump $vol) + local value=$(sed -n "/^\[cluster\/disperse\.$vol-disperse-$dist_id\]/,/^\[/{s/^$key=\(.*\)/\1/p;}" $fpath | head -1) + rm -f $fpath + echo "$value" +} + +function ec_child_up_status { + local vol=$1 + local dist_id=$2 + local brick_id=$(($3 + 1)) + local mask=$(ec_get_info $vol $dist_id "childs_up_mask") + echo "${mask: -$brick_id:1}" +} + +function ec_child_up_count { + local vol=$1 + local dist_id=$2 + ec_get_info $vol $dist_id "childs_up" +} + function get_shd_process_pid { local vol=$1 ps aux | grep glusterfs | grep -E "glustershd/run/glustershd.pid" | awk '{print $2}' | head -1 -- cgit