[ovs-dev] [PATCH] tests: fix issue in use of OVS_APP_EXIT_AND_WAIT

Paul Boca pboca at cloudbasesolutions.com
Mon Jun 6 09:43:01 UTC 2016


Hi Lance!

Thanks for fixing this. Tested on Windows and the fix works.

Acked-by: Paul-Daniel Boca <pboca at cloudbasesolutions.com>

> -----Original Message-----
> From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Lance
> Richardson
> Sent: Saturday, June 4, 2016 1:09 AM
> To: dev at openvswitch.org
> Subject: [ovs-dev] [PATCH] tests: fix issue in use of OVS_APP_EXIT_AND_WAIT
> 
> Commit f9b11f2a09b4 introduced a loop to wait for process exit
> in OVS_APP_EXIT_AND_WAIT after the "exit" command has been sent.
> Unfortunately, this does not work for cases where a unixctl socket
> has to be used to send the "exit" command because the process
> ID cannot be determined from the socket path.
> 
> OVS_APP_EXIT_AND_WAIT_BY_TARGET has since been introduced to enable
> graceful termination of daemons via unixctl sockets.
> 
> This set of changes addresses the problem described above by
> making OVS_APP_EXIT_AND_WAIT_BY_TARGET take the unixctl socket
> path and corresponding process ID as separate parameters. In order
> to better detect issues in this logic in the future, checks have
> been added to verify that the pidfile exists before using its
> contents.
> 
> Tested on a Linux system.
> 
> Fixes: f9b11f2a09b4 ("tests: Make OVS_APP_EXIT_AND_WAIT() wait for process
> termination")
> Signed-off-by: Lance Richardson <lrichard at redhat.com>
> ---
>  tests/daemon.at         |  2 +-
>  tests/ovn-controller.at |  5 +++--
>  tests/ovn-sbctl.at      |  8 ++++----
>  tests/ovs-macros.at     | 16 +++++++++-------
>  tests/ovs-vswitchd.at   | 15 +++++++++------
>  tests/ovsdb-idl.at      | 42 +++++++++++++++++++++---------------------
>  tests/ovsdb-monitor.at  |  2 +-
>  tests/ovsdb-server.at   |  2 +-
>  8 files changed, 49 insertions(+), 43 deletions(-)
> 
> diff --git a/tests/daemon.at b/tests/daemon.at
> index 41c5d07..768a44e 100644
> --- a/tests/daemon.at
> +++ b/tests/daemon.at
> @@ -83,7 +83,7 @@ if test "$IS_WIN32" = "yes"; then
>    # When a 'kill pid' is done on windows (through 'taskkill //F'),
>    # pidfiles are not deleted (because it is force kill), so use
>    # 'ovs-appctl exit' instead
> -  OVS_APP_EXIT_AND_WAIT([`pwd`/unixctl])
> +  OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/unixctl], [`pwd`/pid])
>  else
>    kill `cat pid`
>  fi
> diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at
> index 13b3f53..1cb28f8 100644
> --- a/tests/ovn-controller.at
> +++ b/tests/ovn-controller.at
> @@ -127,7 +127,8 @@ check_patches \
>  on_exit 'kill `cat $ovs_base/ovn-sb/ovsdb-server-2.pid`'
> 
>  ovsdb-tool create $ovs_base/ovn-sb/ovn-sb1.db "$abs_top_srcdir"/ovn/ovn-
> sb.ovsschema
> -as ovn-sb ovsdb-server --detach --pidfile=$ovs_base/ovn-sb/ovsdb-server-2.pid
> --remote=punix:$ovs_base/ovn-sb/ovn-sb1.sock $ovs_base/ovn-sb/ovn-sb1.db
> +as ovn-sb ovsdb-server --detach --pidfile=$ovs_base/ovn-sb/ovsdb-server-2.pid
> --remote=punix:$ovs_base/ovn-sb/ovn-sb1.sock $ovs_base/ovn-sb/ovn-sb1.db
> \
> +   --unixctl=$ovs_base/ovn-sb/ovsdb-server-2.ctl
>  AT_CHECK([ovs-vsctl -- set Open_vSwitch . external-ids:ovn-
> remote=unix:$ovs_base/ovn-sb/ovn-sb1.sock])
>  check_patches
>  AT_CHECK([ovs-vsctl -- set Open_vSwitch . external-ids:ovn-
> remote=unix:$ovs_base/ovn-sb/ovn-sb.sock])
> @@ -153,7 +154,7 @@ OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
> 
>  as ovn-sb
> -OVS_APP_EXIT_AND_WAIT_BY_TARGET([ovsdb-server-2])
> +OVS_APP_EXIT_AND_WAIT_BY_TARGET([$ovs_base/ovn-sb/ovsdb-server-
> 2.ctl], [$ovs_base/ovn-sb/ovsdb-server-2.pid])
>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
> 
>  AT_CLEANUP
> diff --git a/tests/ovn-sbctl.at b/tests/ovn-sbctl.at
> index c1b57dc..4fbda04 100644
> --- a/tests/ovn-sbctl.at
> +++ b/tests/ovn-sbctl.at
> @@ -9,8 +9,8 @@ m4_define([OVN_SBCTL_TEST_START],
>     done
> 
>     dnl Start ovsdb-servers.
> -   AT_CHECK([ovsdb-server --detach --no-chdir --
> pidfile=$OVS_RUNDIR/ovnnb_db.pid --log-file=$OVS_RUNDIR/ovsdb_nb.log --
> remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db ], [0], [], [stderr])
> -   AT_CHECK([ovsdb-server --detach --no-chdir --
> pidfile=$OVS_RUNDIR/ovnsb_db.pid --log-file=$OVS_RUNDIR/ovsdb_sb.log --
> remote=punix:$OVS_RUNDIR/ovnsb_db.sock ovn-sb.db], [0], [], [stderr])
> +   AT_CHECK([ovsdb-server --detach --no-chdir --
> pidfile=$OVS_RUNDIR/ovnnb_db.pid --unixctl=$OVS_RUNDIR/ovnnb_db.ctl --
> log-file=$OVS_RUNDIR/ovsdb_nb.log --
> remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db ], [0], [], [stderr])
> +   AT_CHECK([ovsdb-server --detach --no-chdir --
> pidfile=$OVS_RUNDIR/ovnsb_db.pid --unixctl=$OVS_RUNDIR/ovnsb_db.ctl --
> log-file=$OVS_RUNDIR/ovsdb_sb.log --
> remote=punix:$OVS_RUNDIR/ovnsb_db.sock ovn-sb.db], [0], [], [stderr])
>     on_exit "kill `cat ovnnb_db.pid` `cat ovnsb_db.pid`"
>     AT_CHECK([[sed < stderr '
>  /vlog|INFO|opened log file/d
> @@ -37,8 +37,8 @@ m4_define([OVN_SBCTL_TEST_STOP],
>     AT_CHECK([check_logs "$1
>  /Broken pipe/d"])
>     OVS_APP_EXIT_AND_WAIT([ovn-northd])
> -   OVS_APP_EXIT_AND_WAIT_BY_TARGET([ovnnb_db])
> -   OVS_APP_EXIT_AND_WAIT_BY_TARGET([ovnsb_db])])
> +   OVS_APP_EXIT_AND_WAIT_BY_TARGET([$OVS_RUNDIR/ovnnb_db.ctl],
> [$OVS_RUNDIR/ovnnb_db.pid])
> +   OVS_APP_EXIT_AND_WAIT_BY_TARGET([$OVS_RUNDIR/ovnsb_db.ctl],
> [$OVS_RUNDIR/ovnsb_db.pid])])
> 
>  dnl ---------------------------------------------------------------------
> 
> diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at
> index e5710a0..fadd2be 100644
> --- a/tests/ovs-macros.at
> +++ b/tests/ovs-macros.at
> @@ -132,20 +132,22 @@ m4_define([OVS_WAIT_WHILE],
> 
>  dnl OVS_APP_EXIT_AND_WAIT(DAEMON)
>  dnl
> -dnl Ask the daemon named DAEMON to exit, via ovs-appctl, and then waits for
> it
> +dnl Ask the daemon named DAEMON to exit, via ovs-appctl, and then wait for
> it
>  dnl to exit.
>  m4_define([OVS_APP_EXIT_AND_WAIT],
> -  [TMPPID=$(cat "$OVS_RUNDIR"/$1.pid 2>/dev/null)
> +  [AT_CHECK([test -e $OVS_RUNDIR/$1.pid])
> +   TMPPID=$(cat $OVS_RUNDIR/$1.pid)
>     AT_CHECK([ovs-appctl -t $1 exit])
>     OVS_WAIT_WHILE([kill -0 $TMPPID 2>/dev/null])])
> 
> -dnl OVS_APP_EXIT_AND_WAIT_BY_TARGET(DAEMON)
> +dnl OVS_APP_EXIT_AND_WAIT_BY_TARGET(TARGET, PIDFILE)
>  dnl
> -dnl Ask the daemon named DAEMON to exit, via ovs-appctl (using the target
> -dnl argument), and then waits for it to exit.
> +dnl Ask the daemon identified by TARGET to exit, via ovs-appctl (using the
> target
> +dnl argument), and then wait for it to exit.
>  m4_define([OVS_APP_EXIT_AND_WAIT_BY_TARGET],
> -  [TMPPID=`cat "$OVS_RUNDIR"/$1.pid 2>/dev/null`
> -   AT_CHECK([ovs-appctl --target=$OVS_RUNDIR/ovsdb-server.$TMPPID.ctl
> exit])
> +  [AT_CHECK([test -e $2])
> +   TMPPID=$(cat $2)
> +   AT_CHECK([ovs-appctl --target=$1 exit])
>     OVS_WAIT_WHILE([kill -0 $TMPPID 2>/dev/null])])
> 
>  dnl on_exit "COMMAND"
> diff --git a/tests/ovs-vswitchd.at b/tests/ovs-vswitchd.at
> index 816d0a2..e34e05e 100644
> --- a/tests/ovs-vswitchd.at
> +++ b/tests/ovs-vswitchd.at
> @@ -70,13 +70,14 @@ AT_SETUP([ovs-vswitchd -- start additional ovs-vswitchd
> process])
>  OVS_VSWITCHD_START
> 
>  # start another ovs-vswitchd process.
> -ovs-vswitchd --log-file=fakelog --unixctl="`pwd`"/unixctl &
> +ovs-vswitchd --log-file=fakelog --unixctl="`pwd`"/unixctl --pidfile=`pwd`/ovs-
> vswitchd-2.pid &
> +on_exit 'kill `cat ovs-vswitchd-2.pid`'
> 
>  # sleep for a while
>  sleep 5
> 
>  # stop the process.
> -OVS_APP_EXIT_AND_WAIT([`pwd`/unixctl])
> +OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/unixctl], [`pwd`/ovs-vswitchd-
> 2.pid])
> 
>  # check the fakelog, should only see one ERR for reporting
>  # the existing ovs-vswitchd process.
> @@ -94,7 +95,8 @@ AT_SETUP([ovs-vswitchd -- switch over to another ovs-
> vswitchd process])
>  OVS_VSWITCHD_START
> 
>  # start a new ovs-vswitchd process.
> -ovs-vswitchd --log-file=fakelog --enable-dummy --unixctl="`pwd`"/unixctl &
> +ovs-vswitchd --log-file=fakelog --enable-dummy --unixctl="`pwd`"/unixctl --
> pidfile=ovs-vswitchd-2.pid &
> +on_exit 'kill `cat ovs-vswitchd-2.pid`'
> 
>  # sleep for a while.
>  sleep 5
> @@ -112,7 +114,7 @@ bridge br0: using datapath ID
>  ])
> 
>  # stop the process.
> -OVS_APP_EXIT_AND_WAIT([`pwd`/unixctl])
> +OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/unixctl], [ovs-vswitchd-2.pid])
> 
>  # check the fakelog, should not see WARN/ERR/EMER log other than the one
>  # for reporting the existing ovs-vswitchd process and the one for killing
> @@ -132,13 +134,14 @@ dnl -------------------------------------------------------------
> ---------
>  AT_SETUP([ovs-vswitchd -- invalid database path])
> 
>  # start an ovs-vswitchd process with invalid db path.
> -ovs-vswitchd unix:invalid.db.sock --log-file=fakelog --enable-dummy --
> unixctl="`pwd`"/unixctl &
> +ovs-vswitchd unix:invalid.db.sock --log-file=fakelog --enable-dummy --
> unixctl="`pwd`"/unixctl --pidfile=ovs-vswitchd-2.pid &
> +on_exit 'kill `cat ovs-vswitchd-2.pid`'
> 
>  # sleep for a while.
>  sleep 10
> 
>  # stop the process.
> -OVS_APP_EXIT_AND_WAIT([`pwd`/unixctl])
> +OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/unixctl], [ovs-vswitchd-2.pid])
> 
>  # should not see this log (which indicates high cpu utilization).
>  AT_CHECK([grep "wakeup due to" fakelog], [ignore])
> diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
> index 057d09f..cda0f79 100644
> --- a/tests/ovsdb-idl.at
> +++ b/tests/ovsdb-idl.at
> @@ -21,8 +21,8 @@ m4_define([OVSDB_CHECK_IDL_C],
>     AT_KEYWORDS([ovsdb server idl positive $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     m4_if([$2], [], [],
>       [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
>     AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10
> idl unix:socket $3],
> @@ -39,8 +39,8 @@ m4_define([OVSDB_CHECK_IDL_PYN],
>     AT_KEYWORDS([ovsdb server idl positive Python $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     m4_if([$2], [], [],
>       [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
>     AT_CHECK([$8 $srcdir/test-ovsdb.py  -t10 idl $srcdir/idltest.ovsschema
> unix:socket $3],
> @@ -62,8 +62,8 @@
> m4_define([OVSDB_CHECK_IDL_REGISTER_COLUMNS_PYN],
>     AT_KEYWORDS([ovsdb server idl positive Python register_columns $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     m4_if([$2], [], [],
>       [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
>     AT_CHECK([$8 $srcdir/test-ovsdb.py  -t10 idl $srcdir/idltest.ovsschema
> unix:socket ?simple:b,ba,i,ia,r,ra,s,sa,u,ua?link1:i,k,ka,l2?link2:i,l1 $3],
> @@ -86,8 +86,8 @@ m4_define([OVSDB_CHECK_IDL_TCP_PYN],
>     AT_KEYWORDS([ovsdb server idl positive Python with tcp socket $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m'
> --detach --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> remote=ptcp:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-
> server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket
> --remote=ptcp:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
> 
>     m4_if([$2], [], [],
> @@ -113,8 +113,8 @@ m4_define([OVSDB_CHECK_IDL_TCP6_PYN],
>     AT_KEYWORDS([ovsdb server idl positive Python with tcp6 socket $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m'
> --detach --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=ptcp:0:[[::1]] --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-
> server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=ptcp:0:[[::1]]
> --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
>     echo "TCP_PORT=$TCP_PORT"
> 
> @@ -148,13 +148,13 @@ m4_define([OVSDB_CHECK_IDL_PASSIVE_TCP_PY],
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
>     # find free TCP port
> -   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m'
> --detach --no-chdir --pidfile="`pwd`"/ovsdb-server1.pid --
> remote=ptcp:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-
> server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --
> remote=ptcp:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
>     OVSDB_SERVER_SHUTDOWN
> 
>     # start OVSDB server in passive mode
> -   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m'
> --detach --no-chdir --pidfile="`pwd`"/ovsdb-server2.pid --remote=punix:socket --
> remote=tcp:127.0.0.1:$TCP_PORT --unixctl="`pwd`"/unixctl db], [0], [ignore],
> [ignore])
> +   AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-
> server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket
> --remote=tcp:127.0.0.1:$TCP_PORT --unixctl="`pwd`"/unixctl db], [0], [ignore],
> [ignore])
>     AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl_passive
> $srcdir/idltest.ovsschema ptcp:127.0.0.1:$TCP_PORT $3],
>        [0], [stdout], [ignore])
>     AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
> @@ -594,8 +594,8 @@ AT_KEYWORDS([ovsdb server idl positive])
>  # tolerates them being missing.
>  AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest2.ovsschema],
>      [0], [stdout], [ignore])
> -AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach -
> -no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -on_exit 'kill `cat *.pid`'
> +AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach -
> -no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +on_exit 'kill `cat pid`'
>  AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10
> idl unix:socket ['["idltest",
>        {"op": "insert",
>         "table": "link1",
> @@ -666,8 +666,8 @@ m4_define([OVSDB_CHECK_IDL_FETCH_COLUMNS_PY],
>     AT_KEYWORDS([ovsdb server idl positive Python increment fetch $6])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     m4_if([$2], [], [],
>       [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
>     AT_CHECK([$PYTHON $srcdir/test-ovsdb.py  -t10 idl $srcdir/idltest.ovsschema
> unix:socket [$3] $4],
> @@ -713,8 +713,8 @@ m4_define([OVSDB_CHECK_IDL_TRACK_C],
>     AT_KEYWORDS([ovsdb server idl tracking positive $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     m4_if([$2], [], [],
>       [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
>     AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10
> -c idl unix:socket $3],
> @@ -845,8 +845,8 @@
> m4_define([OVSDB_CHECK_IDL_PARTIAL_UPDATE_MAP_COLUMN],
>     AT_KEYWORDS([ovsdb server idl partial update map column positive $5])
>     AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
>                    [0], [stdout], [ignore])
> -   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/ovsdb-server.pid --remote=punix:socket --
> unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
> -   on_exit 'kill `cat *.pid`'
> +   AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach
> --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl
> db], [0], [ignore], [ignore])
> +   on_exit 'kill `cat pid`'
>     m4_if([$2], [], [],
>       [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
>     AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10
> -c idl-partial-update-map-column unix:socket $3],
> diff --git a/tests/ovsdb-monitor.at b/tests/ovsdb-monitor.at
> index 37383fa..0649f2a 100644
> --- a/tests/ovsdb-monitor.at
> +++ b/tests/ovsdb-monitor.at
> @@ -39,7 +39,7 @@ m4_define([OVSDB_CHECK_MONITOR],
>                       [ignore], [ignore], [kill `cat server-pid client-pid`])])
>     AT_CHECK([ovsdb-client transact unix:socket '[["$4"]]'], [0],
>              [ignore], [ignore], [kill `cat server-pid client-pid`])
> -   OVS_APP_EXIT_AND_WAIT(["`pwd`"/unixctl])
> +   OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/unixctl], [`pwd`/server-pid])
>     OVS_WAIT_UNTIL([test ! -e client-pid])
>     AT_CHECK([${PERL} $srcdir/ovsdb-monitor-sort.pl < output | ${PERL}
> $srcdir/uuidfilt.pl], [0], [$7], [ignore])
>     AT_CLEANUP])
> diff --git a/tests/ovsdb-server.at b/tests/ovsdb-server.at
> index 0ed7e87..9da511d 100644
> --- a/tests/ovsdb-server.at
> +++ b/tests/ovsdb-server.at
> @@ -1,7 +1,7 @@
>  AT_BANNER([OVSDB -- ovsdb-server transactions (Unix sockets)])
> 
>  m4_define([OVSDB_SERVER_SHUTDOWN],
> -  [OVS_APP_EXIT_AND_WAIT(["`pwd`"/unixctl])])
> +  [OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/unixctl], [`pwd`/pid])])
> 
>  # OVSDB_CHECK_EXECUTION(TITLE, SCHEMA, TRANSACTIONS, OUTPUT,
> [KEYWORDS])
>  #
> --
> 2.5.5
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev


More information about the dev mailing list