[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST PATCH 07/16] cri-getconfig: Provide debugging for get_psql_cmd



This allows us to execute only the first <some number> SQL
invocations.  The first non-executed one is dumped, instead, by having
get_psql_command print a rune involving ./mg-debug-fail (which the
caller will then execute).

The locking makes things work roughly-correctly if get_psql_cmd is run
in multiple processes at once: it is not defined exactly which
invocations get which counter values, but they will all work properly
and get exactly one counter value each.

If set -x is in force, turn it off for get_psql_cmd: our perl rune is
uninteresting to see repeated ad infinitum in debugging output.

Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
 cri-getconfig |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/cri-getconfig b/cri-getconfig
index 973f1c0..7b75700 100644
--- a/cri-getconfig
+++ b/cri-getconfig
@@ -41,6 +41,22 @@ getrepos() {
 }
 
 get_psql_cmd () {
+       # To use this:
+       #  on each test run, rm -f t.psql-counter
+       #  and set OSSTEST_PSQL_ONLY_DO to an integer
+       if [ "x$OSSTEST_PSQL_ONLY_DO" != x ]; then
+               local f=t.psql-counter
+               psql_counter=$( with-lock-ex -w $f.lock bash -ec '
+                       psql_counter=$(cat '$f' || echo 0)
+                       echo $(( $psql_counter + 1 )) >'$f'.tmp
+                       mv -f '$f'.tmp '$f'
+                       echo $psql_counter' )
+               if ! [ $psql_counter -lt $OSSTEST_PSQL_ONLY_DO ]; then
+                       printf './mg-debug-fail '
+               fi
+       fi
+
+       set +x
        perl -we '
        use Osstest;
        use Osstest::Executive;
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.