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

[Xen-devel] [OSSTEST PATCH 11/16] mg-schema-test-database: Sort out daemons; provide `daemons' subcommand



We arrange for the test configuration to look for the daemons on a
different host and port, and we provide a convenient way to run such a
pair of daemons.

Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
v2: Moved setting of *Daemon{Host,Port} to this patch (was
     previously in `mg-schema-test-database: New script')
---
 mg-schema-test-database |   63 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)

diff --git a/mg-schema-test-database b/mg-schema-test-database
index a1eb49c..73d92f3 100755
--- a/mg-schema-test-database
+++ b/mg-schema-test-database
@@ -4,7 +4,8 @@
 #
 #
 #  ./mg-schema-test-database create [_SUFFIX] [TASK...] \
-#              [-fMINFLIGHT | -f-NUMFLIGHTS]
+#              [-fMINFLIGHT | -f-NUMFLIGHTS] \
+#              [-hCTRL_DAEMONS_HOST] [-fOWNER_D_PORT[,QUEUE_D_PORT]]
 #
 # does `drop' and then creates
 #   - the database    osstestdb_test_SUFFIX
@@ -16,12 +17,24 @@
 # TASKs become idle in the test copy.  Others become allocated to
 # a specially-created `owned by someone in real db' task.
 #
+# Default for CTRL_DAEMONS_HOST is localhost; if no port is supplied,
+# we use the corresponding production port + 2; if only one port is
+# supplied we use that and the next port number.
+#
 #
 #  ./mg-schema-test-database drop [_SUFFIX]
 #
 # deletes your test database and removes the local-config file
 #
 #
+#  ./mg-schema-test-database daemons [_SUFFIX]
+#
+# synchronously runs owner and queue daemons for your test database
+#
+# NB that you can't drop a test database with these daemons running,
+# because Postgres will refuse to drop a database that anyone is
+# connected to.
+
 
 set -e -o posix ${OSSTEST_DEBUG:+-x}
 
@@ -114,6 +127,9 @@ END
 }
 
 withtest () {
+       if ! [ -e "$tcfg" ]; then
+               fail "test $dbname not set up ($tcfg does not exist)"
+       fi
        OSSTEST_CONFIG="$test_cfg_setting" "$@"
 }
 
@@ -194,6 +210,10 @@ create)
                        ;;
                -f*)    minflight="${arg#-f}"
                        ;;
+               -h*)    ctrlhost="${arg#-h}"
+                       ;;
+               -p*)    ctrlports="${arg#-p}"
+                       ;;
                *)      fail "bad arg to create"
                        ;;
                esac
@@ -224,6 +244,18 @@ END
                ;;
        esac
 
+       if [ "x$ctrlhost" = x ]; then
+               ctrlhost=localhost
+       fi
+       case "$ctrlports" in
+               *,*)    ;;
+               ?*)     ctrlports+=,$(( $ctrlports + 1 )) ;;
+               '')
+ ctrlports=$(( $(getconfig OwnerDaemonPort) + 2)),$((
+               $(getconfig QueueDaemonPort) + 2))
+                       ;;
+       esac
+
        #---------- preparation and data-gathering ----------
 
        bad=$(  psql_query <<END
@@ -244,6 +276,8 @@ END
 
        printf "Setting up %s (minflight=%d, tasks=%s)...\n" \
                $dbname "$minflight" "${tasks# }"
+       printf "Configuring for any daemons to be on %s:%s.\n" \
+               $ctrlhost $ctrlports
 
        # create the config overlay
        perl >$tcfg.tmp -we '
@@ -258,6 +292,12 @@ END
                        "port=$dbh_tests->{pg_port}\n"
                        or die $!;
        '
+       cat >>$tcfg.tmp <<END
+OwnerDaemonHost $ctrlhost
+QueueDaemonHost $ctrlhost
+OwnerDaemonPort ${ctrlports%,*}
+QueueDaemonPort ${ctrlports#*,}
+END
        mv -f $tcfg.tmp $tcfg
 
        # Extract the schema for reference
@@ -444,6 +484,27 @@ END
 
        ;;
 
+#========== DAEMONS ==========
+
+daemons)
+       parse_only_suffix "$@"
+
+       dbname
+
+       printf "Running daemons for %s....\n" "$dbname"
+
+       withtest \
+       exec_resetting_sigint ./ms-ownerdaemon &
+
+       sleep 1
+
+       withtest \
+       exec_resetting_sigint ./ms-queuedaemon &
+
+       wait
+
+       ;;
+
 #========== EPILOGUE ==========
 
 *)
-- 
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®.