Overview
Comment: | Added logic to client start to start needed run servers |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | inmem-per-run-db-per-run-server |
Files: | files | file ages | folders |
SHA1: |
5b61400aebac24e6fc58f945675b1129 |
User & Date: | matt on 2014-01-26 23:41:42 |
Other Links: | branch diff | manifest | tags |
Context
2014-01-27
| ||
23:41 | Pulled in loadrunner, cleaned up some api changes related to migration to inmem db. check-in: 557dd502da user: matt tags: inmem-per-run-db-per-run-server | |
2014-01-26
| ||
23:41 | Added logic to client start to start needed run servers check-in: 5b61400aeb user: matt tags: inmem-per-run-db-per-run-server | |
23:33 | Correct call to get db in register-run, added exit when race condition causes hostinfo to not be found check-in: bc2f918b2f user: matt tags: inmem-per-run-db-per-run-server | |
Changes
Modified client.scm from [c05aaa49f1] to [d859fde28d].
︙ | ︙ | |||
48 49 50 51 52 53 54 | ;; ;; There are two scenarios. ;; 1. We are a test manager and we received *transport-type* and *runremote* via cmdline ;; 2. We are a run tests, list runs or other interactive process and we must figure out ;; *transport-type* and *runremote* from the monitor.db ;; ;; client:setup | | > | > > > | | > | | | | | | | | | | | | | | | | | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | ;; ;; There are two scenarios. ;; 1. We are a test manager and we received *transport-type* and *runremote* via cmdline ;; 2. We are a run tests, list runs or other interactive process and we must figure out ;; *transport-type* and *runremote* from the monitor.db ;; ;; client:setup (define (client:setup run-id #!key (remaining-tries 3)) (if (not *toppath*) (if (not (setup-for-run)) (begin (debug:print 0 "ERROR: failed to find megatest.config, exiting") (exit)))) ;; (push-directory *toppath*) ;; This is probably NOT needed ;; clients get the sdb:qry proc created here ;; (if (not sdb:qry) ;; (begin ;; (set! sdb:qry (make-sdb:qry (conc *toppath* "/db/strings.db"))) ;; we open the normalization helpers here ;; (sdb:qry 'setup #f))) (let ((hostinfo (and run-id (hash-table-ref/default *runremote* run-id #f)))) (debug:print-info 11 "for run-id=" run-id ", *transport-type* is " *transport-type*) (if hostinfo hostinfo ;; have hostinfo - just return it (let* ((hostinfo (open-run-close tasks:get-server tasks:open-db run-id)) (transport (if hostinfo (string->symbol (tasks:hostinfo-get-transport hostinfo)) 'http))) (if (not hostinfo) (if (> remaining-tries 0) (begin (server:ensure-running run-id) (client:setup run-id remaining-tries: (- remaining-tries 1))) (begin (debug:print 0 "ERROR: Expected to be able to connect to a server by now. No server available for run-id = " run-id) (exit 1))) (begin (hash-table-set! *runremote* run-id hostinfo) (debug:print-info 11 "CLIENT SETUP, hostinfo=" hostinfo) (debug:print-info 11 "Using transport type of " transport (if hostinfo (conc " to connect to " hostinfo) "")) (case *transport-type* ;; ((fs)(if (not *megatest-db*)(set! *megatest-db* (open-db)))) ((http) ;; this saves the hostinfo in the *runremote* hash and returns it (http-transport:client-connect run-id (tasks:hostinfo-get-interface hostinfo) (tasks:hostinfo-get-port hostinfo))) ((zmq) (zmq-transport:client-connect (tasks:hostinfo-get-interface hostinfo) (tasks:hostinfo-get-port hostinfo) (tasks:hostinfo-get-pubport hostinfo))) (else ;; default to fs (debug:print 0 "ERROR: unrecognised transport type " *transport-type* " exiting now.") (exit))))))))) ;; (pop-directory))) ;; client:signal-handler (define (client:signal-handler signum) (handle-exceptions exn (debug:print " ... exiting ...") (let ((th1 (make-thread (lambda () |
︙ | ︙ |