Reviewed-by: Steven Dake <[email protected]> On 06/16/2011 08:18 AM, Jan Friesse wrote: > Test is disabled by default because it depends on SMP and about 2GB RAM. > It's also testing race, so test is unreliable. > > Signed-off-by: Jan Friesse <[email protected]> > --- > cts/agents/Makefile.am | 4 +- > cts/agents/confdb-dispatch-deadlock.sh | 57 > ++++++++++++++++++++++++++++++++ > cts/corotests.py | 17 +++++++++ > 3 files changed, 76 insertions(+), 2 deletions(-) > create mode 100644 cts/agents/confdb-dispatch-deadlock.sh > > diff --git a/cts/agents/Makefile.am b/cts/agents/Makefile.am > index 1d73a9b..e3f1502 100644 > --- a/cts/agents/Makefile.am > +++ b/cts/agents/Makefile.am > @@ -41,7 +41,7 @@ EXTRA_DIST = syncv2.c > if INSTALL_TESTAGENTS > agentdir = $(datadir)/$(PACKAGE)/tests > bin_PROGRAMS = $(TEST_AGENTS) > -dist_agent_SCRIPTS = mem_leak_test.sh net_breaker.sh > +dist_agent_SCRIPTS = mem_leak_test.sh net_breaker.sh > confdb-dispatch-deadlock.sh > > AM_CFLAGS = -fPIC > SERVICE_LCRSO = syncv2 > @@ -50,7 +50,7 @@ LCRSO = > $(SERVICE_LCRSO:%=service_%.lcrso) > LCRSO_OBJS = $(SOURCES:%.c=%.o) > else > noinst_PROGRAMS = $(TEST_AGENTS) > -noinst_SCRIPTS = mem_leak_test.sh net_breaker.sh > +noinst_SCRIPTS = mem_leak_test.sh net_breaker.sh confdb-dispatch-deadlock.sh > LCRSO = > LCRSO_OBJS = > endif > diff --git a/cts/agents/confdb-dispatch-deadlock.sh > b/cts/agents/confdb-dispatch-deadlock.sh > new file mode 100644 > index 0000000..4ba0c2d > --- /dev/null > +++ b/cts/agents/confdb-dispatch-deadlock.sh > @@ -0,0 +1,57 @@ > +#!/bin/bash > + > +export TIMEOUT=600 > +export PID=$$ > +up_to=200 > + > +rec_plist() { > + if [ "$2" == "" ];then > + pl="`ps ax -o pid= -o ppid= -o comm=`" > + else > + pl=$2 > + fi > + > + list=`echo "$pl" | egrep "^ *[0-9]+ +$1" | awk '{ print $1 }'` > + tmplist=$list > + for i in $tmplist;do > + [ "$i" != "$1" ] && [ "$i" != "$$" ] && list="$list "`rec_plist $i > "$pl"` > + done > + > + echo $list > +} > + > +rec_pkill() { > + kill -9 `rec_plist "$1"` 2> /dev/null > +} > + > +exit_timeout() { > + echo "ERR: Timeout. Test failed $PID" > + rec_pkill "$$" > + exit 1 > +} > + > +corosync-objctl -c test.abd || exit 2 > + > +trap exit_timeout SIGUSR1 > +(sleep $TIMEOUT ; kill -SIGUSR1 $PID) & > + > +wait_list="" > + > +for e in {1..40};do > + (for a in `seq 1 $up_to`;do corosync-objctl -w test.abd=$a ; done) & > + wait_list="$wait_list $!" > +done > + > +notify_list="" > + > +for i in {1..2};do > + sleep 600000 | corosync-objctl -t test > /dev/null & > + notify_list="$notify_list $!" > +done > + > +wait $wait_list > + > +rec_pkill "$$" > + > +echo "OK" > +exit 0 > diff --git a/cts/corotests.py b/cts/corotests.py > index 241832e..cbd7493 100644 > --- a/cts/corotests.py > +++ b/cts/corotests.py > @@ -629,6 +629,22 @@ class ServiceLoadTest(CoroTest): > > return self.success() > > +class ConfdbDispatchDeadlock(CoroTest): > + ''' > + run confdb-dispatch-deadlock.sh > + ''' > + def __init__(self, cm): > + CoroTest.__init__(self,cm) > + self.name="ConfdbDispatchDeadlock" > + > + def __call__(self, node): > + self.incr("calls") > + > + result = self.CM.rsh(node, > "/usr/share/corosync/tests/confdb-dispatch-deadlock.sh") > + if result is 0: > + return self.success() > + else: > + return self.failure('Deadlock detected') > > ################################################################### > class ConfdbReplaceTest(CoroTest): > @@ -1544,6 +1560,7 @@ AllTestClasses.append(ResourcePollAdjust) > AllTestClasses.append(ServiceLoadTest) > AllTestClasses.append(MemLeakObject) > AllTestClasses.append(MemLeakSession) > +#AllTestClasses.append(ConfdbDispatchDeadlock) > AllTestClasses.append(FlipTest) > AllTestClasses.append(RestartTest) > AllTestClasses.append(StartOnebyOne)
_______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
