@@ -8,11 +8,11 @@ ;; PURPOSE. ;; (include "common.scm") ;; (include "megatest-version.scm") -(use sqlite3 srfi-1 posix regex regex-case srfi-69 base64 format readline apropos) ;; (srfi 18) extras) +(use sqlite3 srfi-1 posix regex regex-case srfi-69 base64 format readline apropos zmq) ;; (srfi 18) extras) (import (prefix sqlite3 sqlite3:)) (import (prefix base64 base64:)) (declare (uses common)) (declare (uses megatest-version)) @@ -252,10 +252,35 @@ (if (args:get-arg "-env2file") (begin (save-environment-as-files (args:get-arg "-env2file")) (set! *didsomething* #t))) + +;;====================================================================== +;; Start the server - can be done in conjunction with -runall or -runtests (one day...) +;; we start the server if not running else start the client thread +;;====================================================================== +(if (args:get-arg "-server") + (let* ((toppath (setup-for-run)) + (db (if toppath (open-db) #f))) + (debug:print-info 0 "Starting the standalone server") + (if db + (let* ((th2 (make-thread (lambda () + (server:run (args:get-arg "-server"))))) + (th3 (make-thread (lambda () + (server:keep-running db))))) + (thread-start! th3) + (thread-start! th2) + (thread-join! th3) + (set! *didsomething* #t)) + (debug:print 0 "ERROR: Failed to setup for megatest"))) + ;; not starting server? then start the client + (if (server:client-setup) + (debug:print-info 0 "connected as client") + (begin + (debug:print 0 "ERROR: Failed to connect as client") + (exit)))) ;;====================================================================== ;; Remove old run(s) ;;====================================================================== @@ -360,27 +385,10 @@ tests)))) runs) (set! *didsomething* #t) ))) -;;====================================================================== -;; Start the server - can be done in conjunction with -runall or -runtests (one day...) -;;====================================================================== -(if (args:get-arg "-server") - (let* ((toppath (setup-for-run)) - (db (if toppath (open-db) #f))) - (debug:print-info 0 "Starting the standalone server") - (if db - (let* ((host:port (db:get-var db "SERVER")) ;; this doen't support multiple servers BUG!!!! - (th2 (server:start db (args:get-arg "-server"))) - (th3 (make-thread (lambda () - (server:keep-running db host:port))))) - (thread-start! th3) - (thread-join! th3) - (set! *didsomething* #t)) - (debug:print 0 "ERROR: Failed to setup for megatest")))) - ;;====================================================================== ;; full run ;;====================================================================== ;; get lock in db for full run for this directory @@ -397,21 +405,34 @@ ;; if still ok to run tasks ;; process deferred tasks per above steps ;; run all tests are are Not COMPLETED and PASS or CHECK (if (args:get-arg "-runall") - (general-run-call - "-runall" - "run all tests" - (lambda (target runname keys keynames keyvallst) + (let ((server-thread #f)) + (if (args:get-arg "-server") + (let ((toppath (setup-for-run)) + (db (open-db))) + (if db + (let* ((host:port (db:get-var db "SERVER")) ;; this doen't support multiple servers BUG!!!! + (th2 (server:start db (args:get-arg "-server"))) + (th3 (make-thread (lambda () + (server:keep-running db host:port))))) + (thread-start! th3) + (set! server-thread th3))))) + (general-run-call + "-runall" + "run all tests" + (lambda (target runname keys keynames keyvallst) (runs:run-tests target runname (if (args:get-arg "-testpatt") (args:get-arg "-testpatt") "%/%") user - args:arg-hash)))) ;; ) + args:arg-hash))) + (if server-thread + (thread-join! server-thread)))) ;;====================================================================== ;; run one test ;;======================================================================