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@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
}
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;