You might be right. That sounds like a nice incremental improvement.
On Mon, Aug 20, 2012 at 01:12:14PM -0700, Ethan Jackson wrote: > Almost all of these are of the form ON_EXIT(['kill `cat pidfile`]) In > order to increase readability and avoid typos, does it make sense to > add an additional for of the macro ON_EXIT_KILL([pidfile]). > > Just a thought, doesn't matter that much. > Ethan > > On Mon, Aug 20, 2012 at 11:42 AM, Mehak Mahajan <mmaha...@nicira.com> wrote: > > Looks good. > > > > Thanx! > > Mehak > > > > > > On Mon, Aug 20, 2012 at 10:33 AM, Ben Pfaff <b...@nicira.com> wrote: > >> > >> Several of the tests start daemons and then need to make sure that the > >> daemons get killed when the test completes, even if it completes in the > >> middle due to an early failure. Until now, they have been using manual > >> shell "trap" calls to do this. This works well enough for simple cases, > >> but sometimes multiple macros start daemons in a single test, and then > >> each "trap" has to be carefully written to kill off the daemons for the > >> previously invoked macros. > >> > >> This commit introduces a new macro ON_EXIT whose use is composable: each > >> call appends a new action to the ones already specified. > >> > >> Signed-off-by: Ben Pfaff <b...@nicira.com> > >> --- > >> tests/ofproto-macros.at | 5 ++--- > >> tests/ofproto.at | 2 +- > >> tests/ovs-monitor-ipsec.at | 2 +- > >> tests/ovs-vsctl.at | 2 +- > >> tests/ovs-xapi-sync.at | 2 +- > >> tests/testsuite.at | 11 +++++++++++ > >> tests/unixctl-py.at | 3 +-- > >> tests/vlog.at | 9 ++++----- > >> 8 files changed, 22 insertions(+), 14 deletions(-) > >> > >> diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at > >> index 944fbac..52f19fc 100644 > >> --- a/tests/ofproto-macros.at > >> +++ b/tests/ofproto-macros.at > >> @@ -33,7 +33,7 @@ m4_define([OVS_VSWITCHD_START], > >> OVS_LOGDIR=`pwd`; export OVS_LOGDIR > >> OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR > >> - trap 'kill `cat ovsdb-server.pid ovs-vswitchd.pid`' 0 > >> + ON_EXIT([kill `cat ovsdb-server.pid ovs-vswitchd.pid`]) > >> > >> dnl Create database. > >> touch .conf.db.~lock~ > >> @@ -65,5 +65,4 @@ m4_define([OVS_VSWITCHD_START], > >> > >> m4_define([OVS_VSWITCHD_STOP], > >> [AT_CHECK([ovs-appctl -t ovs-vswitchd exit]) > >> - AT_CHECK([ovs-appctl -t ovsdb-server exit]) > >> - trap '' 0]) > >> + AT_CHECK([ovs-appctl -t ovsdb-server exit])]) > >> diff --git a/tests/ofproto.at b/tests/ofproto.at > >> index e3239f9..47402f7 100644 > >> --- a/tests/ofproto.at > >> +++ b/tests/ofproto.at > >> @@ -910,7 +910,7 @@ echo n_msgs=$n_msgs > >> OVS_VSWITCHD_START > >> > >> # Start a monitor watching the flow table, then make it block. > >> -trap 'kill `cat ovsdb-server.pid ovs-vswitchd.pid ovs-ofctl.pid`' 0 > >> +ON_EXIT([kill `cat ovs-ofctl.pid`]) > >> ovs-ofctl monitor br0 watch: --detach --no-chdir --pidfile >monitor.log > >> 2>&1 > >> AT_CAPTURE_FILE([monitor.log]) > >> ovs-appctl -t ovs-ofctl ofctl/block > >> diff --git a/tests/ovs-monitor-ipsec.at b/tests/ovs-monitor-ipsec.at > >> index 1a83161..e66c943 100644 > >> --- a/tests/ovs-monitor-ipsec.at > >> +++ b/tests/ovs-monitor-ipsec.at > >> @@ -8,7 +8,7 @@ OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_PKGDATADIR=`pwd`; export OVS_PKGDATADIR > >> cp "$top_srcdir/vswitchd/vswitch.ovsschema" . > >> > >> -trap 'kill `cat pid ovs-monitor-ipsec.pid`' 0 > >> +ON_EXIT([kill `cat pid ovs-monitor-ipsec.pid`]) > >> > >> mkdir etc etc/init.d etc/racoon etc/racoon/certs > >> mkdir usr usr/sbin > >> diff --git a/tests/ovs-vsctl.at b/tests/ovs-vsctl.at > >> index ef2c0c0..84cc272 100644 > >> --- a/tests/ovs-vsctl.at > >> +++ b/tests/ovs-vsctl.at > >> @@ -741,7 +741,7 @@ AT_CLEANUP > >> > >> AT_SETUP([database commands -- conditions]) > >> AT_KEYWORDS([ovs-vsctl]) > >> -trap 'kill `cat pid`' 0 > >> +ON_EXIT([kill `cat pid`]) > >> OVS_VSCTL_SETUP > >> AT_CHECK( > >> [RUN_OVS_VSCTL_TOGETHER( > >> diff --git a/tests/ovs-xapi-sync.at b/tests/ovs-xapi-sync.at > >> index 25acc74..29d4737 100644 > >> --- a/tests/ovs-xapi-sync.at > >> +++ b/tests/ovs-xapi-sync.at > >> @@ -16,7 +16,7 @@ cp "$top_srcdir/vswitchd/vswitch.ovsschema" . > >> cp "$top_srcdir/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync" \ > >> ovs-xapi-sync > >> > >> -trap 'kill `cat pid ovs-xapi-sync.pid`' 0 > >> +ON_EXIT([kill `cat pid ovs-xapi-sync.pid`]) > >> > >> mkdir var var/run > >> touch var/run/xapi_init_complete.cookie > >> diff --git a/tests/testsuite.at b/tests/testsuite.at > >> index e8f7498..2b4ccdb 100644 > >> --- a/tests/testsuite.at > >> +++ b/tests/testsuite.at > >> @@ -53,6 +53,17 @@ m4_define([OVS_WAIT_UNTIL], [OVS_WAIT([$1], [$2])]) > >> m4_define([OVS_WAIT_WHILE], > >> [OVS_WAIT([if $1; then return 1; else return 0; fi], [$2])]) > >> > >> +dnl ON_EXIT([COMMANDS]) > >> +dnl > >> +dnl Adds the shell COMMANDS to a collection executed when the current > >> test > >> +dnl completes, as a cleanup action. (The most common use is to kill a > >> +dnl daemon started by the test. This is important to prevent tests that > >> +dnl start daemons from hanging at exit.) > >> +m4_define([ON_EXIT], [trap '. ./cleanup' 0; cat >>cleanup <<'EOF' > >> +$1 > >> +EOF > >> +]) > >> + > >> m4_include([tests/ovsdb-macros.at]) > >> m4_include([tests/ofproto-macros.at]) > >> > >> diff --git a/tests/unixctl-py.at b/tests/unixctl-py.at > >> index 15fd86b..b54d409 100644 > >> --- a/tests/unixctl-py.at > >> +++ b/tests/unixctl-py.at > >> @@ -94,7 +94,7 @@ OVS_RUNDIR=`pwd`; export OVS_RUNDIR > >> OVS_LOGDIR=`pwd`; export OVS_LOGDIR > >> OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR > >> -trap 'kill `cat test-unixctl.py.pid`' 0 > >> +ON_EXIT([kill `cat test-unixctl.py.pid`]) > >> AT_CAPTURE_FILE([`pwd`/test-unixctl.py.log]) > >> AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file --pidfile --detach]) > >> > >> @@ -159,7 +159,6 @@ sed 's/ovs-appctl/appctl.py/' stderr > experr > >> AT_CHECK([PYAPPCTL -t test-unixctl.py bogus], [2], [], [experr]) > >> > >> AT_CHECK([APPCTL -t test-unixctl.py exit]) > >> -trap '' 0] > >> AT_CLEANUP > >> > >> > >> diff --git a/tests/vlog.at b/tests/vlog.at > >> index a8a947c..957d872 100644 > >> --- a/tests/vlog.at > >> +++ b/tests/vlog.at > >> @@ -109,7 +109,7 @@ OVS_RUNDIR=`pwd`; export OVS_RUNDIR > >> OVS_LOGDIR=`pwd`; export OVS_LOGDIR > >> OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR > >> -trap 'kill `cat test-unixctl.py.pid`' 0 > >> +ON_EXIT([kill `cat test-unixctl.py.pid`]) > >> > >> AT_CAPTURE_FILE([log]) > >> AT_CAPTURE_FILE([log.old]) > >> @@ -121,7 +121,6 @@ AT_CHECK([APPCTL -t test-unixctl.py log message2]) > >> AT_CHECK([APPCTL -t test-unixctl.py vlog/reopen]) > >> AT_CHECK([APPCTL -t test-unixctl.py log message3]) > >> AT_CHECK([APPCTL -t test-unixctl.py exit]) > >> -trap '' 0 > >> > >> AT_CHECK([sed 's/.*|//' log.old], [0], [dnl > >> Entering run loop. > >> @@ -139,7 +138,7 @@ OVS_RUNDIR=`pwd`; export OVS_RUNDIR > >> OVS_LOGDIR=`pwd`; export OVS_LOGDIR > >> OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR > >> -trap 'kill `cat test-unixctl.py.pid`' 0 > >> +ON_EXIT([kill `cat test-unixctl.py.pid`]) > >> > >> AT_CHECK([$PYTHON $srcdir/test-unixctl.py --pidfile --detach]) > >> > >> @@ -162,7 +161,7 @@ OVS_RUNDIR=`pwd`; export OVS_RUNDIR > >> OVS_LOGDIR=`pwd`; export OVS_LOGDIR > >> OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR > >> -trap 'kill `cat test-unixctl.py.pid`' 0 > >> +ON_EXIT([kill `cat test-unixctl.py.pid`]) > >> > >> AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile > >> --detach]) > >> AT_CHECK([APPCTL -t test-unixctl.py log message]) > >> @@ -189,7 +188,7 @@ OVS_RUNDIR=`pwd`; export OVS_RUNDIR > >> OVS_LOGDIR=`pwd`; export OVS_LOGDIR > >> OVS_DBDIR=`pwd`; export OVS_DBDIR > >> OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR > >> -trap 'kill `cat test-unixctl.py.pid`' 0 > >> +ON_EXIT([kill `cat test-unixctl.py.pid`]) > >> > >> AT_CAPTURE_FILE([log]) > >> AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file=`pwd`/log --pidfile > >> --detach]) > >> -- > >> 1.7.2.5 > >> > >> _______________________________________________ > >> dev mailing list > >> dev@openvswitch.org > >> http://openvswitch.org/mailman/listinfo/dev > > > > > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev