Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -1233,11 +1233,12 @@ ;; do not run these as part of the transaction (define db:special-queries '(rollup-tests-pass-fail db:roll-up-pass-fail-counts login - immediate)) + immediate + flush)) ;; not used, intended to indicate to run in calling process (define db:run-local-queries '()) ;; rollup-tests-pass-fail)) ;; The queue is a list of vectors where the zeroth slot indicates the type of query to @@ -1262,11 +1263,12 @@ (debug:print-info 11 "stmt-key=" stmt-key ", stmt=" stmt) (if stmt (hash-table-set! queries stmt-key (sqlite3:prepare db (car stmt))) (if (procedure? stmt-key) (hash-table-set! queries stmt-key #f) - (debug:print 0 "ERROR: Missing query spec for " stmt-key "!"))))))) + (if (not (member stmt-key db:special-queries)) + (debug:print 0 "ERROR: Missing query spec for " stmt-key "!")))))))) data) ;; outer loop to handle special queries that cannot be handled in the ;; transaction. (let outerloop ((special-qry #f) @@ -1311,10 +1313,12 @@ (equal? megatest-version calling-vers)) (begin (hash-table-set! *logged-in-clients* client-key (current-seconds)) (server:reply pubsock return-address '(#t "successful login"))) ;; path matches - pass! Should vet the caller at this time ... (list #f (conc "Login failed due to mismatch paths: " calling-path ", " *toppath*)))))) + ((flush) + (server:reply pubsock return-address '(#t "sucessful flush"))) (else (debug:print 0 "ERROR: Unrecognised queued call " qry " " params))))) (if (not (null? stmts)) (outerloop #f stmts))) Index: tests/tests.scm ================================================================== --- tests/tests.scm +++ tests/tests.scm @@ -78,39 +78,41 @@ ;;====================================================================== (test "setup for run" #t (begin (setup-for-run) (string? (getenv "MT_RUN_AREA_HOME")))) -(test "server-register, get-best-server" '("bob" 1234) (let ((res #f)) - (open-run-close tasks:server-register tasks:open-db 1 "bob" 1234 100 'live) - (set! res (open-run-close tasks:get-best-server tasks:open-db)) - res)) +(test "server-register, get-best-server" #t (let ((res #f)) + (open-run-close tasks:server-register tasks:open-db 1 "bob" 1234 1235 100 'live) + (set! res (open-run-close tasks:get-best-server tasks:open-db)) + (number? (cadddr res)))) + (test "de-register server" #t (let ((res #f)) - (open-run-close tasks:server-deregister tasks:open-db "bob" port: 1234) + (open-run-close tasks:server-deregister tasks:open-db "bob" pullport: 1234) (list? (open-run-close tasks:get-best-server tasks:open-db)))) (define hostinfo #f) -(test #f #t (let ((dat (open-run-close tasks:get-best-server tasks:open-db))) - (set! hostinfo dat) - (and (string? (car dat)) - (number? (cadr dat))))) +(test "get-best-server" #t (let ((dat (open-run-close tasks:get-best-server tasks:open-db))) + (set! hostinfo dat) ;; host ip pullport pubport + (and (string? (car dat)) + (number? (caddr dat))))) -(test #f #t (let ((zmq-socket (apply server:client-connect hostinfo))) +(test #f #t (let ((zmq-socket (server:client-connect + (cadr hostinfo) + (caddr hostinfo) + (cadddr hostinfo)))) (set! *runremote* zmq-socket) - (socket? *runremote*))) + (socket? (vector-ref *runremote* 0)))) (test #f #t (let ((res (server:client-login *runremote*))) (car res))) -(test #f #t (socket? *runremote*)) +(test #f #t (socket? (vector-ref *runremote* 0))) ;; (test #f #t (server:client-setup)) (test #f #t (car (cdb:login *runremote* *toppath* *my-client-signature*))) -(test #f #t (open-run-close tasks:get-best-server tasks:open-db)) - ;;====================================================================== ;; C O N F I G F I L E S ;;====================================================================== (define conffile #f)