Index: commonmod.scm ================================================================== --- commonmod.scm +++ commonmod.scm @@ -43,11 +43,10 @@ (include "megatest-version.scm") (include "megatest-fossil-hash.scm") ;; Globals -(define *runremote* #f) ;; if set up for server communication this will hold ;; db stats (define *db-stats* (make-hash-table)) ;; hash of vectors < count duration-total > (define *db-stats-mutex* (make-mutex)) (define *toppath* #f) (define *db-keys* #f) Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -46,17 +46,22 @@ matchable files) (declare (unit db)) (declare (uses common)) +(declare (uses commonmod)) (declare (uses dbmod)) (declare (uses debugprint)) (declare (uses dbfile)) (declare (uses keys)) (declare (uses ods)) ;; (declare (uses client)) (declare (uses mt)) +(declare (uses rmtmod)) ;; only needed for *runremote* + +(import commonmod + rmtmod) (include "common_records.scm") (include "db_records.scm") (include "key_records.scm") (include "run_records.scm") Index: launch.scm ================================================================== --- launch.scm +++ launch.scm @@ -29,10 +29,11 @@ (import (prefix sqlite3 sqlite3:)) (declare (unit launch)) (declare (uses subrun)) (declare (uses common)) +(declare (uses commonmod)) (declare (uses configf)) (declare (uses db)) (declare (uses ezsteps)) (declare (uses debugprint)) @@ -39,11 +40,13 @@ (include "common_records.scm") (include "key_records.scm") (include "db_records.scm") (include "megatest-fossil-hash.scm") -(import debugprint) +(import debugprint + commonmod + ) ;;====================================================================== ;; ezsteps ;;====================================================================== Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -20,16 +20,22 @@ (include "megatest-version.scm") ;; fake out readline usage of toplevel-command (define (toplevel-command . a) #f) +;; notes: +;; 1. the uses of .import are needed +;; 2. the order is important +;; (declare (uses common)) ;; (declare (uses megatest-version)) (declare (uses commonmod)) (declare (uses commonmod.import)) (declare (uses debugprint)) (declare (uses debugprint.import)) +(declare (uses artifacts)) +(declare (uses artifacts.import)) (declare (uses dbfile)) (declare (uses dbfile.import)) (declare (uses margs)) (declare (uses runs)) (declare (uses launch)) @@ -49,11 +55,13 @@ (declare (uses db)) (declare (uses dbmod)) (declare (uses dbmod.import)) (declare (uses rmtmod)) (declare (uses clientmod)) +(declare (uses clientmod.import)) (declare (uses servermod)) +(declare (uses servermod.import)) ;; (declare (uses mtargs)) ;; (declare (uses mtargs.import)) ;; (declare (uses ftail)) ;; (import ftail) @@ -63,10 +71,16 @@ dbfile dbmod servermod ) + +(include "commonmod.import.scm") +(include "artifacts.import.scm") +(include "rmtmod.import.scm") +(include "clientmod.import.scm") +(include "servermod.import.scm") (define *db* #f) ;; this is only for the repl, do not use in general!!!! (include "common_records.scm") (include "key_records.scm") @@ -2415,10 +2429,13 @@ (set! *db* dbstructs) (import extras) ;; might not be needed ;; (import csi) (import readline) (import apropos) + (import commonmod) + (import rmtmod) + (import apimod) (import dbfile) ;; (import (prefix sqlite3 sqlite3:)) ;; doesn't work ... (if *use-new-readline* (begin Index: rmtmod.scm ================================================================== --- rmtmod.scm +++ rmtmod.scm @@ -42,10 +42,11 @@ clientmod dbmod apimod debugprint ) + ;; ;; THESE ARE ALL CALLED ON THE CLIENT SIDE!!! ;; @@ -54,10 +55,12 @@ ;; grep define ../rmt.scm | grep rmt: |perl -pi -e 's/\(define\s+\((\S+)\W.*$/\1/'|sort -u ;;====================================================================== ;; S U P P O R T F U N C T I O N S ;;====================================================================== + +(define *runremote* #f) ;; if a server is either running or in the process of starting call client:setup ;; else return #f to let the calling proc know that there is no server available ;; (define (rmt:get-connection-info areapath) ;; TODO: push areapath down. Index: servermod.scm ================================================================== --- servermod.scm +++ servermod.scm @@ -193,10 +193,27 @@ (if (not (file-exists? logd))(create-directory logd #t)) (setenv "NBFAKE_LOG" logf) (system (conc "nbfake mtserve -start-dir "areapath)))) +;; oldest server alive determines host then choose random of youngest +;; five servers on that host +;; +;; mode: +;; best - get best server (random of newest five) +;; home - get home host based on oldest server +;; info - print info +(define (server:choose-server areapath #!optional (mode 'best)) + ;; age is current-starttime + ;; find oldest alive + ;; 1. sort by age ascending and ping until good + ;; find alive rand from youngest + ;; 1. sort by age descending + ;; 2. take five + ;; 3. check alive, discard if not and repeat + ;; first we clean up old server files + '()) ;;====================================================================== ;; OLD SERVER STUFF BELOW HERE ;;======================================================================