From c6bb978f93e7e2974b0c8568af09b72bfbc35987 Mon Sep 17 00:00:00 2001 From: Kaushal M Date: Tue, 4 Dec 2012 12:44:22 +0530 Subject: tests: Introduce new test primitive EXPECT_WITHIN Introduces a new test primitive EXPECT_WITHIN with syntax, EXPECT_WITHIN which runs the given command every second and compares its output with the expected output, till the timeout occurs. Change-Id: I91c6de157e5d33fffafe532ceba84e2a9223356f BUG: 857330 Signed-off-by: Kaushal M Reviewed-on: http://review.gluster.org/4263 Reviewed-by: Anand Avati Tested-by: Anand Avati --- tests/include.rc | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'tests/include.rc') diff --git a/tests/include.rc b/tests/include.rc index 585a4e2c8..cfa9390aa 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -13,7 +13,7 @@ mkdir -p $B0; mkdir -p $M0 $M1; mkdir -p $N0 $N1; -testcnt=`egrep '^[ \t]*(EXPECT|TEST)' $0 | wc -l`; +testcnt=`egrep '^[ \t]*(EXPECT|TEST|EXPECT_WITHIN)' $0 | wc -l`; echo 1..$testcnt t=1 @@ -74,6 +74,40 @@ function _TEST() test_footer; } +function _EXPECT_WITHIN() +{ + TESTLINE=$1 + shift; + + local timeout=$1 + shift; + + test_header "$@" + + e=$1; + shift; + + local endtime=$(( ${timeout}+`date +%s` )) + + local success=0 + while [ `date +%s` -lt $endtime ]; do + "$@" | tail -1 | egrep -q "^${e}\$" + if [ $? -eq 0 ]; then + success=1; + break; + fi + sleep 1; + done + + if [ $success -eq 1 ]; then + true; + else + false; + fi + + test_footer; +} + function cleanup() { @@ -90,4 +124,5 @@ function cleanup() alias EXPECT='_EXPECT $LINENO' alias TEST='_TEST $LINENO' +alias EXPECT_WITHIN='_EXPECT_WITHIN $LINENO' shopt -s expand_aliases -- cgit