Artifact
0201b799084896414a6f63d75d3fb66773fd9af0 :
File
launch.scm
— part of check-in
[35d5a09470]
at
2012-02-26 07:47:52
on branch trunk
— Broke connection to server out of open-db
(user:
matt
size: 24747)
0000: 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 32 30 .;; Copyright 20
0010: 30 36 2d 32 30 31 31 2c 20 4d 61 74 74 68 65 77 06-2011, Matthew
0020: 20 57 65 6c 6c 61 6e 64 2e 0a 3b 3b 20 0a 3b 3b Welland..;; .;;
0030: 20 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 This program i
0040: 73 20 6d 61 64 65 20 61 76 61 69 6c 61 62 6c 65 s made available
0050: 20 75 6e 64 65 72 20 74 68 65 20 47 4e 55 20 47 under the GNU G
0060: 50 4c 20 76 65 72 73 69 6f 6e 20 32 2e 30 20 6f PL version 2.0 o
0070: 72 0a 3b 3b 20 20 67 72 65 61 74 65 72 2e 20 53 r.;; greater. S
0080: 65 65 20 74 68 65 20 61 63 63 6f 6d 70 61 6e 79 ee the accompany
0090: 69 6e 67 20 66 69 6c 65 20 43 4f 50 59 49 4e 47 ing file COPYING
00a0: 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 3b 3b for details..;;
00b0: 20 0a 3b 3b 20 20 54 68 69 73 20 70 72 6f 67 72 .;; This progr
00c0: 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 am is distribute
00d0: 64 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 d WITHOUT ANY WA
00e0: 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 RRANTY; without
00f0: 65 76 65 6e 20 74 68 65 0a 3b 3b 20 20 69 6d 70 even the.;; imp
0100: 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 lied warranty of
0110: 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 MERCHANTABILITY
0120: 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 or FITNESS FOR
0130: 41 20 50 41 52 54 49 43 55 4c 41 52 0a 3b 3b 20 A PARTICULAR.;;
0140: 20 50 55 52 50 4f 53 45 2e 0a 0a 3b 3b 3d 3d 3d PURPOSE...;;===
0150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0180: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0190: 3d 3d 3d 0a 3b 3b 20 6c 61 75 6e 63 68 20 61 20 ===.;; launch a
01a0: 74 61 73 6b 20 2d 20 74 68 69 73 20 72 75 6e 73 task - this runs
01b0: 20 6f 6e 20 74 68 65 20 6f 72 69 67 69 6e 61 74 on the originat
01c0: 69 6e 67 20 68 6f 73 74 2c 20 74 65 73 74 73 20 ing host, tests
01d0: 74 68 65 6d 73 65 6c 76 65 73 0a 3b 3b 0a 3b 3b themselves.;;.;;
01e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0220: 3d 3d 3d 3d 3d 3d 0a 0a 28 75 73 65 20 72 65 67 ======..(use reg
0230: 65 78 20 72 65 67 65 78 2d 63 61 73 65 20 62 61 ex regex-case ba
0240: 73 65 36 34 20 73 71 6c 69 74 65 33 20 73 72 66 se64 sqlite3 srf
0250: 69 2d 31 38 29 0a 28 69 6d 70 6f 72 74 20 28 70 i-18).(import (p
0260: 72 65 66 69 78 20 62 61 73 65 36 34 20 62 61 73 refix base64 bas
0270: 65 36 34 3a 29 29 0a 28 69 6d 70 6f 72 74 20 28 e64:)).(import (
0280: 70 72 65 66 69 78 20 73 71 6c 69 74 65 33 20 73 prefix sqlite3 s
0290: 71 6c 69 74 65 33 3a 29 29 0a 0a 28 64 65 63 6c qlite3:))..(decl
02a0: 61 72 65 20 28 75 6e 69 74 20 6c 61 75 6e 63 68 are (unit launch
02b0: 29 29 0a 28 64 65 63 6c 61 72 65 20 28 75 73 65 )).(declare (use
02c0: 73 20 63 6f 6d 6d 6f 6e 29 29 0a 28 64 65 63 6c s common)).(decl
02d0: 61 72 65 20 28 75 73 65 73 20 63 6f 6e 66 69 67 are (uses config
02e0: 66 29 29 0a 28 64 65 63 6c 61 72 65 20 28 75 73 f)).(declare (us
02f0: 65 73 20 64 62 29 29 0a 0a 28 69 6e 63 6c 75 64 es db))..(includ
0300: 65 20 22 63 6f 6d 6d 6f 6e 5f 72 65 63 6f 72 64 e "common_record
0310: 73 2e 73 63 6d 22 29 0a 28 69 6e 63 6c 75 64 65 s.scm").(include
0320: 20 22 6b 65 79 5f 72 65 63 6f 72 64 73 2e 73 63 "key_records.sc
0330: 6d 22 29 0a 28 69 6e 63 6c 75 64 65 20 22 64 62 m").(include "db
0340: 5f 72 65 63 6f 72 64 73 2e 73 63 6d 22 29 0a 0a _records.scm")..
0350: 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ;;==============
0360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0390: 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 65 7a 73 74 ========.;; ezst
03a0: 65 70 73 0a 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d eps.;;==========
03b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 3b 3b ============..;;
03f0: 20 65 7a 73 74 65 70 73 20 77 65 72 65 20 67 6f ezsteps were go
0400: 69 6e 67 20 74 6f 20 62 65 20 63 6f 64 65 64 20 ing to be coded
0410: 61 73 0a 3b 3b 20 73 74 65 70 6e 61 6d 65 5b 2c as.;; stepname[,
0420: 70 72 65 64 73 74 65 70 31 2c 70 72 65 64 73 74 predstep1,predst
0430: 65 70 32 20 2e 2e 2e 5d 20 5b 7b 56 41 52 31 3d ep2 ...] [{VAR1=
0440: 66 69 72 73 74 2c 73 65 63 6f 6e 64 2c 74 68 69 first,second,thi
0450: 72 64 7d 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 rd}] command to
0460: 65 78 65 63 75 74 65 0a 3b 3b 20 20 20 42 55 54 execute.;; BUT
0470: 0a 3b 3b 20 6e 6f 77 20 61 72 65 0a 3b 3b 20 73 .;; now are.;; s
0480: 74 65 70 6e 61 6d 65 20 7b 56 41 52 3d 66 69 72 tepname {VAR=fir
0490: 73 74 2c 73 65 63 6f 6e 64 2c 74 68 69 72 64 20 st,second,third
04a0: 2e 2e 2e 7d 20 63 6f 6d 6d 61 6e 64 20 2e 2e 2e ...} command ...
04b0: 0a 3b 3b 20 77 68 65 72 65 20 74 68 65 20 7b 56 .;; where the {V
04c0: 41 52 3d 66 69 72 73 74 2c 73 65 63 6f 6e 64 2c AR=first,second,
04d0: 74 68 69 72 64 20 2e 2e 2e 7d 20 69 73 20 6f 70 third ...} is op
04e0: 74 69 6f 6e 61 6c 2e 0a 0a 3b 3b 20 67 69 76 65 tional...;; give
04f0: 6e 20 61 6e 20 65 78 69 74 20 63 6f 64 65 20 61 n an exit code a
0500: 6e 64 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f nd whether or no
0510: 74 20 6c 6f 67 70 72 6f 20 77 61 73 20 75 73 65 t logpro was use
0520: 64 20 63 61 6c 63 75 6c 61 74 65 20 4f 4b 2f 42 d calculate OK/B
0530: 41 44 0a 3b 3b 20 72 65 74 75 72 6e 20 23 74 20 AD.;; return #t
0540: 69 66 20 77 65 20 61 72 65 20 6f 6b 2c 20 23 66 if we are ok, #f
0550: 20 6f 74 68 65 72 77 69 73 65 0a 28 64 65 66 69 otherwise.(defi
0560: 6e 65 20 28 73 74 65 70 72 75 6e 2d 67 6f 6f 64 ne (steprun-good
0570: 3f 20 6c 6f 67 70 72 6f 20 65 78 69 74 63 6f 64 ? logpro exitcod
0580: 65 29 0a 20 20 28 6f 72 20 28 65 71 3f 20 65 78 e). (or (eq? ex
0590: 69 74 63 6f 64 65 20 30 29 0a 20 20 20 20 20 20 itcode 0).
05a0: 28 61 6e 64 20 6c 6f 67 70 72 6f 20 28 65 71 3f (and logpro (eq?
05b0: 20 65 78 69 74 63 6f 64 65 20 32 29 29 29 29 0a exitcode 2)))).
05c0: 0a 28 64 65 66 69 6e 65 20 28 6c 61 75 6e 63 68 .(define (launch
05d0: 3a 65 78 65 63 75 74 65 20 65 6e 63 6f 64 65 64 :execute encoded
05e0: 2d 63 6d 64 29 0a 20 20 28 6c 65 74 2a 20 28 28 -cmd). (let* ((
05f0: 63 6d 64 69 6e 66 6f 20 20 20 28 72 65 61 64 20 cmdinfo (read
0600: 28 6f 70 65 6e 2d 69 6e 70 75 74 2d 73 74 72 69 (open-input-stri
0610: 6e 67 20 28 62 61 73 65 36 34 3a 62 61 73 65 36 ng (base64:base6
0620: 34 2d 64 65 63 6f 64 65 20 65 6e 63 6f 64 65 64 4-decode encoded
0630: 2d 63 6d 64 29 29 29 29 29 0a 20 20 20 20 28 73 -cmd))))). (s
0640: 65 74 65 6e 76 20 22 4d 54 5f 43 4d 44 49 4e 46 etenv "MT_CMDINF
0650: 4f 22 20 65 6e 63 6f 64 65 64 2d 63 6d 64 29 0a O" encoded-cmd).
0660: 20 20 20 20 28 69 66 20 28 6c 69 73 74 3f 20 63 (if (list? c
0670: 6d 64 69 6e 66 6f 29 20 3b 3b 20 28 28 74 65 73 mdinfo) ;; ((tes
0680: 74 70 61 74 68 20 2f 74 6d 70 2f 6d 72 77 65 6c tpath /tmp/mrwel
0690: 6c 61 6e 2f 6a 61 7a 7a 6d 69 6e 64 2f 73 72 63 lan/jazzmind/src
06a0: 2f 65 78 61 6d 70 6c 65 5f 72 75 6e 2f 74 65 73 /example_run/tes
06b0: 74 73 2f 73 71 6c 69 74 65 73 70 65 65 64 29 20 ts/sqlitespeed)
06c0: 28 74 65 73 74 2d 6e 61 6d 65 20 73 71 6c 69 74 (test-name sqlit
06d0: 65 73 70 65 65 64 29 20 28 72 75 6e 73 63 72 69 espeed) (runscri
06e0: 70 74 20 72 75 6e 73 63 72 69 70 74 2e 72 62 29 pt runscript.rb)
06f0: 20 28 64 62 2d 68 6f 73 74 20 6c 6f 63 61 6c 68 (db-host localh
0700: 6f 73 74 29 20 28 72 75 6e 2d 69 64 20 31 29 29 ost) (run-id 1))
0710: 0a 09 28 6c 65 74 2a 20 28 28 74 65 73 74 70 61 ..(let* ((testpa
0720: 74 68 20 20 28 61 73 73 6f 63 2f 64 65 66 61 75 th (assoc/defau
0730: 6c 74 20 27 74 65 73 74 70 61 74 68 20 20 63 6d lt 'testpath cm
0740: 64 69 6e 66 6f 29 29 0a 09 20 20 20 20 20 20 20 dinfo))..
0750: 28 77 6f 72 6b 2d 61 72 65 61 20 28 61 73 73 6f (work-area (asso
0760: 63 2f 64 65 66 61 75 6c 74 20 27 77 6f 72 6b 2d c/default 'work-
0770: 61 72 65 61 20 63 6d 64 69 6e 66 6f 29 29 0a 09 area cmdinfo))..
0780: 20 20 20 20 20 20 20 28 74 65 73 74 2d 6e 61 6d (test-nam
0790: 65 20 28 61 73 73 6f 63 2f 64 65 66 61 75 6c 74 e (assoc/default
07a0: 20 27 74 65 73 74 2d 6e 61 6d 65 20 63 6d 64 69 'test-name cmdi
07b0: 6e 66 6f 29 29 0a 09 20 20 20 20 20 20 20 28 72 nfo)).. (r
07c0: 75 6e 73 63 72 69 70 74 20 28 61 73 73 6f 63 2f unscript (assoc/
07d0: 64 65 66 61 75 6c 74 20 27 72 75 6e 73 63 72 69 default 'runscri
07e0: 70 74 20 63 6d 64 69 6e 66 6f 29 29 0a 09 20 20 pt cmdinfo))..
07f0: 20 20 20 20 20 28 65 7a 73 74 65 70 73 20 20 20 (ezsteps
0800: 28 61 73 73 6f 63 2f 64 65 66 61 75 6c 74 20 27 (assoc/default '
0810: 65 7a 73 74 65 70 73 20 20 20 63 6d 64 69 6e 66 ezsteps cmdinf
0820: 6f 29 29 0a 09 20 20 20 20 20 20 20 28 64 62 2d o)).. (db-
0830: 68 6f 73 74 20 20 20 28 61 73 73 6f 63 2f 64 65 host (assoc/de
0840: 66 61 75 6c 74 20 27 64 62 2d 68 6f 73 74 20 20 fault 'db-host
0850: 20 63 6d 64 69 6e 66 6f 29 29 0a 09 20 20 20 20 cmdinfo))..
0860: 20 20 20 28 72 75 6e 2d 69 64 20 20 20 20 28 61 (run-id (a
0870: 73 73 6f 63 2f 64 65 66 61 75 6c 74 20 27 72 75 ssoc/default 'ru
0880: 6e 2d 69 64 20 20 20 20 63 6d 64 69 6e 66 6f 29 n-id cmdinfo)
0890: 29 0a 09 20 20 20 20 20 20 20 28 69 74 65 6d 64 ).. (itemd
08a0: 61 74 20 20 20 28 61 73 73 6f 63 2f 64 65 66 61 at (assoc/defa
08b0: 75 6c 74 20 27 69 74 65 6d 64 61 74 20 20 20 63 ult 'itemdat c
08c0: 6d 64 69 6e 66 6f 29 29 0a 09 20 20 20 20 20 20 mdinfo))..
08d0: 20 28 65 6e 76 2d 6f 76 72 64 20 20 28 61 73 73 (env-ovrd (ass
08e0: 6f 63 2f 64 65 66 61 75 6c 74 20 27 65 6e 76 2d oc/default 'env-
08f0: 6f 76 72 64 20 20 63 6d 64 69 6e 66 6f 29 29 0a ovrd cmdinfo)).
0900: 09 20 20 20 20 20 20 20 28 73 65 74 2d 76 61 72 . (set-var
0910: 73 20 20 28 61 73 73 6f 63 2f 64 65 66 61 75 6c s (assoc/defaul
0920: 74 20 27 73 65 74 2d 76 61 72 73 20 20 63 6d 64 t 'set-vars cmd
0930: 69 6e 66 6f 29 29 20 3b 3b 20 70 72 65 2d 6f 76 info)) ;; pre-ov
0940: 65 72 72 69 64 65 73 20 66 72 6f 6d 20 2d 73 65 errides from -se
0950: 74 76 61 72 0a 09 20 20 20 20 20 20 20 28 72 75 tvar.. (ru
0960: 6e 6e 61 6d 65 20 20 20 28 61 73 73 6f 63 2f 64 nname (assoc/d
0970: 65 66 61 75 6c 74 20 27 72 75 6e 6e 61 6d 65 20 efault 'runname
0980: 20 20 63 6d 64 69 6e 66 6f 29 29 0a 09 20 20 20 cmdinfo))..
0990: 20 20 20 20 28 6d 65 67 61 74 65 73 74 20 20 28 (megatest (
09a0: 61 73 73 6f 63 2f 64 65 66 61 75 6c 74 20 27 6d assoc/default 'm
09b0: 65 67 61 74 65 73 74 20 20 63 6d 64 69 6e 66 6f egatest cmdinfo
09c0: 29 29 0a 09 20 20 20 20 20 20 20 28 6d 74 2d 62 )).. (mt-b
09d0: 69 6e 64 69 72 2d 70 61 74 68 20 28 61 73 73 6f indir-path (asso
09e0: 63 2f 64 65 66 61 75 6c 74 20 27 6d 74 2d 62 69 c/default 'mt-bi
09f0: 6e 64 69 72 2d 70 61 74 68 20 63 6d 64 69 6e 66 ndir-path cmdinf
0a00: 6f 29 29 0a 09 20 20 20 20 20 20 20 28 66 75 6c o)).. (ful
0a10: 6c 72 75 6e 73 63 72 69 70 74 20 28 69 66 20 72 lrunscript (if r
0a20: 75 6e 73 63 72 69 70 74 20 28 63 6f 6e 63 20 74 unscript (conc t
0a30: 65 73 74 70 61 74 68 20 22 2f 22 20 72 75 6e 73 estpath "/" runs
0a40: 63 72 69 70 74 29 20 23 66 29 29 0a 09 20 20 20 cript) #f))..
0a50: 20 20 20 20 28 64 62 20 20 20 20 20 20 20 20 23 (db #
0a60: 66 29 0a 09 20 20 20 20 20 20 20 28 72 6f 6c 6c f).. (roll
0a70: 75 70 2d 73 74 61 74 75 73 20 30 29 29 0a 09 20 up-status 0))..
0a80: 20 0a 09 20 20 28 64 65 62 75 67 3a 70 72 69 6e .. (debug:prin
0a90: 74 20 32 20 22 45 78 65 63 74 75 69 6e 67 20 22 t 2 "Exectuing "
0aa0: 20 74 65 73 74 2d 6e 61 6d 65 20 22 20 6f 6e 20 test-name " on
0ab0: 22 20 28 67 65 74 2d 68 6f 73 74 2d 6e 61 6d 65 " (get-host-name
0ac0: 29 29 0a 09 20 20 28 63 68 61 6e 67 65 2d 64 69 )).. (change-di
0ad0: 72 65 63 74 6f 72 79 20 74 65 73 74 70 61 74 68 rectory testpath
0ae0: 29 0a 09 20 20 3b 3b 20 61 70 70 6c 79 20 70 72 ).. ;; apply pr
0af0: 65 2d 6f 76 65 72 72 69 64 65 73 20 62 65 66 6f e-overrides befo
0b00: 72 65 20 6f 74 68 65 72 20 76 61 72 69 61 62 6c re other variabl
0b10: 65 73 2e 20 54 68 65 20 70 72 65 2d 6f 76 65 72 es. The pre-over
0b20: 72 69 64 65 20 76 61 72 73 20 6d 75 73 74 20 6e ride vars must n
0b30: 6f 74 0a 09 20 20 3b 3b 20 63 6c 6f 62 62 65 72 ot.. ;; clobber
0b40: 73 20 74 68 69 6e 67 73 20 66 72 6f 6d 20 74 68 s things from th
0b50: 65 20 6f 66 66 69 63 69 61 6c 20 73 6f 75 72 63 e official sourc
0b60: 65 73 20 73 75 63 68 20 61 73 20 6d 65 67 61 74 es such as megat
0b70: 65 73 74 2e 63 6f 6e 66 69 67 20 61 6e 64 20 72 est.config and r
0b80: 75 6e 63 6f 6e 66 69 67 73 2e 63 6f 6e 66 69 67 unconfigs.config
0b90: 0a 09 20 20 28 69 66 20 28 73 74 72 69 6e 67 3f .. (if (string?
0ba0: 20 73 65 74 2d 76 61 72 73 29 0a 09 20 20 20 20 set-vars)..
0bb0: 20 20 28 6c 65 74 20 28 28 76 61 72 70 61 69 72 (let ((varpair
0bc0: 73 20 28 73 74 72 69 6e 67 2d 73 70 6c 69 74 20 s (string-split
0bd0: 73 65 74 2d 76 61 72 73 20 22 2c 22 29 29 29 0a set-vars ","))).
0be0: 09 09 28 64 65 62 75 67 3a 70 72 69 6e 74 20 34 ..(debug:print 4
0bf0: 20 22 76 61 72 70 61 69 72 73 3a 20 22 20 76 61 "varpairs: " va
0c00: 72 70 61 69 72 73 29 0a 09 09 28 6d 61 70 20 28 rpairs)...(map (
0c10: 6c 61 6d 62 64 61 20 28 76 61 72 70 61 69 72 29 lambda (varpair)
0c20: 0a 09 09 20 20 20 20 20 20 20 28 6c 65 74 20 28 ... (let (
0c30: 28 76 61 72 76 61 6c 20 28 73 74 72 69 6e 67 2d (varval (string-
0c40: 73 70 6c 69 74 20 76 61 72 70 61 69 72 20 22 3d split varpair "=
0c50: 22 29 29 29 0a 09 09 09 20 28 69 66 20 28 65 71 "))).... (if (eq
0c60: 3f 20 28 6c 65 6e 67 74 68 20 76 61 72 76 61 6c ? (length varval
0c70: 29 20 32 29 0a 09 09 09 20 20 20 20 20 28 6c 65 ) 2).... (le
0c80: 74 20 28 28 76 61 72 20 28 63 61 72 20 76 61 72 t ((var (car var
0c90: 76 61 6c 29 29 0a 09 09 09 09 20 20 20 28 76 61 val))..... (va
0ca0: 6c 20 28 63 61 64 72 20 76 61 72 76 61 6c 29 29 l (cadr varval))
0cb0: 29 0a 09 09 09 20 20 20 20 20 20 20 28 64 65 62 ).... (deb
0cc0: 75 67 3a 70 72 69 6e 74 20 31 20 22 41 64 64 69 ug:print 1 "Addi
0cd0: 6e 67 20 70 72 65 2d 76 61 72 2f 76 61 6c 20 22 ng pre-var/val "
0ce0: 20 76 61 72 20 22 20 3d 20 22 20 76 61 6c 20 22 var " = " val "
0cf0: 20 74 6f 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d to the environm
0d00: 65 6e 74 22 29 0a 09 09 09 20 20 20 20 20 20 20 ent")....
0d10: 28 73 65 74 65 6e 76 20 76 61 72 20 76 61 6c 29 (setenv var val)
0d20: 29 29 29 29 0a 09 09 20 20 20 20 20 76 61 72 70 ))))... varp
0d30: 61 69 72 73 29 29 29 0a 09 20 20 28 73 65 74 65 airs))).. (sete
0d40: 6e 76 20 22 4d 54 5f 54 45 53 54 5f 52 55 4e 5f nv "MT_TEST_RUN_
0d50: 44 49 52 22 20 77 6f 72 6b 2d 61 72 65 61 29 0a DIR" work-area).
0d60: 09 20 20 28 73 65 74 65 6e 76 20 22 4d 54 5f 54 . (setenv "MT_T
0d70: 45 53 54 5f 4e 41 4d 45 22 20 74 65 73 74 2d 6e EST_NAME" test-n
0d80: 61 6d 65 29 0a 09 20 20 28 73 65 74 65 6e 76 20 ame).. (setenv
0d90: 22 4d 54 5f 49 54 45 4d 5f 49 4e 46 4f 22 20 28 "MT_ITEM_INFO" (
0da0: 63 6f 6e 63 20 69 74 65 6d 64 61 74 29 29 0a 09 conc itemdat))..
0db0: 20 20 28 73 65 74 65 6e 76 20 22 4d 54 5f 52 55 (setenv "MT_RU
0dc0: 4e 4e 41 4d 45 22 20 20 20 72 75 6e 6e 61 6d 65 NNAME" runname
0dd0: 29 0a 09 20 20 28 73 65 74 65 6e 76 20 22 4d 54 ).. (setenv "MT
0de0: 5f 4d 45 47 41 54 45 53 54 22 20 20 6d 65 67 61 _MEGATEST" mega
0df0: 74 65 73 74 29 0a 09 20 20 28 69 66 20 6d 74 2d test).. (if mt-
0e00: 62 69 6e 64 69 72 2d 70 61 74 68 20 28 73 65 74 bindir-path (set
0e10: 65 6e 76 20 22 50 41 54 48 22 20 28 63 6f 6e 63 env "PATH" (conc
0e20: 20 28 67 65 74 65 6e 76 20 22 50 41 54 48 22 29 (getenv "PATH")
0e30: 20 22 3a 22 20 6d 74 2d 62 69 6e 64 69 72 2d 70 ":" mt-bindir-p
0e40: 61 74 68 29 29 29 0a 09 20 20 0a 09 20 20 28 69 ath))).. .. (i
0e50: 66 20 28 6e 6f 74 20 28 73 65 74 75 70 2d 66 6f f (not (setup-fo
0e60: 72 2d 72 75 6e 29 29 0a 09 20 20 20 20 20 20 28 r-run)).. (
0e70: 62 65 67 69 6e 0a 09 09 28 64 65 62 75 67 3a 70 begin...(debug:p
0e80: 72 69 6e 74 20 30 20 22 46 61 69 6c 65 64 20 74 rint 0 "Failed t
0e90: 6f 20 73 65 74 75 70 2c 20 65 78 69 74 69 6e 67 o setup, exiting
0ea0: 22 29 20 0a 09 09 28 65 78 69 74 20 31 29 29 29 ") ...(exit 1)))
0eb0: 0a 09 20 20 3b 3b 20 6e 6f 77 20 63 61 6e 20 66 .. ;; now can f
0ec0: 69 6e 64 20 6f 75 72 20 64 62 0a 09 20 20 28 73 ind our db.. (s
0ed0: 65 74 21 20 64 62 20 28 6f 70 65 6e 2d 64 62 29 et! db (open-db)
0ee0: 29 0a 09 20 20 28 69 66 20 28 6e 6f 74 20 28 61 ).. (if (not (a
0ef0: 72 67 73 3a 67 65 74 2d 61 72 67 20 22 2d 73 65 rgs:get-arg "-se
0f00: 72 76 65 72 22 29 29 0a 09 20 20 20 20 20 20 28 rver")).. (
0f10: 73 65 72 76 65 72 3a 63 6c 69 65 6e 74 2d 73 65 server:client-se
0f20: 74 75 70 20 64 62 29 29 0a 09 20 20 28 73 65 74 tup db)).. (set
0f30: 2d 6d 65 67 61 74 65 73 74 2d 65 6e 76 2d 76 61 -megatest-env-va
0f40: 72 73 20 64 62 20 72 75 6e 2d 69 64 29 20 3b 3b rs db run-id) ;;
0f50: 20 74 68 65 73 65 20 6d 61 79 20 62 65 20 6e 65 these may be ne
0f60: 65 64 65 64 20 62 79 20 74 68 65 20 6c 61 75 6e eded by the laun
0f70: 63 68 69 6e 67 20 70 72 6f 63 65 73 73 0a 09 20 ching process..
0f80: 20 28 63 68 61 6e 67 65 2d 64 69 72 65 63 74 6f (change-directo
0f90: 72 79 20 77 6f 72 6b 2d 61 72 65 61 29 20 0a 09 ry work-area) ..
0fa0: 20 20 28 73 65 74 2d 72 75 6e 2d 63 6f 6e 66 69 (set-run-confi
0fb0: 67 2d 76 61 72 73 20 64 62 20 72 75 6e 2d 69 64 g-vars db run-id
0fc0: 29 0a 09 20 20 3b 3b 20 65 6e 76 69 72 6f 6e 6d ).. ;; environm
0fd0: 65 6e 74 20 6f 76 65 72 72 69 64 65 73 20 61 72 ent overrides ar
0fe0: 65 20 64 6f 6e 65 20 2a 62 65 66 6f 72 65 2a 20 e done *before*
0ff0: 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 63 72 the remaining cr
1000: 69 74 69 63 61 6c 20 65 6e 76 61 72 73 2e 0a 09 itical envars...
1010: 20 20 28 61 6c 69 73 74 2d 3e 65 6e 76 2d 76 61 (alist->env-va
1020: 72 73 20 65 6e 76 2d 6f 76 72 64 29 0a 09 20 20 rs env-ovrd)..
1030: 28 73 65 74 2d 6d 65 67 61 74 65 73 74 2d 65 6e (set-megatest-en
1040: 76 2d 76 61 72 73 20 64 62 20 72 75 6e 2d 69 64 v-vars db run-id
1050: 29 0a 09 20 20 28 73 65 74 2d 69 74 65 6d 2d 65 ).. (set-item-e
1060: 6e 76 2d 76 61 72 73 20 69 74 65 6d 64 61 74 29 nv-vars itemdat)
1070: 0a 09 20 20 28 73 61 76 65 2d 65 6e 76 69 72 6f .. (save-enviro
1080: 6e 6d 65 6e 74 2d 61 73 2d 66 69 6c 65 73 20 22 nment-as-files "
1090: 6d 65 67 61 74 65 73 74 22 29 0a 09 20 20 28 74 megatest").. (t
10a0: 65 73 74 2d 73 65 74 2d 6d 65 74 61 2d 69 6e 66 est-set-meta-inf
10b0: 6f 20 64 62 20 72 75 6e 2d 69 64 20 74 65 73 74 o db run-id test
10c0: 2d 6e 61 6d 65 20 69 74 65 6d 64 61 74 29 0a 09 -name itemdat)..
10d0: 20 20 28 74 65 73 74 2d 73 65 74 2d 73 74 61 74 (test-set-stat
10e0: 75 73 21 20 64 62 20 72 75 6e 2d 69 64 20 74 65 us! db run-id te
10f0: 73 74 2d 6e 61 6d 65 20 22 52 45 4d 4f 54 45 48 st-name "REMOTEH
1100: 4f 53 54 53 54 41 52 54 22 20 22 6e 2f 61 22 20 OSTSTART" "n/a"
1110: 69 74 65 6d 64 61 74 20 28 61 72 67 73 3a 67 65 itemdat (args:ge
1120: 74 2d 61 72 67 20 22 2d 6d 22 29 20 23 66 29 0a t-arg "-m") #f).
1130: 09 20 20 28 69 66 20 28 61 72 67 73 3a 67 65 74 . (if (args:get
1140: 2d 61 72 67 20 22 2d 78 74 65 72 6d 22 29 0a 09 -arg "-xterm")..
1150: 20 20 20 20 20 20 28 73 65 74 21 20 66 75 6c 6c (set! full
1160: 72 75 6e 73 63 72 69 70 74 20 22 78 74 65 72 6d runscript "xterm
1170: 22 29 0a 09 20 20 20 20 20 20 28 69 66 20 28 61 ").. (if (a
1180: 6e 64 20 66 75 6c 6c 72 75 6e 73 63 72 69 70 74 nd fullrunscript
1190: 20 28 6e 6f 74 20 28 66 69 6c 65 2d 65 78 65 63 (not (file-exec
11a0: 75 74 65 2d 61 63 63 65 73 73 3f 20 66 75 6c 6c ute-access? full
11b0: 72 75 6e 73 63 72 69 70 74 29 29 29 0a 09 09 20 runscript)))...
11c0: 20 28 73 79 73 74 65 6d 20 28 63 6f 6e 63 20 22 (system (conc "
11d0: 63 68 6d 6f 64 20 75 67 2b 78 20 22 20 66 75 6c chmod ug+x " ful
11e0: 6c 72 75 6e 73 63 72 69 70 74 29 29 29 29 0a 09 lrunscript))))..
11f0: 20 20 3b 3b 20 57 65 20 61 72 65 20 61 62 6f 75 ;; We are abou
1200: 74 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 6b 69 t to actually ki
1210: 63 6b 20 6f 66 66 20 74 68 65 20 74 65 73 74 0a ck off the test.
1220: 09 20 20 3b 3b 20 73 6f 20 74 68 69 73 20 69 73 . ;; so this is
1230: 20 61 20 67 6f 6f 64 20 70 6c 61 63 65 20 74 6f a good place to
1240: 20 72 65 6d 6f 76 65 20 74 68 65 20 72 65 63 6f remove the reco
1250: 72 64 73 20 66 6f 72 20 0a 09 20 20 3b 3b 20 61 rds for .. ;; a
1260: 6e 79 20 70 72 65 76 69 6f 75 73 20 72 75 6e 73 ny previous runs
1270: 0a 09 20 20 3b 3b 20 28 64 62 3a 74 65 73 74 2d .. ;; (db:test-
1280: 72 65 6d 6f 76 65 2d 73 74 65 70 73 20 64 62 20 remove-steps db
1290: 72 75 6e 2d 69 64 20 74 65 73 74 6e 61 6d 65 20 run-id testname
12a0: 69 74 65 6d 64 61 74 29 0a 09 20 20 0a 09 20 20 itemdat).. ..
12b0: 3b 3b 20 66 72 6f 6d 20 68 65 72 65 20 6f 6e 20 ;; from here on
12c0: 6f 75 74 20 77 65 20 77 69 6c 6c 20 6f 70 65 6e out we will open
12d0: 20 61 6e 64 20 63 6c 6f 73 65 20 74 68 65 20 64 and close the d
12e0: 62 0a 09 20 20 3b 3b 20 6f 6e 20 65 76 65 72 79 b.. ;; on every
12f0: 20 61 63 63 65 73 73 20 74 6f 20 72 65 64 75 63 access to reduc
1300: 65 20 74 68 65 20 70 72 6f 62 61 62 6c 69 74 69 e the probabliti
1310: 79 20 6f 66 20 0a 09 20 20 3b 3b 20 63 6f 6e 74 y of .. ;; cont
1320: 65 6e 74 69 6f 6e 20 6f 72 20 73 74 75 63 6b 20 ention or stuck
1330: 61 63 63 65 73 73 20 6f 6e 20 6e 66 73 2e 0a 09 access on nfs...
1340: 20 20 28 73 71 6c 69 74 65 33 3a 66 69 6e 61 6c (sqlite3:final
1350: 69 7a 65 21 20 64 62 29 0a 0a 09 20 20 28 6c 65 ize! db)... (le
1360: 74 2a 20 28 28 6d 20 20 20 20 20 20 20 20 20 20 t* ((m
1370: 20 20 28 6d 61 6b 65 2d 6d 75 74 65 78 29 29 0a (make-mutex)).
1380: 09 09 20 28 6b 69 6c 6c 2d 6a 6f 62 3f 20 20 20 .. (kill-job?
1390: 20 23 66 29 0a 09 09 20 28 65 78 69 74 2d 69 6e #f)... (exit-in
13a0: 66 6f 20 20 20 20 28 76 65 63 74 6f 72 20 23 74 fo (vector #t
13b0: 20 23 74 20 23 74 29 29 0a 09 09 20 28 6a 6f 62 #t #t))... (job
13c0: 2d 74 68 72 65 61 64 20 20 20 23 66 29 0a 09 09 -thread #f)...
13d0: 20 28 72 75 6e 69 74 20 20 20 20 20 20 20 20 28 (runit (
13e0: 6c 61 6d 62 64 61 20 28 29 0a 09 09 09 09 20 3b lambda ()..... ;
13f0: 3b 20 28 6c 65 74 2d 76 61 6c 75 65 73 0a 09 09 ; (let-values...
1400: 09 09 20 3b 3b 20 20 28 28 28 70 69 64 20 65 78 .. ;; (((pid ex
1410: 69 74 2d 73 74 61 74 75 73 20 65 78 69 74 2d 63 it-status exit-c
1420: 6f 64 65 29 0a 09 09 09 09 20 3b 3b 20 20 20 20 ode)..... ;;
1430: 28 72 75 6e 2d 6e 2d 77 61 69 74 20 66 75 6c 6c (run-n-wait full
1440: 72 75 6e 73 63 72 69 70 74 29 29 29 0a 09 09 09 runscript)))....
1450: 09 20 0a 09 09 09 09 20 3b 3b 20 69 66 20 74 68 . ..... ;; if th
1460: 65 72 65 20 69 73 20 61 20 72 75 6e 73 63 72 69 ere is a runscri
1470: 70 74 20 64 6f 20 69 74 20 66 69 72 73 74 0a 09 pt do it first..
1480: 09 09 09 20 28 69 66 20 66 75 6c 6c 72 75 6e 73 ... (if fullruns
1490: 63 72 69 70 74 0a 09 09 09 09 20 20 20 20 20 28 cript..... (
14a0: 6c 65 74 20 28 28 70 69 64 20 28 70 72 6f 63 65 let ((pid (proce
14b0: 73 73 2d 72 75 6e 20 66 75 6c 6c 72 75 6e 73 63 ss-run fullrunsc
14c0: 72 69 70 74 29 29 29 0a 09 09 09 09 20 20 20 20 ript))).....
14d0: 20 20 20 28 6c 65 74 20 6c 6f 6f 70 20 28 28 69 (let loop ((i
14e0: 20 30 29 29 0a 09 09 09 09 09 20 28 6c 65 74 2d 0))...... (let-
14f0: 76 61 6c 75 65 73 0a 09 09 09 09 09 20 20 28 28 values...... ((
1500: 28 70 69 64 2d 76 61 6c 20 65 78 69 74 2d 73 74 (pid-val exit-st
1510: 61 74 75 73 20 65 78 69 74 2d 63 6f 64 65 29 20 atus exit-code)
1520: 28 70 72 6f 63 65 73 73 2d 77 61 69 74 20 70 69 (process-wait pi
1530: 64 20 23 74 29 29 29 0a 09 09 09 09 09 20 20 28 d #t)))...... (
1540: 6d 75 74 65 78 2d 6c 6f 63 6b 21 20 6d 29 0a 09 mutex-lock! m)..
1550: 09 09 09 09 20 20 28 76 65 63 74 6f 72 2d 73 65 .... (vector-se
1560: 74 21 20 65 78 69 74 2d 69 6e 66 6f 20 30 20 70 t! exit-info 0 p
1570: 69 64 29 0a 09 09 09 09 09 20 20 28 76 65 63 74 id)...... (vect
1580: 6f 72 2d 73 65 74 21 20 65 78 69 74 2d 69 6e 66 or-set! exit-inf
1590: 6f 20 31 20 65 78 69 74 2d 73 74 61 74 75 73 29 o 1 exit-status)
15a0: 0a 09 09 09 09 09 20 20 28 76 65 63 74 6f 72 2d ...... (vector-
15b0: 73 65 74 21 20 65 78 69 74 2d 69 6e 66 6f 20 32 set! exit-info 2
15c0: 20 65 78 69 74 2d 63 6f 64 65 29 0a 09 09 09 09 exit-code).....
15d0: 09 20 20 28 73 65 74 21 20 72 6f 6c 6c 75 70 2d . (set! rollup-
15e0: 73 74 61 74 75 73 20 65 78 69 74 2d 63 6f 64 65 status exit-code
15f0: 29 20 0a 09 09 09 09 09 20 20 28 6d 75 74 65 78 ) ...... (mutex
1600: 2d 75 6e 6c 6f 63 6b 21 20 6d 29 0a 09 09 09 09 -unlock! m).....
1610: 09 20 20 28 69 66 20 28 65 71 3f 20 70 69 64 2d . (if (eq? pid-
1620: 76 61 6c 20 30 29 0a 09 09 09 09 09 20 20 20 20 val 0)......
1630: 20 20 28 62 65 67 69 6e 0a 09 09 09 09 09 09 28 (begin.......(
1640: 74 68 72 65 61 64 2d 73 6c 65 65 70 21 20 32 29 thread-sleep! 2)
1650: 0a 09 09 09 09 09 09 28 6c 6f 6f 70 20 28 2b 20 .......(loop (+
1660: 69 20 31 29 29 29 0a 09 09 09 09 09 20 20 20 20 i 1)))......
1670: 20 20 29 29 29 29 29 0a 09 09 09 09 20 3b 3b 20 )))))..... ;;
1680: 74 68 65 6e 2c 20 69 66 20 72 75 6e 73 63 72 69 then, if runscri
1690: 70 74 20 72 61 6e 20 6f 6b 20 28 6f 72 20 64 69 pt ran ok (or di
16a0: 64 20 6e 6f 74 20 67 65 74 20 63 61 6c 6c 65 64 d not get called
16b0: 29 0a 09 09 09 09 20 3b 3b 20 64 6f 20 61 6c 6c )..... ;; do all
16c0: 20 74 68 65 20 65 7a 73 74 65 70 73 20 28 69 66 the ezsteps (if
16d0: 20 61 6e 79 29 0a 09 09 09 09 20 28 69 66 20 65 any)..... (if e
16e0: 7a 73 74 65 70 73 0a 09 09 09 09 20 20 20 20 20 zsteps.....
16f0: 28 6c 65 74 2a 20 28 28 74 65 73 74 63 6f 6e 66 (let* ((testconf
1700: 69 67 20 28 72 65 61 64 2d 63 6f 6e 66 69 67 20 ig (read-config
1710: 28 63 6f 6e 63 20 77 6f 72 6b 2d 61 72 65 61 20 (conc work-area
1720: 22 2f 74 65 73 74 63 6f 6e 66 69 67 22 29 20 23 "/testconfig") #
1730: 66 20 23 74 20 65 6e 76 69 72 6f 6e 2d 70 61 74 f #t environ-pat
1740: 74 3a 20 22 70 72 65 2d 6c 61 75 6e 63 68 2d 65 t: "pre-launch-e
1750: 6e 76 2d 76 61 72 73 22 29 29 20 3b 3b 20 46 49 nv-vars")) ;; FI
1760: 58 4d 45 3f 3f 3f 20 69 73 20 61 6c 6c 6f 77 2d XME??? is allow-
1770: 73 79 73 74 65 6d 20 6f 6b 20 68 65 72 65 3f 0a system ok here?.
1780: 09 09 09 09 09 20 20 20 20 28 65 7a 73 74 65 70 ..... (ezstep
1790: 73 6c 73 74 20 28 68 61 73 68 2d 74 61 62 6c 65 slst (hash-table
17a0: 2d 72 65 66 2f 64 65 66 61 75 6c 74 20 74 65 73 -ref/default tes
17b0: 74 63 6f 6e 66 69 67 20 22 65 7a 73 74 65 70 73 tconfig "ezsteps
17c0: 22 20 27 28 29 29 29 0a 09 09 09 09 09 20 20 20 " '()))......
17d0: 20 28 64 62 20 20 20 20 20 20 20 20 20 28 6f 70 (db (op
17e0: 65 6e 2d 64 62 29 29 29 0a 09 09 09 09 20 20 20 en-db))).....
17f0: 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 61 72 (if (not (ar
1800: 67 73 3a 67 65 74 2d 61 72 67 20 22 2d 73 65 72 gs:get-arg "-ser
1810: 76 65 72 22 29 29 0a 09 09 09 09 09 20 20 20 28 ver"))...... (
1820: 73 65 72 76 65 72 3a 63 6c 69 65 6e 74 2d 73 65 server:client-se
1830: 74 75 70 20 64 62 29 29 0a 09 09 09 09 20 20 20 tup db)).....
1840: 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 66 69 (if (not (fi
1850: 6c 65 2d 65 78 69 73 74 73 3f 20 22 2e 65 7a 73 le-exists? ".ezs
1860: 74 65 70 73 22 29 29 28 63 72 65 61 74 65 2d 64 teps"))(create-d
1870: 69 72 65 63 74 6f 72 79 20 22 2e 65 7a 73 74 65 irectory ".ezste
1880: 70 73 22 29 29 0a 09 09 09 09 20 20 20 20 20 20 ps")).....
1890: 20 3b 3b 20 69 66 20 65 7a 73 74 65 70 73 20 77 ;; if ezsteps w
18a0: 61 73 20 64 65 66 69 6e 65 64 20 74 68 65 6e 20 as defined then
18b0: 77 65 20 61 72 65 20 73 75 72 65 20 74 6f 20 68 we are sure to h
18c0: 61 76 65 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 ave at least one
18d0: 20 73 74 65 70 20 62 75 74 20 63 68 65 63 6b 20 step but check
18e0: 61 6e 79 77 61 79 0a 09 09 09 09 20 20 20 20 20 anyway.....
18f0: 20 20 28 69 66 20 28 6e 6f 74 20 28 3e 20 28 6c (if (not (> (l
1900: 65 6e 67 74 68 20 65 7a 73 74 65 70 73 6c 73 74 ength ezstepslst
1910: 29 20 30 29 29 0a 09 09 09 09 09 20 20 20 28 64 ) 0))...... (d
1920: 65 62 75 67 3a 70 72 69 6e 74 20 30 20 22 45 52 ebug:print 0 "ER
1930: 52 4f 52 3a 20 65 7a 73 74 65 70 73 20 64 65 66 ROR: ezsteps def
1940: 69 6e 65 64 20 62 75 74 20 65 7a 73 74 65 70 73 ined but ezsteps
1950: 6c 73 74 20 69 73 20 7a 65 72 6f 20 6c 65 6e 67 lst is zero leng
1960: 74 68 22 29 0a 09 09 09 09 09 20 20 20 28 6c 65 th")...... (le
1970: 74 20 6c 6f 6f 70 20 28 28 65 7a 73 74 65 70 20 t loop ((ezstep
1980: 28 63 61 72 20 65 7a 73 74 65 70 73 6c 73 74 29 (car ezstepslst)
1990: 29 0a 09 09 09 09 09 09 20 20 20 20 20 20 28 74 )....... (t
19a0: 61 6c 20 20 20 20 28 63 64 72 20 65 7a 73 74 65 al (cdr ezste
19b0: 70 73 6c 73 74 29 29 0a 09 09 09 09 09 09 20 20 pslst)).......
19c0: 20 20 20 20 28 70 72 65 76 73 74 65 70 20 23 66 (prevstep #f
19d0: 29 29 0a 09 09 09 09 09 20 20 20 20 20 3b 3b 20 ))...... ;;
19e0: 63 68 65 63 6b 20 65 78 69 74 2d 69 6e 66 6f 20 check exit-info
19f0: 28 76 65 63 74 6f 72 2d 72 65 66 20 65 78 69 74 (vector-ref exit
1a00: 2d 69 6e 66 6f 20 31 29 0a 09 09 09 09 09 20 20 -info 1)......
1a10: 20 20 20 28 69 66 20 28 76 65 63 74 6f 72 2d 72 (if (vector-r
1a20: 65 66 20 65 78 69 74 2d 69 6e 66 6f 20 31 29 0a ef exit-info 1).
1a30: 09 09 09 09 09 09 20 28 6c 65 74 2a 20 28 28 73 ...... (let* ((s
1a40: 74 65 70 6e 61 6d 65 20 20 28 63 61 72 20 65 7a tepname (car ez
1a50: 73 74 65 70 29 29 20 20 3b 3b 20 64 6f 20 73 74 step)) ;; do st
1a60: 75 66 66 20 74 6f 20 72 75 6e 20 74 68 65 20 73 uff to run the s
1a70: 74 65 70 0a 09 09 09 09 09 09 09 28 73 74 65 70 tep........(step
1a80: 69 6e 66 6f 20 20 28 63 61 64 72 20 65 7a 73 74 info (cadr ezst
1a90: 65 70 29 29 0a 09 09 09 09 09 09 09 28 73 74 65 ep))........(ste
1aa0: 70 70 61 72 74 73 20 28 73 74 72 69 6e 67 2d 6d pparts (string-m
1ab0: 61 74 63 68 20 28 72 65 67 65 78 70 20 22 5e 28 atch (regexp "^(
1ac0: 5c 5c 7b 28 5b 5e 5c 5c 7d 5d 2a 29 5c 5c 7d 5c \\{([^\\}]*)\\}\
1ad0: 5c 73 2a 7c 29 28 2e 2a 29 24 22 29 20 73 74 65 \s*|)(.*)$") ste
1ae0: 70 69 6e 66 6f 29 29 0a 09 09 09 09 09 09 09 28 pinfo))........(
1af0: 73 74 65 70 70 61 72 6d 73 20 28 6c 69 73 74 2d stepparms (list-
1b00: 72 65 66 20 73 74 65 70 70 61 72 74 73 20 32 29 ref stepparts 2)
1b10: 29 20 3b 3b 20 66 6f 72 20 66 75 74 75 72 65 20 ) ;; for future
1b20: 75 73 65 2c 20 7b 56 41 52 3d 31 2c 32 2c 33 7d use, {VAR=1,2,3}
1b30: 2c 20 72 75 6e 20 73 74 65 70 20 66 6f 72 20 65 , run step for e
1b40: 61 63 68 20 0a 09 09 09 09 09 09 09 28 73 74 65 ach ........(ste
1b50: 70 63 6d 64 20 20 20 28 6c 69 73 74 2d 72 65 66 pcmd (list-ref
1b60: 20 73 74 65 70 70 61 72 74 73 20 33 29 29 0a 09 stepparts 3))..
1b70: 09 09 09 09 09 09 28 73 63 72 69 70 74 20 20 20 ......(script
1b80: 20 22 22 29 20 3b 20 22 23 21 2f 62 69 6e 2f 62 "") ; "#!/bin/b
1b90: 61 73 68 5c 6e 22 29 20 3b 3b 20 79 65 70 2c 20 ash\n") ;; yep,
1ba0: 77 65 20 64 65 70 65 6e 64 20 6f 6e 20 62 69 6e we depend on bin
1bb0: 2f 62 61 73 68 20 46 49 58 4d 45 21 21 21 0a 09 /bash FIXME!!!..
1bc0: 09 09 09 09 09 09 28 6c 6f 67 70 72 6f 2d 75 73 ......(logpro-us
1bd0: 65 64 20 23 66 29 29 0a 09 09 09 09 09 09 20 20 ed #f)).......
1be0: 20 3b 3b 20 4e 42 2f 2f 20 63 61 6e 20 73 61 66 ;; NB// can saf
1bf0: 65 6c 79 20 61 73 73 75 6d 65 20 77 65 20 61 72 ely assume we ar
1c00: 65 20 69 6e 20 74 65 73 74 2d 61 72 65 61 20 64 e in test-area d
1c10: 69 72 65 63 74 6f 72 79 0a 09 09 09 09 09 09 20 irectory.......
1c20: 20 20 28 64 65 62 75 67 3a 70 72 69 6e 74 20 34 (debug:print 4
1c30: 20 22 65 7a 73 74 65 70 73 3a 5c 6e 20 73 74 65 "ezsteps:\n ste
1c40: 70 6e 61 6d 65 3a 20 22 20 73 74 65 70 6e 61 6d pname: " stepnam
1c50: 65 20 22 20 73 74 65 70 69 6e 66 6f 3a 20 22 20 e " stepinfo: "
1c60: 73 74 65 70 69 6e 66 6f 20 22 20 73 74 65 70 70 stepinfo " stepp
1c70: 61 72 74 73 3a 20 22 20 73 74 65 70 70 61 72 74 arts: " steppart
1c80: 73 0a 09 09 09 09 09 09 09 09 22 20 73 74 65 70 s........." step
1c90: 70 61 72 6d 73 3a 20 22 20 73 74 65 70 70 61 72 parms: " steppar
1ca0: 6d 73 20 22 20 73 74 65 70 63 6d 64 3a 20 22 20 ms " stepcmd: "
1cb0: 73 74 65 70 63 6d 64 29 0a 09 09 09 09 09 09 20 stepcmd).......
1cc0: 20 20 0a 09 09 09 09 09 09 20 20 20 28 69 66 20 ....... (if
1cd0: 28 66 69 6c 65 2d 65 78 69 73 74 73 3f 20 28 63 (file-exists? (c
1ce0: 6f 6e 63 20 73 74 65 70 6e 61 6d 65 20 22 2e 6c onc stepname ".l
1cf0: 6f 67 70 72 6f 22 29 29 28 73 65 74 21 20 6c 6f ogpro"))(set! lo
1d00: 67 70 72 6f 2d 75 73 65 64 20 23 74 29 29 0a 0a gpro-used #t))..
1d10: 09 09 09 09 09 09 20 20 20 3b 3b 20 3b 3b 20 66 ...... ;; ;; f
1d20: 69 72 73 74 20 73 6f 75 72 63 65 20 74 68 65 20 irst source the
1d30: 70 72 65 76 69 6f 75 73 20 65 6e 76 69 72 6f 6e previous environ
1d40: 6d 65 6e 74 0a 09 09 09 09 09 09 20 20 20 3b 3b ment....... ;;
1d50: 20 28 6c 65 74 20 28 28 70 72 65 76 2d 65 6e 76 (let ((prev-env
1d60: 20 28 63 6f 6e 63 20 22 2e 65 7a 73 74 65 70 73 (conc ".ezsteps
1d70: 2f 22 20 70 72 65 76 73 74 65 70 20 28 69 66 20 /" prevstep (if
1d80: 28 73 74 72 69 6e 67 2d 73 65 61 72 63 68 20 28 (string-search (
1d90: 72 65 67 65 78 70 20 22 63 73 68 22 29 20 0a 09 regexp "csh") ..
1da0: 09 09 09 09 09 20 20 20 3b 3b 20 20 20 20 20 20 ..... ;;
1db0: 09 09 09 09 09 09 09 20 28 67 65 74 2d 65 6e 76 ....... (get-env
1dc0: 69 72 6f 6e 6d 65 6e 74 2d 76 61 72 69 61 62 6c ironment-variabl
1dd0: 65 20 22 53 48 45 4c 4c 22 29 29 20 22 2e 63 73 e "SHELL")) ".cs
1de0: 68 22 20 22 2e 73 68 22 29 29 29 29 0a 09 09 09 h" ".sh"))))....
1df0: 09 09 09 20 20 20 3b 3b 20 20 20 28 69 66 20 28 ... ;; (if (
1e00: 61 6e 64 20 70 72 65 76 73 74 65 70 20 28 66 69 and prevstep (fi
1e10: 6c 65 2d 65 78 69 73 74 73 3f 20 70 72 65 76 2d le-exists? prev-
1e20: 65 6e 76 29 29 0a 09 09 09 09 09 09 20 20 20 3b env))....... ;
1e30: 3b 20 20 20 20 20 20 20 28 73 65 74 21 20 73 63 ; (set! sc
1e40: 72 69 70 74 20 28 63 6f 6e 63 20 73 63 72 69 70 ript (conc scrip
1e50: 74 20 22 73 6f 75 72 63 65 20 22 20 70 72 65 76 t "source " prev
1e60: 2d 65 6e 76 29 29 29 29 0a 09 09 09 09 09 09 20 -env)))).......
1e70: 20 20 0a 09 09 09 09 09 09 20 20 20 3b 3b 20 63 ....... ;; c
1e80: 61 6c 6c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 all the command
1e90: 75 73 69 6e 67 20 6d 74 5f 65 7a 73 74 65 70 0a using mt_ezstep.
1ea0: 09 09 09 09 09 09 20 20 20 28 73 65 74 21 20 73 ...... (set! s
1eb0: 63 72 69 70 74 20 28 63 6f 6e 63 20 22 6d 74 5f cript (conc "mt_
1ec0: 65 7a 73 74 65 70 20 22 20 73 74 65 70 6e 61 6d ezstep " stepnam
1ed0: 65 20 22 20 22 20 28 69 66 20 70 72 65 76 73 74 e " " (if prevst
1ee0: 65 70 20 70 72 65 76 73 74 65 70 20 22 2d 22 29 ep prevstep "-")
1ef0: 20 22 20 22 20 73 74 65 70 63 6d 64 29 29 0a 0a " " stepcmd))..
1f00: 09 09 09 09 09 09 20 20 20 28 64 65 62 75 67 3a ...... (debug:
1f10: 70 72 69 6e 74 20 34 20 22 73 63 72 69 70 74 3a print 4 "script:
1f20: 20 22 20 73 63 72 69 70 74 29 0a 0a 09 09 09 09 " script)......
1f30: 09 09 20 20 20 28 72 64 62 3a 74 65 73 74 73 74 .. (rdb:testst
1f40: 65 70 2d 73 65 74 2d 73 74 61 74 75 73 21 20 64 ep-set-status! d
1f50: 62 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 6e 61 b run-id test-na
1f60: 6d 65 20 73 74 65 70 6e 61 6d 65 20 22 73 74 61 me stepname "sta
1f70: 72 74 22 20 22 2d 22 20 69 74 65 6d 64 61 74 20 rt" "-" itemdat
1f80: 23 66 20 23 66 29 0a 09 09 09 09 09 09 20 20 20 #f #f).......
1f90: 3b 3b 20 6e 6f 77 20 6c 61 75 6e 63 68 0a 09 09 ;; now launch...
1fa0: 09 09 09 09 20 20 20 28 6c 65 74 20 28 28 70 69 .... (let ((pi
1fb0: 64 20 28 70 72 6f 63 65 73 73 2d 72 75 6e 20 73 d (process-run s
1fc0: 63 72 69 70 74 29 29 29 0a 09 09 09 09 09 09 20 cript))).......
1fd0: 20 20 20 20 28 6c 65 74 20 70 72 6f 63 65 73 73 (let process
1fe0: 6c 6f 6f 70 20 28 28 69 20 30 29 29 0a 09 09 09 loop ((i 0))....
1ff0: 09 09 09 20 20 20 20 20 20 20 28 6c 65 74 2d 76 ... (let-v
2000: 61 6c 75 65 73 20 28 28 28 70 69 64 2d 76 61 6c alues (((pid-val
2010: 20 65 78 69 74 2d 73 74 61 74 75 73 20 65 78 69 exit-status exi
2020: 74 2d 63 6f 64 65 29 28 70 72 6f 63 65 73 73 2d t-code)(process-
2030: 77 61 69 74 20 70 69 64 20 23 74 29 29 29 0a 09 wait pid #t)))..
2040: 09 09 09 09 09 09 09 20 20 20 28 6d 75 74 65 78 ....... (mutex
2050: 2d 6c 6f 63 6b 21 20 6d 29 0a 09 09 09 09 09 09 -lock! m).......
2060: 09 09 20 20 20 28 76 65 63 74 6f 72 2d 73 65 74 .. (vector-set
2070: 21 20 65 78 69 74 2d 69 6e 66 6f 20 30 20 70 69 ! exit-info 0 pi
2080: 64 29 0a 09 09 09 09 09 09 09 09 20 20 20 28 76 d)......... (v
2090: 65 63 74 6f 72 2d 73 65 74 21 20 65 78 69 74 2d ector-set! exit-
20a0: 69 6e 66 6f 20 31 20 65 78 69 74 2d 73 74 61 74 info 1 exit-stat
20b0: 75 73 29 0a 09 09 09 09 09 09 09 09 20 20 20 28 us)......... (
20c0: 76 65 63 74 6f 72 2d 73 65 74 21 20 65 78 69 74 vector-set! exit
20d0: 2d 69 6e 66 6f 20 32 20 65 78 69 74 2d 63 6f 64 -info 2 exit-cod
20e0: 65 29 0a 09 09 09 09 09 09 09 09 20 20 20 28 6d e)......... (m
20f0: 75 74 65 78 2d 75 6e 6c 6f 63 6b 21 20 6d 29 0a utex-unlock! m).
2100: 09 09 09 09 09 09 09 09 20 20 20 28 69 66 20 28 ........ (if (
2110: 65 71 3f 20 70 69 64 2d 76 61 6c 20 30 29 0a 09 eq? pid-val 0)..
2120: 09 09 09 09 09 09 09 20 20 20 20 20 20 20 28 62 ....... (b
2130: 65 67 69 6e 0a 09 09 09 09 09 09 09 09 09 20 28 egin.......... (
2140: 74 68 72 65 61 64 2d 73 6c 65 65 70 21 20 32 29 thread-sleep! 2)
2150: 0a 09 09 09 09 09 09 09 09 09 20 28 70 72 6f 63 .......... (proc
2160: 65 73 73 6c 6f 6f 70 20 28 2b 20 69 20 31 29 29 essloop (+ i 1))
2170: 29 29 0a 09 09 09 09 09 09 09 09 20 20 20 29 29 ))......... ))
2180: 0a 09 09 09 09 09 09 20 20 20 20 20 28 72 64 62 ....... (rdb
2190: 3a 74 65 73 74 73 74 65 70 2d 73 65 74 2d 73 74 :teststep-set-st
21a0: 61 74 75 73 21 20 64 62 20 72 75 6e 2d 69 64 20 atus! db run-id
21b0: 74 65 73 74 2d 6e 61 6d 65 20 73 74 65 70 6e 61 test-name stepna
21c0: 6d 65 20 22 65 6e 64 22 20 28 76 65 63 74 6f 72 me "end" (vector
21d0: 2d 72 65 66 20 65 78 69 74 2d 69 6e 66 6f 20 32 -ref exit-info 2
21e0: 29 20 69 74 65 6d 64 61 74 20 23 66 20 28 69 66 ) itemdat #f (if
21f0: 20 6c 6f 67 70 72 6f 2d 75 73 65 64 20 28 63 6f logpro-used (co
2200: 6e 63 20 73 74 65 70 6e 61 6d 65 20 22 2e 68 74 nc stepname ".ht
2210: 6d 6c 22 29 20 22 22 29 29 0a 09 09 09 09 09 09 ml") "")).......
2220: 20 20 20 20 20 28 69 66 20 6c 6f 67 70 72 6f 2d (if logpro-
2230: 75 73 65 64 0a 09 09 09 09 09 09 09 20 28 74 65 used........ (te
2240: 73 74 2d 73 65 74 2d 6c 6f 67 21 20 64 62 20 72 st-set-log! db r
2250: 75 6e 2d 69 64 20 74 65 73 74 2d 6e 61 6d 65 20 un-id test-name
2260: 69 74 65 6d 64 61 74 20 28 63 6f 6e 63 20 73 74 itemdat (conc st
2270: 65 70 6e 61 6d 65 20 22 2e 68 74 6d 6c 22 29 29 epname ".html"))
2280: 29 0a 09 09 09 09 09 09 20 20 20 20 20 3b 3b 20 )....... ;;
2290: 73 65 74 20 74 68 65 20 74 65 73 74 20 66 69 6e set the test fin
22a0: 61 6c 20 73 74 61 74 75 73 0a 09 09 09 09 09 09 al status.......
22b0: 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 68 69 (let* ((thi
22c0: 73 2d 73 74 65 70 2d 73 74 61 74 75 73 20 28 63 s-step-status (c
22d0: 6f 6e 64 0a 09 09 09 09 09 09 09 09 09 20 20 20 ond..........
22e0: 20 20 20 20 28 28 61 6e 64 20 28 65 71 3f 20 28 ((and (eq? (
22f0: 76 65 63 74 6f 72 2d 72 65 66 20 65 78 69 74 2d vector-ref exit-
2300: 69 6e 66 6f 20 32 29 20 32 29 20 6c 6f 67 70 72 info 2) 2) logpr
2310: 6f 2d 75 73 65 64 29 20 27 77 61 72 6e 29 0a 09 o-used) 'warn)..
2320: 09 09 09 09 09 09 09 09 20 20 20 20 20 20 20 28 ........ (
2330: 28 65 71 3f 20 28 76 65 63 74 6f 72 2d 72 65 66 (eq? (vector-ref
2340: 20 65 78 69 74 2d 69 6e 66 6f 20 32 29 20 30 29 exit-info 2) 0)
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2360: 20 20 20 27 70 61 73 73 29 0a 09 09 09 09 09 09 'pass).......
2370: 09 09 09 20 20 20 20 20 20 20 28 65 6c 73 65 20 ... (else
2380: 27 66 61 69 6c 29 29 29 0a 09 09 09 09 09 09 09 'fail)))........
2390: 20 20 20 20 28 6f 76 65 72 61 6c 6c 2d 73 74 61 (overall-sta
23a0: 74 75 73 20 20 20 28 63 6f 6e 64 0a 09 09 09 09 tus (cond.....
23b0: 09 09 09 09 09 20 20 20 20 20 20 20 28 28 65 71 ..... ((eq
23c0: 3f 20 72 6f 6c 6c 75 70 2d 73 74 61 74 75 73 20 ? rollup-status
23d0: 32 29 20 27 77 61 72 6e 29 0a 09 09 09 09 09 09 2) 'warn).......
23e0: 09 09 09 20 20 20 20 20 20 20 28 28 65 71 3f 20 ... ((eq?
23f0: 72 6f 6c 6c 75 70 2d 73 74 61 74 75 73 20 30 29 rollup-status 0)
2400: 20 27 70 61 73 73 29 0a 09 09 09 09 09 09 09 09 'pass).........
2410: 09 20 20 20 20 20 20 20 28 65 6c 73 65 20 27 66 . (else 'f
2420: 61 69 6c 29 29 29 0a 09 09 09 09 09 09 09 20 20 ail)))........
2430: 20 20 28 6e 65 78 74 2d 73 74 61 74 75 73 20 20 (next-status
2440: 20 20 20 20 28 63 6f 6e 64 20 0a 09 09 09 09 09 (cond ......
2450: 09 09 09 09 20 20 20 20 20 20 20 28 28 65 71 3f .... ((eq?
2460: 20 6f 76 65 72 61 6c 6c 2d 73 74 61 74 75 73 20 overall-status
2470: 27 70 61 73 73 29 20 74 68 69 73 2d 73 74 65 70 'pass) this-step
2480: 2d 73 74 61 74 75 73 29 0a 09 09 09 09 09 09 09 -status)........
2490: 09 09 20 20 20 20 20 20 20 28 28 65 71 3f 20 6f .. ((eq? o
24a0: 76 65 72 61 6c 6c 2d 73 74 61 74 75 73 20 27 77 verall-status 'w
24b0: 61 72 6e 29 0a 09 09 09 09 09 09 09 09 09 09 28 arn)...........(
24c0: 69 66 20 28 65 71 3f 20 74 68 69 73 2d 73 74 65 if (eq? this-ste
24d0: 70 2d 73 74 61 74 75 73 20 27 66 61 69 6c 29 20 p-status 'fail)
24e0: 27 66 61 69 6c 20 27 77 61 72 6e 29 29 0a 09 09 'fail 'warn))...
24f0: 09 09 09 09 09 09 09 20 20 20 20 20 20 20 28 65 ....... (e
2500: 6c 73 65 20 27 66 61 69 6c 29 29 29 29 0a 09 09 lse 'fail))))...
2510: 09 09 09 09 20 20 20 20 20 20 20 28 64 65 62 75 .... (debu
2520: 67 3a 70 72 69 6e 74 20 34 20 22 45 78 69 74 20 g:print 4 "Exit
2530: 76 61 6c 75 65 20 72 65 63 65 69 76 65 64 3a 20 value received:
2540: 22 20 28 76 65 63 74 6f 72 2d 72 65 66 20 65 78 " (vector-ref ex
2550: 69 74 2d 69 6e 66 6f 20 32 29 20 22 20 6c 6f 67 it-info 2) " log
2560: 70 72 6f 2d 75 73 65 64 3a 20 22 20 6c 6f 67 70 pro-used: " logp
2570: 72 6f 2d 75 73 65 64 20 0a 09 09 09 09 09 09 09 ro-used ........
2580: 09 20 20 20 20 22 20 74 68 69 73 2d 73 74 65 70 . " this-step
2590: 2d 73 74 61 74 75 73 3a 20 22 20 74 68 69 73 2d -status: " this-
25a0: 73 74 65 70 2d 73 74 61 74 75 73 20 22 20 6f 76 step-status " ov
25b0: 65 72 61 6c 6c 2d 73 74 61 74 75 73 3a 20 22 20 erall-status: "
25c0: 6f 76 65 72 61 6c 6c 2d 73 74 61 74 75 73 20 0a overall-status .
25d0: 09 09 09 09 09 09 09 09 20 20 20 20 22 20 6e 65 ........ " ne
25e0: 78 74 2d 73 74 61 74 75 73 3a 20 22 20 6e 65 78 xt-status: " nex
25f0: 74 2d 73 74 61 74 75 73 20 22 20 72 6f 6c 6c 75 t-status " rollu
2600: 70 2d 73 74 61 74 75 73 3a 20 22 20 72 6f 6c 6c p-status: " roll
2610: 75 70 2d 73 74 61 74 75 73 29 0a 09 09 09 09 09 up-status)......
2620: 09 20 20 20 20 20 20 20 28 63 61 73 65 20 6e 65 . (case ne
2630: 78 74 2d 73 74 61 74 75 73 0a 09 09 09 09 09 09 xt-status.......
2640: 09 20 28 28 77 61 72 6e 29 0a 09 09 09 09 09 09 . ((warn).......
2650: 09 20 20 28 73 65 74 21 20 72 6f 6c 6c 75 70 2d . (set! rollup-
2660: 73 74 61 74 75 73 20 32 29 0a 09 09 09 09 09 09 status 2).......
2670: 09 20 20 28 74 65 73 74 2d 73 65 74 2d 73 74 61 . (test-set-sta
2680: 74 75 73 21 20 64 62 20 72 75 6e 2d 69 64 20 74 tus! db run-id t
2690: 65 73 74 2d 6e 61 6d 65 20 22 52 55 4e 4e 49 4e est-name "RUNNIN
26a0: 47 22 20 22 57 41 52 4e 22 20 69 74 65 6d 64 61 G" "WARN" itemda
26b0: 74 20 0a 09 09 09 09 09 09 09 09 09 20 20 20 20 t ..........
26c0: 28 69 66 20 28 65 71 3f 20 74 68 69 73 2d 73 74 (if (eq? this-st
26d0: 65 70 2d 73 74 61 74 75 73 20 27 77 61 72 6e 29 ep-status 'warn)
26e0: 20 22 4c 6f 67 70 72 6f 20 77 61 72 6e 69 6e 67 "Logpro warning
26f0: 20 66 6f 75 6e 64 22 20 23 66 29 0a 09 09 09 09 found" #f).....
2700: 09 09 09 09 09 20 20 20 20 23 66 29 29 0a 09 09 ..... #f))...
2710: 09 09 09 09 09 20 28 28 70 61 73 73 29 0a 09 09 ..... ((pass)...
2720: 09 09 09 09 09 20 20 28 74 65 73 74 2d 73 65 74 ..... (test-set
2730: 2d 73 74 61 74 75 73 21 20 64 62 20 72 75 6e 2d -status! db run-
2740: 69 64 20 74 65 73 74 2d 6e 61 6d 65 20 22 52 55 id test-name "RU
2750: 4e 4e 49 4e 47 22 20 22 50 41 53 53 22 20 69 74 NNING" "PASS" it
2760: 65 6d 64 61 74 20 23 66 20 23 66 29 29 0a 09 09 emdat #f #f))...
2770: 09 09 09 09 09 20 28 65 6c 73 65 20 3b 3b 20 27 ..... (else ;; '
2780: 66 61 69 6c 0a 09 09 09 09 09 09 09 20 20 28 73 fail........ (s
2790: 65 74 21 20 72 6f 6c 6c 75 70 2d 73 74 61 74 75 et! rollup-statu
27a0: 73 20 31 29 20 3b 3b 20 66 6f 72 63 65 20 66 61 s 1) ;; force fa
27b0: 69 6c 0a 09 09 09 09 09 09 09 20 20 28 74 65 73 il........ (tes
27c0: 74 2d 73 65 74 2d 73 74 61 74 75 73 21 20 64 62 t-set-status! db
27d0: 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 6e 61 6d run-id test-nam
27e0: 65 20 22 52 55 4e 4e 49 4e 47 22 20 22 46 41 49 e "RUNNING" "FAI
27f0: 4c 22 20 69 74 65 6d 64 61 74 20 28 63 6f 6e 63 L" itemdat (conc
2800: 20 22 46 61 69 6c 65 64 20 61 74 20 73 74 65 70 "Failed at step
2810: 20 22 20 73 74 65 70 6e 61 6d 65 29 20 23 66 29 " stepname) #f)
2820: 0a 09 09 09 09 09 09 09 20 20 29 29 29 29 0a 09 ........ ))))..
2830: 09 09 09 09 09 20 20 20 28 69 66 20 28 61 6e 64 ..... (if (and
2840: 20 28 73 74 65 70 72 75 6e 2d 67 6f 6f 64 3f 20 (steprun-good?
2850: 6c 6f 67 70 72 6f 2d 75 73 65 64 20 28 76 65 63 logpro-used (vec
2860: 74 6f 72 2d 72 65 66 20 65 78 69 74 2d 69 6e 66 tor-ref exit-inf
2870: 6f 20 32 29 29 0a 09 09 09 09 09 09 09 20 20 20 o 2))........
2880: 20 28 6e 6f 74 20 28 6e 75 6c 6c 3f 20 74 61 6c (not (null? tal
2890: 29 29 29 0a 09 09 09 09 09 09 20 20 20 20 20 20 ))).......
28a0: 20 28 6c 6f 6f 70 20 28 63 61 72 20 74 61 6c 29 (loop (car tal)
28b0: 20 28 63 64 72 20 74 61 6c 29 20 73 74 65 70 6e (cdr tal) stepn
28c0: 61 6d 65 29 29 29 0a 09 09 09 09 09 20 20 20 20 ame)))......
28d0: 20 28 64 65 62 75 67 3a 70 72 69 6e 74 20 34 20 (debug:print 4
28e0: 22 57 41 52 4e 49 4e 47 3a 20 61 20 70 72 69 6f "WARNING: a prio
28f0: 72 20 73 74 65 70 20 66 61 69 6c 65 64 2c 20 73 r step failed, s
2900: 74 6f 70 70 69 6e 67 20 61 74 20 22 20 65 7a 73 topping at " ezs
2910: 74 65 70 29 29 29 29 29 29 29 29 0a 09 09 20 28 tep))))))))... (
2920: 6d 6f 6e 69 74 6f 72 6a 6f 62 20 20 20 28 6c 61 monitorjob (la
2930: 6d 62 64 61 20 28 29 0a 09 09 09 09 20 28 6c 65 mbda ()..... (le
2940: 74 2a 20 28 28 73 74 61 72 74 2d 73 65 63 6f 6e t* ((start-secon
2950: 64 73 20 28 63 75 72 72 65 6e 74 2d 73 65 63 6f ds (current-seco
2960: 6e 64 73 29 29 0a 09 09 09 09 09 28 63 61 6c 63 nds))......(calc
2970: 2d 6d 69 6e 75 74 65 73 20 20 28 6c 61 6d 62 64 -minutes (lambd
2980: 61 20 28 29 0a 09 09 09 09 09 09 09 20 28 69 6e a ()........ (in
2990: 65 78 61 63 74 2d 3e 65 78 61 63 74 20 0a 09 09 exact->exact ...
29a0: 09 09 09 09 09 20 20 28 72 6f 75 6e 64 20 0a 09 ..... (round ..
29b0: 09 09 09 09 09 09 20 20 20 28 2d 20 0a 09 09 09 ...... (- ....
29c0: 09 09 09 09 20 20 20 20 28 63 75 72 72 65 6e 74 .... (current
29d0: 2d 73 65 63 6f 6e 64 73 29 20 0a 09 09 09 09 09 -seconds) ......
29e0: 09 09 20 20 20 20 73 74 61 72 74 2d 73 65 63 6f .. start-seco
29f0: 6e 64 73 29 29 29 29 29 0a 09 09 09 09 09 28 6b nds)))))......(k
2a00: 69 6c 6c 2d 74 72 69 65 73 20 30 29 29 0a 09 09 ill-tries 0))...
2a10: 09 09 20 20 20 28 6c 65 74 20 6c 6f 6f 70 20 28 .. (let loop (
2a20: 28 6d 69 6e 75 74 65 73 20 20 20 28 63 61 6c 63 (minutes (calc
2a30: 2d 6d 69 6e 75 74 65 73 29 29 29 0a 09 09 09 09 -minutes))).....
2a40: 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 62 20 (let* ((db
2a50: 20 20 20 20 20 20 28 6f 70 65 6e 2d 64 62 29 29 (open-db))
2a60: 0a 09 09 09 09 09 20 20 20 20 28 63 70 75 6c 6f ...... (cpulo
2a70: 61 64 20 20 28 67 65 74 2d 63 70 75 2d 6c 6f 61 ad (get-cpu-loa
2a80: 64 29 29 0a 09 09 09 09 09 20 20 20 20 28 64 69 d))...... (di
2a90: 73 6b 66 72 65 65 20 28 67 65 74 2d 64 66 20 28 skfree (get-df (
2aa0: 63 75 72 72 65 6e 74 2d 64 69 72 65 63 74 6f 72 current-director
2ab0: 79 29 29 29 0a 09 09 09 09 09 20 20 20 20 28 74 y)))...... (t
2ac0: 6d 70 66 72 65 65 20 20 28 67 65 74 2d 64 66 20 mpfree (get-df
2ad0: 22 2f 74 6d 70 22 29 29 29 0a 09 09 09 09 20 20 "/tmp"))).....
2ae0: 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 61 (if (not (a
2af0: 72 67 73 3a 67 65 74 2d 61 72 67 20 22 2d 73 65 rgs:get-arg "-se
2b00: 72 76 65 72 22 29 29 0a 09 09 09 09 09 20 20 20 rver"))......
2b10: 28 73 65 72 76 65 72 3a 63 6c 69 65 6e 74 2d 73 (server:client-s
2b20: 65 74 75 70 20 64 62 29 29 0a 09 09 09 09 20 20 etup db)).....
2b30: 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 63 70 (if (not cp
2b40: 75 6c 6f 61 64 29 20 20 28 62 65 67 69 6e 20 28 uload) (begin (
2b50: 64 65 62 75 67 3a 70 72 69 6e 74 20 30 20 22 57 debug:print 0 "W
2b60: 41 52 4e 49 4e 47 3a 20 43 50 55 4c 4f 41 44 20 ARNING: CPULOAD
2b70: 6e 6f 74 20 66 6f 75 6e 64 2e 22 29 20 20 28 73 not found.") (s
2b80: 65 74 21 20 63 70 75 6c 6f 61 64 20 22 6e 2f 61 et! cpuload "n/a
2b90: 22 29 29 29 0a 09 09 09 09 20 20 20 20 20 20 20 "))).....
2ba0: 28 69 66 20 28 6e 6f 74 20 64 69 73 6b 66 72 65 (if (not diskfre
2bb0: 65 29 20 28 62 65 67 69 6e 20 28 64 65 62 75 67 e) (begin (debug
2bc0: 3a 70 72 69 6e 74 20 30 20 22 57 41 52 4e 49 4e :print 0 "WARNIN
2bd0: 47 3a 20 44 49 53 4b 46 52 45 45 20 6e 6f 74 20 G: DISKFREE not
2be0: 66 6f 75 6e 64 2e 22 29 20 28 73 65 74 21 20 64 found.") (set! d
2bf0: 69 73 6b 66 72 65 65 20 22 6e 2f 61 22 29 29 29 iskfree "n/a")))
2c00: 0a 09 09 09 09 20 20 20 20 20 20 20 28 73 65 74 ..... (set
2c10: 21 20 6b 69 6c 6c 2d 6a 6f 62 3f 20 28 74 65 73 ! kill-job? (tes
2c20: 74 2d 67 65 74 2d 6b 69 6c 6c 2d 72 65 71 75 65 t-get-kill-reque
2c30: 73 74 20 64 62 20 72 75 6e 2d 69 64 20 74 65 73 st db run-id tes
2c40: 74 2d 6e 61 6d 65 20 69 74 65 6d 64 61 74 29 29 t-name itemdat))
2c50: 0a 09 09 09 09 20 20 20 20 20 20 20 28 72 64 62 ..... (rdb
2c60: 3a 74 65 73 74 2d 75 70 64 61 74 65 2d 6d 65 74 :test-update-met
2c70: 61 2d 69 6e 66 6f 20 64 62 20 72 75 6e 2d 69 64 a-info db run-id
2c80: 20 74 65 73 74 2d 6e 61 6d 65 20 69 74 65 6d 64 test-name itemd
2c90: 61 74 20 6d 69 6e 75 74 65 73 20 63 70 75 6c 6f at minutes cpulo
2ca0: 61 64 20 64 69 73 6b 66 72 65 65 20 74 6d 70 66 ad diskfree tmpf
2cb0: 72 65 65 29 0a 09 09 09 09 20 20 20 20 20 20 20 ree).....
2cc0: 28 69 66 20 6b 69 6c 6c 2d 6a 6f 62 3f 20 0a 09 (if kill-job? ..
2cd0: 09 09 09 09 20 20 20 28 62 65 67 69 6e 0a 09 09 .... (begin...
2ce0: 09 09 09 20 20 20 20 20 28 6d 75 74 65 78 2d 6c ... (mutex-l
2cf0: 6f 63 6b 21 20 6d 29 0a 09 09 09 09 09 20 20 20 ock! m)......
2d00: 20 20 28 6c 65 74 2a 20 28 28 70 69 64 20 28 76 (let* ((pid (v
2d10: 65 63 74 6f 72 2d 72 65 66 20 65 78 69 74 2d 69 ector-ref exit-i
2d20: 6e 66 6f 20 30 29 29 29 0a 09 09 09 09 09 20 20 nfo 0)))......
2d30: 20 20 20 20 20 28 69 66 20 28 6e 75 6d 62 65 72 (if (number
2d40: 3f 20 70 69 64 29 0a 09 09 09 09 09 09 20 20 20 ? pid).......
2d50: 28 62 65 67 69 6e 0a 09 09 09 09 09 09 20 20 20 (begin.......
2d60: 20 20 28 64 65 62 75 67 3a 70 72 69 6e 74 20 30 (debug:print 0
2d70: 20 22 57 41 52 4e 49 4e 47 3a 20 52 65 71 75 65 "WARNING: Reque
2d80: 73 74 20 72 65 63 65 69 76 65 64 20 74 6f 20 6b st received to k
2d90: 69 6c 6c 20 6a 6f 62 20 28 61 74 74 65 6d 70 74 ill job (attempt
2da0: 20 23 20 22 20 6b 69 6c 6c 2d 74 72 69 65 73 20 # " kill-tries
2db0: 22 29 22 29 0a 09 09 09 09 09 09 20 20 20 20 20 ")").......
2dc0: 28 6c 65 74 20 28 28 70 72 6f 63 65 73 73 65 73 (let ((processes
2dd0: 20 28 63 6d 64 2d 72 75 6e 2d 3e 6c 69 73 74 20 (cmd-run->list
2de0: 28 63 6f 6e 63 20 22 70 67 72 65 70 20 2d 6c 20 (conc "pgrep -l
2df0: 2d 50 20 22 20 70 69 64 29 29 29 29 0a 09 09 09 -P " pid))))....
2e00: 09 09 09 20 20 20 20 20 20 20 28 66 6f 72 2d 65 ... (for-e
2e10: 61 63 68 20 0a 09 09 09 09 09 09 09 28 6c 61 6d ach ........(lam
2e20: 62 64 61 20 28 70 29 0a 09 09 09 09 09 09 09 20 bda (p)........
2e30: 20 28 6c 65 74 2a 20 28 28 70 61 72 74 73 20 20 (let* ((parts
2e40: 28 73 74 72 69 6e 67 2d 73 70 6c 69 74 20 70 29 (string-split p)
2e50: 29 0a 09 09 09 09 09 09 09 09 20 28 70 2d 69 64 )......... (p-id
2e60: 20 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 (if (> (lengt
2e70: 68 20 70 61 72 74 73 29 20 30 29 0a 09 09 09 09 h parts) 0).....
2e80: 09 09 09 09 09 20 20 20 20 20 28 73 74 72 69 6e ..... (strin
2e90: 67 2d 3e 6e 75 6d 62 65 72 20 28 63 61 72 20 70 g->number (car p
2ea0: 61 72 74 73 29 29 0a 09 09 09 09 09 09 09 09 09 arts))..........
2eb0: 20 20 20 20 20 23 66 29 29 29 0a 09 09 09 09 09 #f)))......
2ec0: 09 09 20 20 20 20 28 69 66 20 70 2d 69 64 0a 09 .. (if p-id..
2ed0: 09 09 09 09 09 09 09 28 62 65 67 69 6e 0a 09 09 .......(begin...
2ee0: 09 09 09 09 09 09 20 20 28 64 65 62 75 67 3a 70 ...... (debug:p
2ef0: 72 69 6e 74 20 30 20 22 4b 69 6c 6c 69 6e 67 20 rint 0 "Killing
2f00: 22 20 28 63 61 64 72 20 70 61 72 74 73 29 20 22 " (cadr parts) "
2f10: 3b 20 6b 69 6c 6c 20 2d 39 20 20 22 20 70 2d 69 ; kill -9 " p-i
2f20: 64 29 0a 09 09 09 09 09 09 09 09 20 20 28 73 79 d)......... (sy
2f30: 73 74 65 6d 20 28 63 6f 6e 63 20 22 6b 69 6c 6c stem (conc "kill
2f40: 20 2d 39 20 22 20 70 2d 69 64 29 29 29 29 29 29 -9 " p-id))))))
2f50: 0a 09 09 09 09 09 09 09 28 63 61 72 20 70 72 6f ........(car pro
2f60: 63 65 73 73 65 73 29 29 0a 09 09 09 09 09 09 20 cesses)).......
2f70: 20 20 20 20 20 20 28 73 79 73 74 65 6d 20 28 63 (system (c
2f80: 6f 6e 63 20 22 6b 69 6c 6c 20 2d 39 20 22 20 70 onc "kill -9 " p
2f90: 69 64 29 29 29 29 0a 09 09 09 09 09 09 20 20 20 id)))).......
2fa0: 28 62 65 67 69 6e 0a 09 09 09 09 09 09 20 20 20 (begin.......
2fb0: 20 20 28 64 65 62 75 67 3a 70 72 69 6e 74 20 30 (debug:print 0
2fc0: 20 22 57 41 52 4e 49 4e 47 3a 20 52 65 71 75 65 "WARNING: Reque
2fd0: 73 74 20 72 65 63 65 69 76 65 64 20 74 6f 20 6b st received to k
2fe0: 69 6c 6c 20 6a 6f 62 20 62 75 74 20 70 72 6f 62 ill job but prob
2ff0: 6c 65 6d 20 77 69 74 68 20 70 72 6f 63 65 73 73 lem with process
3000: 2c 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 , attempting to
3010: 6b 69 6c 6c 20 6d 61 6e 61 67 65 72 20 70 72 6f kill manager pro
3020: 63 65 73 73 22 29 0a 09 09 09 09 09 09 20 20 20 cess").......
3030: 20 20 28 74 65 73 74 2d 73 65 74 2d 73 74 61 74 (test-set-stat
3040: 75 73 21 20 64 62 20 72 75 6e 2d 69 64 20 74 65 us! db run-id te
3050: 73 74 2d 6e 61 6d 65 20 22 4b 49 4c 4c 45 44 22 st-name "KILLED"
3060: 20 20 22 46 41 49 4c 22 0a 09 09 09 09 09 09 09 "FAIL"........
3070: 09 20 20 20 20 20 20 20 69 74 65 6d 64 61 74 20 . itemdat
3080: 28 61 72 67 73 3a 67 65 74 2d 61 72 67 20 22 2d (args:get-arg "-
3090: 6d 22 29 20 23 66 29 0a 09 09 09 09 09 09 20 20 m") #f).......
30a0: 20 20 20 28 73 71 6c 69 74 65 33 3a 66 69 6e 61 (sqlite3:fina
30b0: 6c 69 7a 65 21 20 64 62 29 0a 09 09 09 09 09 09 lize! db).......
30c0: 20 20 20 20 20 28 65 78 69 74 20 31 29 29 29 29 (exit 1))))
30d0: 0a 09 09 09 09 09 20 20 20 20 20 28 73 65 74 21 ...... (set!
30e0: 20 6b 69 6c 6c 2d 74 72 69 65 73 20 28 2b 20 31 kill-tries (+ 1
30f0: 20 6b 69 6c 6c 2d 74 72 69 65 73 29 29 0a 09 09 kill-tries))...
3100: 09 09 09 20 20 20 20 20 28 6d 75 74 65 78 2d 75 ... (mutex-u
3110: 6e 6c 6f 63 6b 21 20 6d 29 29 29 0a 09 09 09 09 nlock! m))).....
3120: 20 20 20 20 20 20 20 28 73 71 6c 69 74 65 33 3a (sqlite3:
3130: 66 69 6e 61 6c 69 7a 65 21 20 64 62 29 0a 09 09 finalize! db)...
3140: 09 09 20 20 20 20 20 20 20 28 74 68 72 65 61 64 .. (thread
3150: 2d 73 6c 65 65 70 21 20 28 2b 20 38 20 28 72 61 -sleep! (+ 8 (ra
3160: 6e 64 6f 6d 20 34 29 29 29 20 3b 3b 20 61 64 64 ndom 4))) ;; add
3170: 20 73 6f 6d 65 20 6a 69 74 74 65 72 20 74 6f 20 some jitter to
3180: 74 68 65 20 63 61 6c 6c 20 68 6f 6d 65 20 74 69 the call home ti
3190: 6d 65 20 74 6f 20 73 70 72 65 61 64 20 6f 75 74 me to spread out
31a0: 20 74 68 65 20 64 62 20 61 63 63 65 73 73 65 73 the db accesses
31b0: 0a 09 09 09 09 20 20 20 20 20 20 20 28 6c 6f 6f ..... (loo
31c0: 70 20 28 63 61 6c 63 2d 6d 69 6e 75 74 65 73 29 p (calc-minutes)
31d0: 29 29 29 29 29 29 0a 09 09 20 28 74 68 31 20 20 ))))))... (th1
31e0: 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 74 68 (make-th
31f0: 72 65 61 64 20 6d 6f 6e 69 74 6f 72 6a 6f 62 29 read monitorjob)
3200: 29 0a 09 09 20 28 74 68 32 20 20 20 20 20 20 20 )... (th2
3210: 20 20 20 28 6d 61 6b 65 2d 74 68 72 65 61 64 20 (make-thread
3220: 72 75 6e 69 74 29 29 29 0a 09 20 20 20 20 28 73 runit))).. (s
3230: 65 74 21 20 6a 6f 62 2d 74 68 72 65 61 64 20 74 et! job-thread t
3240: 68 32 29 0a 09 20 20 20 20 28 74 68 72 65 61 64 h2).. (thread
3250: 2d 73 74 61 72 74 21 20 74 68 31 29 0a 09 20 20 -start! th1)..
3260: 20 20 28 74 68 72 65 61 64 2d 73 74 61 72 74 21 (thread-start!
3270: 20 74 68 32 29 0a 09 20 20 20 20 28 74 68 72 65 th2).. (thre
3280: 61 64 2d 6a 6f 69 6e 21 20 74 68 32 29 0a 09 20 ad-join! th2)..
3290: 20 20 20 28 6d 75 74 65 78 2d 6c 6f 63 6b 21 20 (mutex-lock!
32a0: 6d 29 0a 09 20 20 20 20 28 73 65 74 21 20 64 62 m).. (set! db
32b0: 20 28 6f 70 65 6e 2d 64 62 29 29 0a 09 20 20 20 (open-db))..
32c0: 20 28 69 66 20 28 6e 6f 74 20 28 61 72 67 73 3a (if (not (args:
32d0: 67 65 74 2d 61 72 67 20 22 2d 73 65 72 76 65 72 get-arg "-server
32e0: 22 29 29 0a 09 09 28 73 65 72 76 65 72 3a 63 6c "))...(server:cl
32f0: 69 65 6e 74 2d 73 65 74 75 70 20 64 62 29 29 0a ient-setup db)).
3300: 09 20 20 20 20 28 6c 65 74 2a 20 28 28 69 74 65 . (let* ((ite
3310: 6d 2d 70 61 74 68 20 28 69 74 65 6d 2d 6c 69 73 m-path (item-lis
3320: 74 2d 3e 70 61 74 68 20 69 74 65 6d 64 61 74 29 t->path itemdat)
3330: 29 0a 09 09 20 20 20 28 74 65 73 74 69 6e 66 6f )... (testinfo
3340: 20 20 28 64 62 3a 67 65 74 2d 74 65 73 74 2d 69 (db:get-test-i
3350: 6e 66 6f 20 64 62 20 72 75 6e 2d 69 64 20 74 65 nfo db run-id te
3360: 73 74 2d 6e 61 6d 65 20 69 74 65 6d 2d 70 61 74 st-name item-pat
3370: 68 29 29 29 0a 09 20 20 20 20 20 20 28 69 66 20 h))).. (if
3380: 28 6e 6f 74 20 28 65 71 75 61 6c 3f 20 28 64 62 (not (equal? (db
3390: 3a 74 65 73 74 2d 67 65 74 2d 73 74 61 74 65 20 :test-get-state
33a0: 74 65 73 74 69 6e 66 6f 29 20 22 43 4f 4d 50 4c testinfo) "COMPL
33b0: 45 54 45 44 22 29 29 0a 09 09 20 20 28 62 65 67 ETED"))... (beg
33c0: 69 6e 0a 09 09 20 20 20 20 28 64 65 62 75 67 3a in... (debug:
33d0: 70 72 69 6e 74 20 32 20 22 54 65 73 74 20 4e 4f print 2 "Test NO
33e0: 54 20 6c 6f 67 67 65 64 20 61 73 20 43 4f 4d 50 T logged as COMP
33f0: 4c 45 54 45 44 2c 20 28 73 74 61 74 65 3d 22 20 LETED, (state="
3400: 28 64 62 3a 74 65 73 74 2d 67 65 74 2d 73 74 61 (db:test-get-sta
3410: 74 65 20 74 65 73 74 69 6e 66 6f 29 20 22 29 2c te testinfo) "),
3420: 20 75 70 64 61 74 69 6e 67 20 72 65 73 75 6c 74 updating result
3430: 2c 20 72 6f 6c 6c 75 70 2d 73 74 61 74 75 73 20 , rollup-status
3440: 69 73 20 22 20 72 6f 6c 6c 75 70 2d 73 74 61 74 is " rollup-stat
3450: 75 73 29 0a 09 09 20 20 20 20 28 74 65 73 74 2d us)... (test-
3460: 73 65 74 2d 73 74 61 74 75 73 21 20 64 62 20 72 set-status! db r
3470: 75 6e 2d 69 64 20 74 65 73 74 2d 6e 61 6d 65 0a un-id test-name.
3480: 09 09 09 09 20 20 20 20 20 20 28 69 66 20 6b 69 .... (if ki
3490: 6c 6c 2d 6a 6f 62 3f 20 22 4b 49 4c 4c 45 44 22 ll-job? "KILLED"
34a0: 20 22 43 4f 4d 50 4c 45 54 45 44 22 29 0a 09 09 "COMPLETED")...
34b0: 09 09 20 20 20 20 20 20 3b 3b 20 4f 6c 64 20 6c .. ;; Old l
34c0: 6f 67 69 63 3a 0a 09 09 09 09 20 20 20 20 20 20 ogic:.....
34d0: 3b 3b 20 28 69 66 20 28 76 65 63 74 6f 72 2d 72 ;; (if (vector-r
34e0: 65 66 20 65 78 69 74 2d 69 6e 66 6f 20 31 29 20 ef exit-info 1)
34f0: 3b 3b 20 6c 6f 6f 6b 20 61 74 20 74 68 65 20 65 ;; look at the e
3500: 78 69 74 2d 73 74 61 74 75 73 2c 20 23 74 20 6d xit-status, #t m
3510: 65 61 6e 73 20 69 74 20 61 74 20 6c 65 61 73 74 eans it at least
3520: 20 72 61 6e 0a 09 09 09 09 20 20 20 20 20 20 3b ran..... ;
3530: 3b 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 ; (if (and (
3540: 6e 6f 74 20 6b 69 6c 6c 2d 6a 6f 62 3f 29 20 0a not kill-job?) .
3550: 09 09 09 09 20 20 20 20 20 20 3b 3b 20 20 20 20 .... ;;
3560: 20 20 20 20 20 28 65 71 3f 20 28 76 65 63 74 6f (eq? (vecto
3570: 72 2d 72 65 66 20 65 78 69 74 2d 69 6e 66 6f 20 r-ref exit-info
3580: 32 29 20 30 29 29 20 3b 3b 20 77 65 20 63 61 6e 2) 0)) ;; we can
3590: 20 6e 6f 77 20 75 73 65 20 72 6f 6c 6c 75 70 2d now use rollup-
35a0: 73 74 61 74 75 73 20 69 6e 73 74 65 61 64 0a 09 status instead..
35b0: 09 09 09 20 20 20 20 20 20 3b 3b 20 20 20 20 20 ... ;;
35c0: 20 20 20 20 22 50 41 53 53 22 0a 09 09 09 09 20 "PASS".....
35d0: 20 20 20 20 20 3b 3b 20 20 20 20 20 20 20 20 20 ;;
35e0: 22 46 41 49 4c 22 29 0a 09 09 09 09 20 20 20 20 "FAIL").....
35f0: 20 20 3b 3b 20 20 20 20 20 22 46 41 49 4c 22 29 ;; "FAIL")
3600: 20 0a 09 09 09 09 20 20 20 20 20 20 3b 3b 20 4e ..... ;; N
3610: 65 77 20 6c 6f 67 69 63 20 62 61 73 65 64 20 6f ew logic based o
3620: 6e 20 72 6f 6c 6c 75 70 2d 73 74 61 74 75 73 0a n rollup-status.
3630: 09 09 09 09 20 20 20 20 20 20 28 63 6f 6e 64 0a .... (cond.
3640: 09 09 09 09 20 20 20 20 20 20 20 28 28 6e 6f 74 .... ((not
3650: 20 28 76 65 63 74 6f 72 2d 72 65 66 20 65 78 69 (vector-ref exi
3660: 74 2d 69 6e 66 6f 20 31 29 29 20 22 46 41 49 4c t-info 1)) "FAIL
3670: 22 29 20 3b 3b 20 6a 6f 62 20 66 61 69 6c 65 64 ") ;; job failed
3680: 20 74 6f 20 72 75 6e 0a 09 09 09 09 20 20 20 20 to run.....
3690: 20 20 20 28 28 65 71 3f 20 72 6f 6c 6c 75 70 2d ((eq? rollup-
36a0: 73 74 61 74 75 73 20 30 29 0a 09 09 09 09 09 3b status 0)......;
36b0: 3b 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 ; if the current
36c0: 20 73 74 61 74 75 73 20 69 73 20 41 55 54 4f 20 status is AUTO
36d0: 74 68 65 20 64 65 66 65 72 20 74 6f 20 74 68 65 the defer to the
36e0: 20 63 61 6c 63 75 6c 61 74 65 64 20 76 61 6c 75 calculated valu
36f0: 65 20 28 69 2e 65 2e 20 6c 65 61 76 65 20 74 68 e (i.e. leave th
3700: 69 73 20 41 55 54 4f 29 0a 09 09 09 09 09 28 69 is AUTO)......(i
3710: 66 20 28 65 71 75 61 6c 3f 20 28 64 62 3a 74 65 f (equal? (db:te
3720: 73 74 2d 67 65 74 2d 73 74 61 74 75 73 20 74 65 st-get-status te
3730: 73 74 69 6e 66 6f 29 20 22 41 55 54 4f 22 29 20 stinfo) "AUTO")
3740: 22 41 55 54 4f 22 20 22 50 41 53 53 22 29 29 0a "AUTO" "PASS")).
3750: 09 09 09 09 20 20 20 20 20 20 20 28 28 65 71 3f .... ((eq?
3760: 20 72 6f 6c 6c 75 70 2d 73 74 61 74 75 73 20 31 rollup-status 1
3770: 29 20 22 46 41 49 4c 22 29 0a 09 09 09 09 20 20 ) "FAIL").....
3780: 20 20 20 20 20 28 28 65 71 3f 20 72 6f 6c 6c 75 ((eq? rollu
3790: 70 2d 73 74 61 74 75 73 20 32 29 0a 09 09 09 09 p-status 2).....
37a0: 09 3b 3b 20 69 66 20 74 68 65 20 63 75 72 72 65 .;; if the curre
37b0: 6e 74 20 73 74 61 74 75 73 20 69 73 20 41 55 54 nt status is AUT
37c0: 4f 20 74 68 65 20 64 65 66 65 72 20 74 6f 20 74 O the defer to t
37d0: 68 65 20 63 61 6c 63 75 6c 61 74 65 64 20 76 61 he calculated va
37e0: 6c 75 65 20 62 75 74 20 71 75 61 6c 69 66 79 20 lue but qualify
37f0: 28 69 2e 65 2e 20 6d 61 6b 65 20 74 68 69 73 20 (i.e. make this
3800: 41 55 54 4f 2d 57 41 52 4e 29 0a 09 09 09 09 09 AUTO-WARN)......
3810: 28 69 66 20 28 65 71 75 61 6c 3f 20 28 64 62 3a (if (equal? (db:
3820: 74 65 73 74 2d 67 65 74 2d 73 74 61 74 75 73 20 test-get-status
3830: 74 65 73 74 69 6e 66 6f 29 20 22 41 55 54 4f 22 testinfo) "AUTO"
3840: 29 20 22 41 55 54 4f 2d 57 41 52 4e 22 20 22 57 ) "AUTO-WARN" "W
3850: 41 52 4e 22 29 29 0a 09 09 09 09 20 20 20 20 20 ARN")).....
3860: 20 20 28 65 6c 73 65 20 22 46 41 49 4c 22 29 29 (else "FAIL"))
3870: 0a 09 09 09 09 20 20 20 20 20 20 69 74 65 6d 64 ..... itemd
3880: 61 74 20 28 61 72 67 73 3a 67 65 74 2d 61 72 67 at (args:get-arg
3890: 20 22 2d 6d 22 29 20 23 66 29 29 29 0a 09 20 20 "-m") #f)))..
38a0: 20 20 20 20 3b 3b 20 66 6f 72 20 61 75 74 6f 6d ;; for autom
38b0: 61 74 65 64 20 63 72 65 61 74 69 6f 6e 20 6f 66 ated creation of
38c0: 20 74 68 65 20 72 6f 6c 6c 75 70 20 68 74 6d 6c the rollup html
38d0: 20 66 69 6c 65 20 74 68 69 73 20 69 73 20 61 20 file this is a
38e0: 67 6f 6f 64 20 70 6c 61 63 65 2e 2e 2e 0a 09 20 good place.....
38f0: 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 65 (if (not (e
3900: 71 75 61 6c 3f 20 69 74 65 6d 2d 70 61 74 68 20 qual? item-path
3910: 22 22 29 29 0a 09 09 20 20 28 74 65 73 74 73 3a ""))... (tests:
3920: 73 75 6d 6d 61 72 69 7a 65 2d 69 74 65 6d 73 20 summarize-items
3930: 64 62 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 6e db run-id test-n
3940: 61 6d 65 20 23 66 29 29 20 3b 3b 20 64 6f 6e 27 ame #f)) ;; don'
3950: 74 20 66 6f 72 63 65 20 2d 20 6a 75 73 74 20 75 t force - just u
3960: 70 64 61 74 65 20 69 66 20 6e 6f 0a 09 20 20 20 pdate if no..
3970: 20 20 20 29 0a 09 20 20 20 20 28 6d 75 74 65 78 ).. (mutex
3980: 2d 75 6e 6c 6f 63 6b 21 20 6d 29 0a 09 20 20 20 -unlock! m)..
3990: 20 3b 3b 20 28 65 78 65 63 2d 72 65 73 75 6c 74 ;; (exec-result
39a0: 73 20 28 63 6d 64 2d 72 75 6e 2d 3e 6c 69 73 74 s (cmd-run->list
39b0: 20 66 75 6c 6c 72 75 6e 73 63 72 69 70 74 29 29 fullrunscript))
39c0: 20 3b 3b 20 20 28 6c 69 73 74 20 22 3e 22 20 28 ;; (list ">" (
39d0: 63 6f 6e 63 20 74 65 73 74 2d 6e 61 6d 65 20 22 conc test-name "
39e0: 2d 72 75 6e 2e 6c 6f 67 22 29 29 29 29 0a 09 20 -run.log"))))..
39f0: 20 20 20 3b 3b 20 28 73 75 63 63 65 73 73 20 20 ;; (success
3a00: 20 20 20 20 65 78 65 63 2d 72 65 73 75 6c 74 73 exec-results
3a10: 29 29 20 3b 3b 20 28 65 71 3f 20 28 63 61 64 72 )) ;; (eq? (cadr
3a20: 20 65 78 65 63 2d 72 65 73 75 6c 74 73 29 20 30 exec-results) 0
3a30: 29 29 29 0a 09 20 20 20 20 28 64 65 62 75 67 3a ))).. (debug:
3a40: 70 72 69 6e 74 20 32 20 22 4f 75 74 70 75 74 20 print 2 "Output
3a50: 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 20 22 20 66 from running " f
3a60: 75 6c 6c 72 75 6e 73 63 72 69 70 74 20 22 2c 20 ullrunscript ",
3a70: 70 69 64 20 22 20 28 76 65 63 74 6f 72 2d 72 65 pid " (vector-re
3a80: 66 20 65 78 69 74 2d 69 6e 66 6f 20 30 29 20 22 f exit-info 0) "
3a90: 20 69 6e 20 77 6f 72 6b 20 61 72 65 61 20 22 20 in work area "
3aa0: 0a 09 09 09 20 77 6f 72 6b 2d 61 72 65 61 20 22 .... work-area "
3ab0: 3a 5c 6e 3d 3d 3d 3d 5c 6e 20 65 78 69 74 20 63 :\n====\n exit c
3ac0: 6f 64 65 20 22 20 28 76 65 63 74 6f 72 2d 72 65 ode " (vector-re
3ad0: 66 20 65 78 69 74 2d 69 6e 66 6f 20 32 29 20 22 f exit-info 2) "
3ae0: 5c 6e 22 20 22 3d 3d 3d 3d 5c 6e 22 29 0a 09 20 \n" "====\n")..
3af0: 20 20 20 28 73 71 6c 69 74 65 33 3a 66 69 6e 61 (sqlite3:fina
3b00: 6c 69 7a 65 21 20 64 62 29 0a 09 20 20 20 20 28 lize! db).. (
3b10: 69 66 20 28 6e 6f 74 20 28 76 65 63 74 6f 72 2d if (not (vector-
3b20: 72 65 66 20 65 78 69 74 2d 69 6e 66 6f 20 31 29 ref exit-info 1)
3b30: 29 0a 09 09 28 65 78 69 74 20 34 29 29 29 29 29 )...(exit 4)))))
3b40: 29 29 0a 0a 3b 3b 20 73 65 74 20 75 70 20 74 68 ))..;; set up th
3b50: 65 20 76 65 72 79 20 62 61 73 69 63 73 20 6e 65 e very basics ne
3b60: 65 64 65 64 20 66 6f 72 20 64 6f 69 6e 67 20 61 eded for doing a
3b70: 6e 79 74 68 69 6e 67 20 68 65 72 65 2e 0a 28 64 nything here..(d
3b80: 65 66 69 6e 65 20 28 73 65 74 75 70 2d 66 6f 72 efine (setup-for
3b90: 2d 72 75 6e 29 0a 20 20 3b 3b 20 77 6f 75 6c 64 -run). ;; would
3ba0: 20 73 65 74 20 76 61 6c 75 65 73 20 66 6f 72 20 set values for
3bb0: 4b 45 59 53 20 69 6e 20 74 68 65 20 65 6e 76 69 KEYS in the envi
3bc0: 72 6f 6e 6d 65 6e 74 20 68 65 72 65 20 66 6f 72 ronment here for
3bd0: 20 62 65 74 74 65 72 20 73 75 70 70 6f 72 74 20 better support
3be0: 6f 66 20 65 6e 76 2d 6f 76 65 72 72 69 64 65 20 of env-override
3bf0: 62 75 74 20 0a 20 20 3b 3b 20 68 61 76 65 20 63 but . ;; have c
3c00: 68 69 63 6b 65 6e 2f 65 67 67 20 73 63 65 6e 61 hicken/egg scena
3c10: 72 69 6f 2e 20 6e 65 65 64 20 74 6f 20 72 65 61 rio. need to rea
3c20: 64 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 d megatest.confi
3c30: 67 20 74 68 65 6e 20 72 65 61 64 20 69 74 20 61 g then read it a
3c40: 67 61 69 6e 2e 20 47 6f 69 6e 67 20 74 6f 20 0a gain. Going to .
3c50: 20 20 3b 3b 20 70 61 73 73 20 6f 6e 20 74 68 61 ;; pass on tha
3c60: 74 20 69 64 65 61 20 66 6f 72 20 6e 6f 77 2e 0a t idea for now..
3c70: 20 20 28 73 65 74 21 20 2a 63 6f 6e 66 69 67 69 (set! *configi
3c80: 6e 66 6f 2a 20 28 66 69 6e 64 2d 61 6e 64 2d 72 nfo* (find-and-r
3c90: 65 61 64 2d 63 6f 6e 66 69 67 20 28 69 66 20 28 ead-config (if (
3ca0: 61 72 67 73 3a 67 65 74 2d 61 72 67 20 22 2d 63 args:get-arg "-c
3cb0: 6f 6e 66 69 67 22 29 28 61 72 67 73 3a 67 65 74 onfig")(args:get
3cc0: 2d 61 72 67 20 22 2d 63 6f 6e 66 69 67 22 29 20 -arg "-config")
3cd0: 22 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 "megatest.config
3ce0: 22 29 20 65 6e 76 69 72 6f 6e 2d 70 61 74 74 3a ") environ-patt:
3cf0: 20 22 65 6e 76 2d 6f 76 65 72 72 69 64 65 22 29 "env-override")
3d00: 29 0a 20 20 28 73 65 74 21 20 2a 63 6f 6e 66 69 ). (set! *confi
3d10: 67 64 61 74 2a 20 20 28 69 66 20 28 63 61 72 20 gdat* (if (car
3d20: 2a 63 6f 6e 66 69 67 69 6e 66 6f 2a 29 28 63 61 *configinfo*)(ca
3d30: 72 20 2a 63 6f 6e 66 69 67 69 6e 66 6f 2a 29 20 r *configinfo*)
3d40: 23 66 29 29 0a 20 20 28 73 65 74 21 20 2a 74 6f #f)). (set! *to
3d50: 70 70 61 74 68 2a 20 20 20 20 28 69 66 20 28 63 ppath* (if (c
3d60: 61 72 20 2a 63 6f 6e 66 69 67 69 6e 66 6f 2a 29 ar *configinfo*)
3d70: 28 63 61 64 72 20 2a 63 6f 6e 66 69 67 69 6e 66 (cadr *configinf
3d80: 6f 2a 29 20 23 66 29 29 0a 20 20 28 69 66 20 2a o*) #f)). (if *
3d90: 74 6f 70 70 61 74 68 2a 0a 20 20 20 20 20 20 28 toppath*. (
3da0: 73 65 74 65 6e 76 20 22 4d 54 5f 52 55 4e 5f 41 setenv "MT_RUN_A
3db0: 52 45 41 5f 48 4f 4d 45 22 20 2a 74 6f 70 70 61 REA_HOME" *toppa
3dc0: 74 68 2a 29 20 3b 3b 20 74 6f 20 62 65 20 64 65 th*) ;; to be de
3dd0: 70 72 65 63 61 74 65 64 0a 20 20 20 20 20 20 28 precated. (
3de0: 64 65 62 75 67 3a 70 72 69 6e 74 20 30 20 22 45 debug:print 0 "E
3df0: 52 52 4f 52 3a 20 66 61 69 6c 65 64 20 74 6f 20 RROR: failed to
3e00: 66 69 6e 64 20 74 68 65 20 74 6f 70 20 70 61 74 find the top pat
3e10: 68 20 74 6f 20 79 6f 75 72 20 72 75 6e 20 73 65 h to your run se
3e20: 74 75 70 2e 22 29 29 0a 20 20 2a 74 6f 70 70 61 tup.")). *toppa
3e30: 74 68 2a 29 0a 0a 28 64 65 66 69 6e 65 20 28 67 th*)..(define (g
3e40: 65 74 2d 62 65 73 74 2d 64 69 73 6b 20 63 6f 6e et-best-disk con
3e50: 66 64 61 74 29 0a 20 20 28 6c 65 74 2a 20 28 28 fdat). (let* ((
3e60: 64 69 73 6b 73 20 20 20 20 28 68 61 73 68 2d 74 disks (hash-t
3e70: 61 62 6c 65 2d 72 65 66 2f 64 65 66 61 75 6c 74 able-ref/default
3e80: 20 63 6f 6e 66 64 61 74 20 22 64 69 73 6b 73 22 confdat "disks"
3e90: 20 23 66 29 29 0a 09 20 28 62 65 73 74 20 20 20 #f)).. (best
3ea0: 20 20 23 66 29 0a 09 20 28 62 65 73 74 73 69 7a #f).. (bestsiz
3eb0: 65 20 30 29 29 0a 20 20 20 20 28 69 66 20 64 69 e 0)). (if di
3ec0: 73 6b 73 20 0a 09 28 66 6f 72 2d 65 61 63 68 20 sks ..(for-each
3ed0: 0a 09 20 28 6c 61 6d 62 64 61 20 28 64 69 73 6b .. (lambda (disk
3ee0: 2d 6e 75 6d 29 0a 09 20 20 20 28 6c 65 74 2a 20 -num).. (let*
3ef0: 28 28 64 69 72 70 61 74 68 20 20 20 20 28 63 61 ((dirpath (ca
3f00: 64 72 20 28 61 73 73 6f 63 20 64 69 73 6b 2d 6e dr (assoc disk-n
3f10: 75 6d 20 64 69 73 6b 73 29 29 29 0a 09 09 20 20 um disks)))...
3f20: 28 66 72 65 65 73 70 63 20 20 20 20 28 69 66 20 (freespc (if
3f30: 28 61 6e 64 20 28 64 69 72 65 63 74 6f 72 79 3f (and (directory?
3f40: 20 64 69 72 70 61 74 68 29 0a 09 09 09 09 20 20 dirpath).....
3f50: 20 20 20 20 20 28 66 69 6c 65 2d 77 72 69 74 65 (file-write
3f60: 2d 61 63 63 65 73 73 3f 20 64 69 72 70 61 74 68 -access? dirpath
3f70: 29 29 0a 09 09 09 09 20 20 28 67 65 74 2d 64 66 ))..... (get-df
3f80: 20 64 69 72 70 61 74 68 29 0a 09 09 09 09 20 20 dirpath).....
3f90: 28 62 65 67 69 6e 0a 09 09 09 09 20 20 20 20 28 (begin..... (
3fa0: 64 65 62 75 67 3a 70 72 69 6e 74 20 30 20 22 57 debug:print 0 "W
3fb0: 41 52 4e 49 4e 47 3a 20 70 61 74 68 20 22 20 64 ARNING: path " d
3fc0: 69 72 70 61 74 68 20 22 20 69 6e 20 5b 64 69 73 irpath " in [dis
3fd0: 6b 73 5d 20 73 65 63 74 69 6f 6e 20 6e 6f 74 20 ks] section not
3fe0: 76 61 6c 69 64 20 6f 72 20 77 72 69 74 61 62 6c valid or writabl
3ff0: 65 22 29 0a 09 09 09 09 20 20 20 20 30 29 29 29 e")..... 0)))
4000: 29 0a 09 20 20 20 20 20 28 69 66 20 28 3e 20 66 ).. (if (> f
4010: 72 65 65 73 70 63 20 62 65 73 74 73 69 7a 65 29 reespc bestsize)
4020: 0a 09 09 20 28 62 65 67 69 6e 0a 09 09 20 20 20 ... (begin...
4030: 28 73 65 74 21 20 62 65 73 74 20 20 20 20 20 64 (set! best d
4040: 69 72 70 61 74 68 29 0a 09 09 20 20 20 28 73 65 irpath)... (se
4050: 74 21 20 62 65 73 74 73 69 7a 65 20 66 72 65 65 t! bestsize free
4060: 73 70 63 29 29 29 29 29 0a 09 20 28 6d 61 70 20 spc))))).. (map
4070: 63 61 72 20 64 69 73 6b 73 29 29 29 0a 20 20 20 car disks))).
4080: 20 28 69 66 20 62 65 73 74 0a 09 62 65 73 74 0a (if best..best.
4090: 09 28 62 65 67 69 6e 0a 09 20 20 28 64 65 62 75 .(begin.. (debu
40a0: 67 3a 70 72 69 6e 74 20 30 20 22 45 52 52 4f 52 g:print 0 "ERROR
40b0: 3a 20 4e 6f 20 76 61 6c 69 64 20 64 69 73 6b 73 : No valid disks
40c0: 20 66 6f 75 6e 64 20 69 6e 20 6d 65 67 61 74 65 found in megate
40d0: 73 74 2e 63 6f 6e 66 69 67 2e 20 50 6c 65 61 73 st.config. Pleas
40e0: 65 20 61 64 64 20 73 6f 6d 65 20 74 6f 20 79 6f e add some to yo
40f0: 75 72 20 5b 64 69 73 6b 73 5d 20 73 65 63 74 69 ur [disks] secti
4100: 6f 6e 22 29 0a 09 20 20 28 65 78 69 74 20 31 29 on").. (exit 1)
4110: 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 63 ))))..(define (c
4120: 72 65 61 74 65 2d 77 6f 72 6b 2d 61 72 65 61 20 reate-work-area
4130: 64 62 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 70 db run-id test-p
4140: 61 74 68 20 64 69 73 6b 2d 70 61 74 68 20 74 65 ath disk-path te
4150: 73 74 6e 61 6d 65 20 69 74 65 6d 64 61 74 29 0a stname itemdat).
4160: 20 20 28 6c 65 74 2a 20 28 28 72 75 6e 2d 69 6e (let* ((run-in
4170: 66 6f 20 28 64 62 3a 67 65 74 2d 72 75 6e 2d 69 fo (db:get-run-i
4180: 6e 66 6f 20 64 62 20 72 75 6e 2d 69 64 29 29 0a nfo db run-id)).
4190: 09 20 28 69 74 65 6d 2d 70 61 74 68 20 28 6c 65 . (item-path (le
41a0: 74 20 28 28 69 70 20 28 69 74 65 6d 2d 6c 69 73 t ((ip (item-lis
41b0: 74 2d 3e 70 61 74 68 20 69 74 65 6d 64 61 74 29 t->path itemdat)
41c0: 29 29 0a 09 09 20 20 20 20 20 20 28 69 66 20 28 ))... (if (
41d0: 65 71 75 61 6c 3f 20 69 70 20 22 22 29 20 22 22 equal? ip "") ""
41e0: 20 28 63 6f 6e 63 20 22 2f 22 20 69 70 29 29 29 (conc "/" ip)))
41f0: 29 0a 09 20 28 72 75 6e 6e 61 6d 65 20 20 28 64 ).. (runname (d
4200: 62 3a 67 65 74 2d 76 61 6c 75 65 2d 62 79 2d 68 b:get-value-by-h
4210: 65 61 64 65 72 20 28 64 62 3a 67 65 74 2d 72 6f eader (db:get-ro
4220: 77 20 72 75 6e 2d 69 6e 66 6f 29 0a 09 09 09 09 w run-info).....
4230: 09 20 20 20 28 64 62 3a 67 65 74 2d 68 65 61 64 . (db:get-head
4240: 65 72 20 72 75 6e 2d 69 6e 66 6f 29 0a 09 09 09 er run-info)....
4250: 09 09 20 20 20 22 72 75 6e 6e 61 6d 65 22 29 29 .. "runname"))
4260: 0a 09 20 28 6b 65 79 2d 76 61 6c 73 20 28 72 64 .. (key-vals (rd
4270: 62 3a 67 65 74 2d 6b 65 79 2d 76 61 6c 73 20 64 b:get-key-vals d
4280: 62 20 72 75 6e 2d 69 64 29 29 0a 09 20 28 6b 65 b run-id)).. (ke
4290: 79 2d 73 74 72 20 20 28 73 74 72 69 6e 67 2d 69 y-str (string-i
42a0: 6e 74 65 72 73 70 65 72 73 65 20 6b 65 79 2d 76 ntersperse key-v
42b0: 61 6c 73 20 22 2f 22 29 29 0a 09 20 28 64 66 75 als "/")).. (dfu
42c0: 6c 6c 70 20 20 20 28 63 6f 6e 63 20 64 69 73 6b llp (conc disk
42d0: 2d 70 61 74 68 20 22 2f 22 20 6b 65 79 2d 73 74 -path "/" key-st
42e0: 72 20 22 2f 22 20 72 75 6e 6e 61 6d 65 20 22 2f r "/" runname "/
42f0: 22 20 74 65 73 74 6e 61 6d 65 0a 09 09 09 20 69 " testname.... i
4300: 74 65 6d 2d 70 61 74 68 29 29 0a 09 20 28 74 6f tem-path)).. (to
4310: 70 74 65 73 74 2d 70 61 74 68 20 28 63 6f 6e 63 ptest-path (conc
4320: 20 64 69 73 6b 2d 70 61 74 68 20 22 2f 22 20 6b disk-path "/" k
4330: 65 79 2d 73 74 72 20 22 2f 22 20 72 75 6e 6e 61 ey-str "/" runna
4340: 6d 65 20 22 2f 22 20 74 65 73 74 6e 61 6d 65 29 me "/" testname)
4350: 29 0a 09 20 28 6c 69 6e 6b 74 72 65 65 20 20 28 ).. (linktree (
4360: 6c 65 74 20 28 28 72 64 20 28 63 6f 6e 66 69 67 let ((rd (config
4370: 2d 6c 6f 6f 6b 75 70 20 2a 63 6f 6e 66 69 67 64 -lookup *configd
4380: 61 74 2a 20 22 73 65 74 75 70 22 20 22 6c 69 6e at* "setup" "lin
4390: 6b 74 72 65 65 22 29 29 29 0a 09 09 20 20 20 20 ktree")))...
43a0: 20 28 69 66 20 72 64 20 72 64 20 28 63 6f 6e 63 (if rd rd (conc
43b0: 20 2a 74 6f 70 70 61 74 68 2a 20 22 2f 72 75 6e *toppath* "/run
43c0: 73 22 29 29 29 29 0a 09 20 28 6c 6e 6b 70 61 74 s")))).. (lnkpat
43d0: 68 20 20 28 63 6f 6e 63 20 6c 69 6e 6b 74 72 65 h (conc linktre
43e0: 65 20 22 2f 22 20 6b 65 79 2d 73 74 72 20 22 2f e "/" key-str "/
43f0: 22 20 72 75 6e 6e 61 6d 65 20 69 74 65 6d 2d 70 " runname item-p
4400: 61 74 68 29 29 29 0a 20 20 20 20 28 69 66 20 28 ath))). (if (
4410: 6e 6f 74 20 28 66 69 6c 65 2d 65 78 69 73 74 73 not (file-exists
4420: 3f 20 6c 69 6e 6b 74 72 65 65 29 29 0a 09 28 62 ? linktree))..(b
4430: 65 67 69 6e 0a 09 20 20 28 64 65 62 75 67 3a 70 egin.. (debug:p
4440: 72 69 6e 74 20 30 20 22 57 41 52 4e 49 4e 47 3a rint 0 "WARNING:
4450: 20 6c 69 6e 6b 74 72 65 65 20 64 69 64 20 6e 6f linktree did no
4460: 74 20 65 78 69 73 74 21 20 43 72 65 61 74 69 6e t exist! Creatin
4470: 67 20 69 74 20 6e 6f 77 20 61 74 20 22 20 6c 69 g it now at " li
4480: 6e 6b 74 72 65 65 29 0a 09 20 20 28 73 79 73 74 nktree).. (syst
4490: 65 6d 20 28 63 6f 6e 63 20 22 6d 6b 64 69 72 20 em (conc "mkdir
44a0: 2d 70 20 22 20 6c 69 6e 6b 74 72 65 65 29 29 29 -p " linktree)))
44b0: 29 0a 20 20 20 20 3b 3b 20 73 69 6e 63 65 20 74 ). ;; since t
44c0: 68 69 73 20 69 73 20 61 6e 20 69 74 65 72 61 74 his is an iterat
44d0: 65 64 20 74 65 73 74 20 74 68 69 73 20 69 73 20 ed test this is
44e0: 61 73 20 67 6f 6f 64 20 61 20 70 6c 61 63 65 20 as good a place
44f0: 61 73 20 61 6e 79 20 74 6f 0a 20 20 20 20 3b 3b as any to. ;;
4500: 20 75 70 64 61 74 65 20 74 68 65 20 74 6f 70 74 update the topt
4510: 65 73 74 20 72 65 63 6f 72 64 20 77 69 74 68 20 est record with
4520: 69 74 73 20 6c 6f 63 61 74 69 6f 6e 20 72 75 6e its location run
4530: 64 69 72 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 dir. (if (not
4540: 20 28 65 71 75 61 6c 3f 20 69 74 65 6d 2d 70 61 (equal? item-pa
4550: 74 68 20 22 22 29 29 0a 09 28 64 62 3a 74 65 73 th ""))..(db:tes
4560: 74 2d 73 65 74 2d 72 75 6e 64 69 72 21 20 64 62 t-set-rundir! db
4570: 20 72 75 6e 2d 69 64 20 74 65 73 74 6e 61 6d 65 run-id testname
4580: 20 22 22 20 74 6f 70 74 65 73 74 2d 70 61 74 68 "" toptest-path
4590: 29 29 0a 20 20 20 20 28 64 65 62 75 67 3a 70 72 )). (debug:pr
45a0: 69 6e 74 20 32 20 22 53 65 74 74 69 6e 67 20 75 int 2 "Setting u
45b0: 70 20 74 65 73 74 20 72 75 6e 20 61 72 65 61 22 p test run area"
45c0: 29 0a 20 20 20 20 28 64 65 62 75 67 3a 70 72 69 ). (debug:pri
45d0: 6e 74 20 32 20 22 20 2d 20 63 72 65 61 74 69 6e nt 2 " - creatin
45e0: 67 20 72 75 6e 20 61 72 65 61 20 69 6e 20 22 20 g run area in "
45f0: 64 66 75 6c 6c 70 29 0a 20 20 20 20 28 73 79 73 dfullp). (sys
4600: 74 65 6d 20 20 28 63 6f 6e 63 20 22 6d 6b 64 69 tem (conc "mkdi
4610: 72 20 2d 70 20 22 20 64 66 75 6c 6c 70 29 29 0a r -p " dfullp)).
4620: 20 20 20 20 28 64 65 62 75 67 3a 70 72 69 6e 74 (debug:print
4630: 20 32 20 22 20 2d 20 63 72 65 61 74 69 6e 67 20 2 " - creating
4640: 6c 69 6e 6b 20 66 72 6f 6d 20 22 20 64 66 75 6c link from " dful
4650: 6c 70 20 22 2f 22 20 74 65 73 74 6e 61 6d 65 20 lp "/" testname
4660: 22 20 74 6f 20 22 20 6c 6e 6b 70 61 74 68 29 0a " to " lnkpath).
4670: 20 20 20 20 28 73 79 73 74 65 6d 20 20 28 63 6f (system (co
4680: 6e 63 20 22 6d 6b 64 69 72 20 2d 70 20 22 20 6c nc "mkdir -p " l
4690: 6e 6b 70 61 74 68 29 29 0a 0a 20 20 20 20 3b 3b nkpath)).. ;;
46a0: 20 49 20 73 75 73 70 65 63 74 20 74 68 69 73 20 I suspect this
46b0: 73 65 63 74 69 6f 6e 20 77 61 73 20 64 65 6c 65 section was dele
46c0: 74 69 6e 67 20 74 65 73 74 20 64 69 72 65 63 74 ting test direct
46d0: 6f 72 69 65 73 20 75 6e 64 65 72 20 73 6f 6d 65 ories under some
46e0: 20 0a 20 20 20 20 3b 3b 20 77 69 65 72 64 20 73 . ;; wierd s
46f0: 69 74 61 74 69 6f 6e 73 3f 20 54 68 69 73 20 64 itations? This d
4700: 6f 65 73 6e 27 74 20 6d 61 6b 65 20 73 65 6e 73 oesn't make sens
4710: 65 20 2d 20 72 65 65 6e 61 62 6c 69 6e 67 20 74 e - reenabling t
4720: 68 65 20 72 6d 20 2d 66 20 0a 0a 20 20 20 20 28 he rm -f .. (
4730: 6c 65 74 20 28 28 74 65 73 74 6c 69 6e 6b 20 28 let ((testlink (
4740: 63 6f 6e 63 20 6c 6e 6b 70 61 74 68 20 22 2f 22 conc lnkpath "/"
4750: 20 74 65 73 74 6e 61 6d 65 29 29 29 0a 20 20 20 testname))).
4760: 20 20 20 28 69 66 20 28 61 6e 64 20 28 66 69 6c (if (and (fil
4770: 65 2d 65 78 69 73 74 73 3f 20 74 65 73 74 6c 69 e-exists? testli
4780: 6e 6b 29 0a 09 20 20 20 20 20 20 20 28 6f 72 20 nk).. (or
4790: 28 72 65 67 75 6c 61 72 2d 66 69 6c 65 3f 20 74 (regular-file? t
47a0: 65 73 74 6c 69 6e 6b 29 0a 09 09 20 20 20 28 73 estlink)... (s
47b0: 79 6d 62 6f 6c 69 63 2d 6c 69 6e 6b 3f 20 74 65 ymbolic-link? te
47c0: 73 74 6c 69 6e 6b 29 29 29 0a 09 20 20 28 73 79 stlink))).. (sy
47d0: 73 74 65 6d 20 28 63 6f 6e 63 20 22 72 6d 20 2d stem (conc "rm -
47e0: 66 20 22 20 74 65 73 74 6c 69 6e 6b 29 29 29 0a f " testlink))).
47f0: 20 20 20 20 20 20 28 73 79 73 74 65 6d 20 20 28 (system (
4800: 63 6f 6e 63 20 22 6c 6e 20 2d 73 66 20 22 20 64 conc "ln -sf " d
4810: 66 75 6c 6c 70 20 22 20 22 20 74 65 73 74 6c 69 fullp " " testli
4820: 6e 6b 29 29 29 0a 20 20 20 20 28 69 66 20 28 64 nk))). (if (d
4830: 69 72 65 63 74 6f 72 79 3f 20 64 66 75 6c 6c 70 irectory? dfullp
4840: 29 0a 09 28 62 65 67 69 6e 0a 09 20 20 28 6c 65 )..(begin.. (le
4850: 74 2a 20 28 28 63 6d 64 20 20 20 20 28 63 6f 6e t* ((cmd (con
4860: 63 20 22 72 73 79 6e 63 20 2d 61 76 22 20 28 69 c "rsync -av" (i
4870: 66 20 28 3e 20 2a 76 65 72 62 6f 73 69 74 79 2a f (> *verbosity*
4880: 20 31 29 20 22 22 20 22 71 22 29 20 22 20 22 20 1) "" "q") " "
4890: 74 65 73 74 2d 70 61 74 68 20 22 2f 20 22 20 64 test-path "/ " d
48a0: 66 75 6c 6c 70 20 22 2f 22 29 29 0a 09 09 20 28 fullp "/"))... (
48b0: 73 74 61 74 75 73 20 28 73 79 73 74 65 6d 20 63 status (system c
48c0: 6d 64 29 29 29 0a 09 20 20 20 20 28 69 66 20 28 md))).. (if (
48d0: 6e 6f 74 20 28 65 71 3f 20 73 74 61 74 75 73 20 not (eq? status
48e0: 30 29 29 0a 09 09 28 64 65 62 75 67 3a 70 72 69 0))...(debug:pri
48f0: 6e 74 20 32 20 22 45 52 52 4f 52 3a 20 70 72 6f nt 2 "ERROR: pro
4900: 62 6c 65 6d 20 77 69 74 68 20 72 75 6e 6e 69 6e blem with runnin
4910: 67 20 5c 22 22 20 63 6d 64 20 22 5c 22 22 29 29 g \"" cmd "\""))
4920: 29 0a 09 20 20 28 6c 69 73 74 20 64 66 75 6c 6c ).. (list dfull
4930: 70 20 74 6f 70 74 65 73 74 2d 70 61 74 68 29 29 p toptest-path))
4940: 0a 09 28 6c 69 73 74 20 23 66 20 23 66 29 29 29 ..(list #f #f)))
4950: 29 0a 0a 3b 3b 20 31 2e 20 6c 6f 6f 6b 20 74 68 )..;; 1. look th
4960: 6f 75 67 68 20 64 69 73 6b 73 20 6c 69 73 74 20 ough disks list
4970: 66 6f 72 20 64 69 73 6b 20 77 69 74 68 20 6d 6f for disk with mo
4980: 73 74 20 73 70 61 63 65 0a 3b 3b 20 32 2e 20 63 st space.;; 2. c
4990: 72 65 61 74 65 20 72 75 6e 20 64 69 72 20 6f 6e reate run dir on
49a0: 20 64 69 73 6b 2c 20 70 61 74 68 20 6e 61 6d 65 disk, path name
49b0: 20 69 73 20 6d 65 61 6e 69 6e 67 66 75 6c 0a 3b is meaningful.;
49c0: 3b 20 33 2e 20 63 72 65 61 74 65 20 6c 69 6e 6b ; 3. create link
49d0: 20 66 72 6f 6d 20 72 75 6e 20 64 69 72 20 74 6f from run dir to
49e0: 20 6d 65 67 61 74 65 73 74 20 72 75 6e 73 20 61 megatest runs a
49f0: 72 65 61 20 0a 3b 3b 20 34 2e 20 72 65 6d 6f 74 rea .;; 4. remot
4a00: 65 6c 79 20 72 75 6e 20 74 68 65 20 74 65 73 74 ely run the test
4a10: 20 6f 6e 20 61 6c 6c 6f 63 61 74 65 64 20 68 6f on allocated ho
4a20: 73 74 0a 3b 3b 20 20 20 20 2d 20 63 6f 75 6c 64 st.;; - could
4a30: 20 62 65 20 73 73 68 20 74 6f 20 68 6f 73 74 20 be ssh to host
4a40: 66 72 6f 6d 20 68 6f 73 74 73 20 74 61 62 6c 65 from hosts table
4a50: 20 28 75 70 64 61 74 65 20 72 65 67 75 6c 61 72 (update regular
4a60: 6c 79 20 77 69 74 68 20 6c 6f 61 64 29 0a 3b 3b ly with load).;;
4a70: 20 20 20 20 2d 20 63 6f 75 6c 64 20 62 65 20 6e - could be n
4a80: 65 74 62 61 74 63 68 0a 3b 3b 20 20 20 20 20 20 etbatch.;;
4a90: 28 6c 61 75 6e 63 68 2d 74 65 73 74 20 64 62 20 (launch-test db
4aa0: 28 63 61 64 72 20 73 74 61 74 75 73 29 20 74 65 (cadr status) te
4ab0: 73 74 2d 63 6f 6e 66 29 29 0a 28 64 65 66 69 6e st-conf)).(defin
4ac0: 65 20 28 6c 61 75 6e 63 68 2d 74 65 73 74 20 64 e (launch-test d
4ad0: 62 20 72 75 6e 2d 69 64 20 72 75 6e 6e 61 6d 65 b run-id runname
4ae0: 20 74 65 73 74 2d 63 6f 6e 66 20 6b 65 79 76 61 test-conf keyva
4af0: 6c 6c 73 74 20 74 65 73 74 2d 6e 61 6d 65 20 74 llst test-name t
4b00: 65 73 74 2d 70 61 74 68 20 69 74 65 6d 64 61 74 est-path itemdat
4b10: 20 70 61 72 61 6d 73 29 0a 20 20 28 63 68 61 6e params). (chan
4b20: 67 65 2d 64 69 72 65 63 74 6f 72 79 20 2a 74 6f ge-directory *to
4b30: 70 70 61 74 68 2a 29 0a 20 20 28 6c 65 74 20 28 ppath*). (let (
4b40: 28 75 73 65 73 68 65 6c 6c 20 20 20 28 63 6f 6e (useshell (con
4b50: 66 69 67 2d 6c 6f 6f 6b 75 70 20 2a 63 6f 6e 66 fig-lookup *conf
4b60: 69 67 64 61 74 2a 20 22 6a 6f 62 74 6f 6f 6c 73 igdat* "jobtools
4b70: 22 20 20 20 20 20 22 75 73 65 73 68 65 6c 6c 22 " "useshell"
4b80: 29 29 0a 09 28 6c 61 75 6e 63 68 65 72 20 20 20 ))..(launcher
4b90: 28 63 6f 6e 66 69 67 2d 6c 6f 6f 6b 75 70 20 2a (config-lookup *
4ba0: 63 6f 6e 66 69 67 64 61 74 2a 20 22 6a 6f 62 74 configdat* "jobt
4bb0: 6f 6f 6c 73 22 20 20 20 20 20 22 6c 61 75 6e 63 ools" "launc
4bc0: 68 65 72 22 29 29 0a 09 28 72 75 6e 73 63 72 69 her"))..(runscri
4bd0: 70 74 20 20 28 63 6f 6e 66 69 67 2d 6c 6f 6f 6b pt (config-look
4be0: 75 70 20 74 65 73 74 2d 63 6f 6e 66 20 20 20 22 up test-conf "
4bf0: 73 65 74 75 70 22 20 20 20 20 20 20 20 20 22 72 setup" "r
4c00: 75 6e 73 63 72 69 70 74 22 29 29 0a 09 28 65 7a unscript"))..(ez
4c10: 73 74 65 70 73 20 20 20 20 28 3e 20 28 6c 65 6e steps (> (len
4c20: 67 74 68 20 28 68 61 73 68 2d 74 61 62 6c 65 2d gth (hash-table-
4c30: 72 65 66 2f 64 65 66 61 75 6c 74 20 74 65 73 74 ref/default test
4c40: 2d 63 6f 6e 66 20 22 65 7a 73 74 65 70 73 22 20 -conf "ezsteps"
4c50: 27 28 29 29 29 20 30 29 29 20 3b 3b 20 64 6f 6e '())) 0)) ;; don
4c60: 27 74 20 73 65 6e 64 20 61 6c 6c 20 74 68 65 20 't send all the
4c70: 73 74 65 70 73 2c 20 63 6f 75 6c 64 20 62 65 20 steps, could be
4c80: 62 69 67 0a 09 28 64 69 73 6b 73 70 61 63 65 20 big..(diskspace
4c90: 20 28 63 6f 6e 66 69 67 2d 6c 6f 6f 6b 75 70 20 (config-lookup
4ca0: 74 65 73 74 2d 63 6f 6e 66 20 20 20 22 72 65 71 test-conf "req
4cb0: 75 69 72 65 6d 65 6e 74 73 22 20 22 64 69 73 6b uirements" "disk
4cc0: 73 70 61 63 65 22 29 29 0a 09 28 6d 65 6d 6f 72 space"))..(memor
4cd0: 79 20 20 20 20 20 28 63 6f 6e 66 69 67 2d 6c 6f y (config-lo
4ce0: 6f 6b 75 70 20 74 65 73 74 2d 63 6f 6e 66 20 20 okup test-conf
4cf0: 20 22 72 65 71 75 69 72 65 6d 65 6e 74 73 22 20 "requirements"
4d00: 22 6d 65 6d 6f 72 79 22 29 29 0a 09 28 68 6f 73 "memory"))..(hos
4d10: 74 73 20 20 20 20 20 20 28 63 6f 6e 66 69 67 2d ts (config-
4d20: 6c 6f 6f 6b 75 70 20 2a 63 6f 6e 66 69 67 64 61 lookup *configda
4d30: 74 2a 20 22 6a 6f 62 74 6f 6f 6c 73 22 20 20 20 t* "jobtools"
4d40: 20 20 22 77 6f 72 6b 68 6f 73 74 73 22 29 29 0a "workhosts")).
4d50: 09 28 72 65 6d 6f 74 65 2d 6d 65 67 61 74 65 73 .(remote-megates
4d60: 74 20 28 63 6f 6e 66 69 67 2d 6c 6f 6f 6b 75 70 t (config-lookup
4d70: 20 2a 63 6f 6e 66 69 67 64 61 74 2a 20 22 73 65 *configdat* "se
4d80: 74 75 70 22 20 22 65 78 65 63 75 74 61 62 6c 65 tup" "executable
4d90: 22 29 29 0a 09 3b 3b 20 46 49 58 4d 45 20 53 4f "))..;; FIXME SO
4da0: 4d 45 44 41 59 3a 20 6e 6f 74 20 67 6f 6f 64 20 MEDAY: not good
4db0: 68 6f 77 20 74 68 69 73 20 69 73 20 73 6f 20 6f how this is so o
4dc0: 62 74 75 73 65 2c 20 74 68 69 73 20 68 61 63 6b btuse, this hack
4dd0: 20 69 73 20 74 6f 20 0a 09 3b 3b 20 20 20 20 20 is to ..;;
4de0: 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 6f 77 allow
4df0: 20 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20 64 61 running from da
4e00: 73 68 62 6f 61 72 64 20 0a 09 28 6c 6f 63 61 6c shboard ..(local
4e10: 2d 6d 65 67 61 74 65 73 74 20 20 28 6c 65 74 2a -megatest (let*
4e20: 20 28 28 6c 6d 20 20 28 63 61 72 20 28 61 72 67 ((lm (car (arg
4e30: 76 29 29 29 0a 09 09 09 09 28 64 69 72 20 28 70 v))).....(dir (p
4e40: 61 74 68 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 athname-director
4e50: 79 20 6c 6d 29 29 0a 09 09 09 09 28 65 78 65 20 y lm)).....(exe
4e60: 28 70 61 74 68 6e 61 6d 65 2d 73 74 72 69 70 2d (pathname-strip-
4e70: 64 69 72 65 63 74 6f 72 79 20 6c 6d 29 29 29 0a directory lm))).
4e80: 09 09 09 20 20 20 28 63 6f 6e 63 20 28 69 66 20 ... (conc (if
4e90: 64 69 72 20 28 63 6f 6e 63 20 64 69 72 20 22 2f dir (conc dir "/
4ea0: 22 29 20 22 22 29 0a 09 09 09 09 20 28 63 61 73 ") "")..... (cas
4eb0: 65 20 28 73 74 72 69 6e 67 2d 3e 73 79 6d 62 6f e (string->symbo
4ec0: 6c 20 65 78 65 29 0a 09 09 09 09 20 20 20 28 28 l exe)..... ((
4ed0: 64 62 6f 61 72 64 29 20 22 6d 65 67 61 74 65 73 dboard) "megates
4ee0: 74 22 29 0a 09 09 09 09 20 20 20 28 28 64 61 73 t")..... ((das
4ef0: 68 62 6f 61 72 64 29 20 22 6d 65 67 61 74 65 73 hboard) "megates
4f00: 74 22 29 0a 09 09 09 09 20 20 20 28 65 6c 73 65 t")..... (else
4f10: 20 65 78 65 29 29 29 29 29 0a 09 28 74 65 73 74 exe)))))..(test
4f20: 2d 73 69 67 20 20 20 28 63 6f 6e 63 20 22 3d 22 -sig (conc "="
4f30: 20 74 65 73 74 2d 6e 61 6d 65 20 22 3a 22 20 28 test-name ":" (
4f40: 69 74 65 6d 2d 6c 69 73 74 2d 3e 70 61 74 68 20 item-list->path
4f50: 69 74 65 6d 64 61 74 29 20 22 3d 22 29 29 20 3b itemdat) "=")) ;
4f60: 3b 20 74 65 73 74 2d 70 61 74 68 20 69 73 20 74 ; test-path is t
4f70: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 69 6e 63 he full path inc
4f80: 6c 75 64 69 6e 67 20 74 68 65 20 69 74 65 6d 2d luding the item-
4f90: 70 61 74 68 0a 09 28 77 6f 72 6b 2d 61 72 65 61 path..(work-area
4fa0: 20 20 23 66 29 0a 09 28 74 6f 70 74 65 73 74 2d #f)..(toptest-
4fb0: 77 6f 72 6b 2d 61 72 65 61 20 23 66 29 20 3b 3b work-area #f) ;;
4fc0: 20 66 6f 72 20 69 74 65 72 61 74 65 64 20 74 65 for iterated te
4fd0: 73 74 73 20 74 68 65 20 74 6f 70 20 74 65 73 74 sts the top test
4fe0: 20 63 6f 6e 74 61 69 6e 73 20 64 61 74 61 20 72 contains data r
4ff0: 65 6c 65 76 61 6e 74 20 66 6f 72 20 61 6c 6c 0a elevant for all.
5000: 09 28 64 69 73 6b 70 61 74 68 20 20 20 23 66 29 .(diskpath #f)
5010: 0a 09 28 63 6d 64 70 61 72 6d 73 20 20 20 23 66 ..(cmdparms #f
5020: 29 0a 09 28 66 75 6c 6c 63 6d 64 20 20 20 20 23 )..(fullcmd #
5030: 66 29 20 3b 3b 20 28 64 65 66 69 6e 65 20 61 20 f) ;; (define a
5040: 28 77 69 74 68 2d 6f 75 74 70 75 74 2d 74 6f 2d (with-output-to-
5050: 73 74 72 69 6e 67 20 28 6c 61 6d 62 64 61 20 28 string (lambda (
5060: 29 28 77 72 69 74 65 20 78 29 29 29 29 0a 09 28 )(write x))))..(
5070: 6d 74 2d 62 69 6e 64 69 72 2d 70 61 74 68 20 23 mt-bindir-path #
5080: 66 29 29 0a 20 20 20 20 28 69 66 20 68 6f 73 74 f)). (if host
5090: 73 20 28 73 65 74 21 20 68 6f 73 74 73 20 28 73 s (set! hosts (s
50a0: 74 72 69 6e 67 2d 73 70 6c 69 74 20 68 6f 73 74 tring-split host
50b0: 73 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f s))). (if (no
50c0: 74 20 72 65 6d 6f 74 65 2d 6d 65 67 61 74 65 73 t remote-megates
50d0: 74 29 28 73 65 74 21 20 72 65 6d 6f 74 65 2d 6d t)(set! remote-m
50e0: 65 67 61 74 65 73 74 20 6c 6f 63 61 6c 2d 6d 65 egatest local-me
50f0: 67 61 74 65 73 74 29 29 20 3b 3b 20 22 6d 65 67 gatest)) ;; "meg
5100: 61 74 65 73 74 22 29 29 0a 20 20 20 20 28 73 65 atest")). (se
5110: 74 21 20 6d 74 2d 62 69 6e 64 69 72 2d 70 61 74 t! mt-bindir-pat
5120: 68 20 28 70 61 74 68 6e 61 6d 65 2d 64 69 72 65 h (pathname-dire
5130: 63 74 6f 72 79 20 72 65 6d 6f 74 65 2d 6d 65 67 ctory remote-meg
5140: 61 74 65 73 74 29 29 0a 20 20 20 20 28 69 66 20 atest)). (if
5150: 6c 61 75 6e 63 68 65 72 20 28 73 65 74 21 20 6c launcher (set! l
5160: 61 75 6e 63 68 65 72 20 28 73 74 72 69 6e 67 2d auncher (string-
5170: 73 70 6c 69 74 20 6c 61 75 6e 63 68 65 72 29 29 split launcher))
5180: 29 0a 20 20 20 20 3b 3b 20 73 65 74 20 75 70 20 ). ;; set up
5190: 74 68 65 20 72 75 6e 20 77 6f 72 6b 20 61 72 65 the run work are
51a0: 61 20 66 6f 72 20 74 68 69 73 20 74 65 73 74 0a a for this test.
51b0: 20 20 20 20 28 73 65 74 21 20 64 69 73 6b 70 61 (set! diskpa
51c0: 74 68 20 28 67 65 74 2d 62 65 73 74 2d 64 69 73 th (get-best-dis
51d0: 6b 20 2a 63 6f 6e 66 69 67 64 61 74 2a 29 29 0a k *configdat*)).
51e0: 20 20 20 20 28 69 66 20 64 69 73 6b 70 61 74 68 (if diskpath
51f0: 0a 09 28 6c 65 74 20 28 28 64 61 74 20 20 28 63 ..(let ((dat (c
5200: 72 65 61 74 65 2d 77 6f 72 6b 2d 61 72 65 61 20 reate-work-area
5210: 64 62 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 70 db run-id test-p
5220: 61 74 68 20 64 69 73 6b 70 61 74 68 20 74 65 73 ath diskpath tes
5230: 74 2d 6e 61 6d 65 20 69 74 65 6d 64 61 74 29 29 t-name itemdat))
5240: 29 0a 09 20 20 28 73 65 74 21 20 77 6f 72 6b 2d ).. (set! work-
5250: 61 72 65 61 20 28 63 61 72 20 64 61 74 29 29 0a area (car dat)).
5260: 09 20 20 28 73 65 74 21 20 74 6f 70 74 65 73 74 . (set! toptest
5270: 2d 77 6f 72 6b 2d 61 72 65 61 20 28 63 61 64 72 -work-area (cadr
5280: 20 64 61 74 29 29 29 0a 09 28 62 65 67 69 6e 0a dat)))..(begin.
5290: 09 20 20 28 73 65 74 21 20 77 6f 72 6b 2d 61 72 . (set! work-ar
52a0: 65 61 20 28 63 6f 6e 63 20 74 65 73 74 2d 70 61 ea (conc test-pa
52b0: 74 68 20 22 2f 74 6d 70 5f 72 75 6e 22 29 29 0a th "/tmp_run")).
52c0: 09 20 20 28 63 72 65 61 74 65 2d 64 69 72 65 63 . (create-direc
52d0: 74 6f 72 79 20 77 6f 72 6b 2d 61 72 65 61 20 23 tory work-area #
52e0: 74 29 0a 09 20 20 28 64 65 62 75 67 3a 70 72 69 t).. (debug:pri
52f0: 6e 74 20 30 20 22 57 41 52 4e 49 4e 47 3a 20 4e nt 0 "WARNING: N
5300: 6f 20 64 69 73 6b 20 77 6f 72 6b 20 61 72 65 61 o disk work area
5310: 20 73 70 65 63 69 66 69 65 64 20 2d 20 72 75 6e specified - run
5320: 6e 69 6e 67 20 69 6e 20 74 68 65 20 74 65 73 74 ning in the test
5330: 20 64 69 72 65 63 74 6f 72 79 20 75 6e 64 65 72 directory under
5340: 20 74 6d 70 5f 72 75 6e 22 29 29 29 0a 20 20 20 tmp_run"))).
5350: 20 28 73 65 74 21 20 63 6d 64 70 61 72 6d 73 20 (set! cmdparms
5360: 28 62 61 73 65 36 34 3a 62 61 73 65 36 34 2d 65 (base64:base64-e
5370: 6e 63 6f 64 65 20 28 77 69 74 68 2d 6f 75 74 70 ncode (with-outp
5380: 75 74 2d 74 6f 2d 73 74 72 69 6e 67 0a 09 09 09 ut-to-string....
5390: 09 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 . (lambda ()
53a0: 3b 3b 20 28 6c 69 73 74 20 27 68 6f 73 74 73 20 ;; (list 'hosts
53b0: 20 20 20 20 68 6f 73 74 73 29 0a 09 09 09 09 20 hosts).....
53c0: 20 20 20 20 20 28 77 72 69 74 65 20 28 6c 69 73 (write (lis
53d0: 74 20 28 6c 69 73 74 20 27 74 65 73 74 70 61 74 t (list 'testpat
53e0: 68 20 20 74 65 73 74 2d 70 61 74 68 29 0a 09 09 h test-path)...
53f0: 09 09 09 09 20 20 20 28 6c 69 73 74 20 27 77 6f .... (list 'wo
5400: 72 6b 2d 61 72 65 61 20 77 6f 72 6b 2d 61 72 65 rk-area work-are
5410: 61 29 0a 09 09 09 09 09 09 20 20 20 28 6c 69 73 a)....... (lis
5420: 74 20 27 74 65 73 74 2d 6e 61 6d 65 20 74 65 73 t 'test-name tes
5430: 74 2d 6e 61 6d 65 29 20 0a 09 09 09 09 09 09 20 t-name) .......
5440: 20 20 28 6c 69 73 74 20 27 72 75 6e 73 63 72 69 (list 'runscri
5450: 70 74 20 72 75 6e 73 63 72 69 70 74 29 20 0a 09 pt runscript) ..
5460: 09 09 09 09 09 20 20 20 28 6c 69 73 74 20 27 72 ..... (list 'r
5470: 75 6e 2d 69 64 20 20 20 20 72 75 6e 2d 69 64 20 un-id run-id
5480: 20 20 29 0a 09 09 09 09 09 09 20 20 20 28 6c 69 )....... (li
5490: 73 74 20 27 69 74 65 6d 64 61 74 20 20 20 69 74 st 'itemdat it
54a0: 65 6d 64 61 74 20 20 29 0a 09 09 09 09 09 09 20 emdat ).......
54b0: 20 20 28 6c 69 73 74 20 27 6d 65 67 61 74 65 73 (list 'megates
54c0: 74 20 20 72 65 6d 6f 74 65 2d 6d 65 67 61 74 65 t remote-megate
54d0: 73 74 29 0a 09 09 09 09 09 09 20 20 20 28 6c 69 st)....... (li
54e0: 73 74 20 27 65 7a 73 74 65 70 73 20 20 20 65 7a st 'ezsteps ez
54f0: 73 74 65 70 73 29 20 0a 20 09 09 09 09 09 09 20 steps) . ......
5500: 20 20 28 6c 69 73 74 20 27 65 6e 76 2d 6f 76 72 (list 'env-ovr
5510: 64 20 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 72 d (hash-table-r
5520: 65 66 2f 64 65 66 61 75 6c 74 20 2a 63 6f 6e 66 ef/default *conf
5530: 69 67 64 61 74 2a 20 22 65 6e 76 2d 6f 76 65 72 igdat* "env-over
5540: 72 69 64 65 22 20 27 28 29 29 29 20 0a 09 09 09 ride" '())) ....
5550: 09 09 09 20 20 20 28 6c 69 73 74 20 27 73 65 74 ... (list 'set
5560: 2d 76 61 72 73 20 20 28 69 66 20 70 61 72 61 6d -vars (if param
5570: 73 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 72 65 s (hash-table-re
5580: 66 2f 64 65 66 61 75 6c 74 20 70 61 72 61 6d 73 f/default params
5590: 20 22 2d 73 65 74 76 61 72 73 22 20 23 66 29 29 "-setvars" #f))
55a0: 29 0a 09 09 09 09 09 09 20 20 20 28 6c 69 73 74 )....... (list
55b0: 20 27 72 75 6e 6e 61 6d 65 20 20 20 72 75 6e 6e 'runname runn
55c0: 61 6d 65 29 0a 09 09 09 09 09 09 20 20 20 28 6c ame)....... (l
55d0: 69 73 74 20 27 6d 74 2d 62 69 6e 64 69 72 2d 70 ist 'mt-bindir-p
55e0: 61 74 68 20 6d 74 2d 62 69 6e 64 69 72 2d 70 61 ath mt-bindir-pa
55f0: 74 68 29 29 29 29 29 29 29 20 3b 3b 20 28 73 74 th))))))) ;; (st
5600: 72 69 6e 67 2d 69 6e 74 65 72 73 70 65 72 73 65 ring-intersperse
5610: 20 6b 65 79 76 61 6c 6c 73 74 20 22 20 22 29 29 keyvallst " "))
5620: 29 29 0a 20 20 20 20 3b 3b 20 63 6c 65 61 6e 20 )). ;; clean
5630: 6f 75 74 20 73 74 65 70 20 72 65 63 6f 72 64 73 out step records
5640: 20 66 72 6f 6d 20 70 72 65 76 69 6f 75 73 20 72 from previous r
5650: 75 6e 20 69 66 20 74 68 65 79 20 65 78 69 73 74 un if they exist
5660: 0a 20 20 20 20 28 64 62 3a 64 65 6c 65 74 65 2d . (db:delete-
5670: 74 65 73 74 2d 73 74 65 70 2d 72 65 63 6f 72 64 test-step-record
5680: 73 20 64 62 20 72 75 6e 2d 69 64 20 74 65 73 74 s db run-id test
5690: 2d 6e 61 6d 65 20 69 74 65 6d 64 61 74 29 0a 20 -name itemdat).
56a0: 20 20 20 28 63 68 61 6e 67 65 2d 64 69 72 65 63 (change-direc
56b0: 74 6f 72 79 20 77 6f 72 6b 2d 61 72 65 61 29 20 tory work-area)
56c0: 3b 3b 20 73 6f 20 74 68 61 74 20 6c 6f 67 20 66 ;; so that log f
56d0: 69 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6c 61 iles from the la
56e0: 75 6e 63 68 20 70 72 6f 63 65 73 73 20 64 6f 6e unch process don
56f0: 27 74 20 63 6c 75 74 74 65 72 20 74 68 65 20 74 't clutter the t
5700: 65 73 74 20 64 69 72 0a 20 20 20 20 28 63 6f 6e est dir. (con
5710: 64 0a 20 20 20 20 20 28 28 61 6e 64 20 6c 61 75 d. ((and lau
5720: 6e 63 68 65 72 20 68 6f 73 74 73 29 20 3b 3b 20 ncher hosts) ;;
5730: 6d 75 73 74 20 62 65 20 75 73 69 6e 67 20 73 73 must be using ss
5740: 68 20 68 6f 73 74 6e 61 6d 65 0a 20 20 20 20 20 h hostname.
5750: 20 28 73 65 74 21 20 66 75 6c 6c 63 6d 64 20 28 (set! fullcmd (
5760: 61 70 70 65 6e 64 20 6c 61 75 6e 63 68 65 72 20 append launcher
5770: 28 63 61 72 20 68 6f 73 74 73 29 28 6c 69 73 74 (car hosts)(list
5780: 20 72 65 6d 6f 74 65 2d 6d 65 67 61 74 65 73 74 remote-megatest
5790: 20 74 65 73 74 2d 73 69 67 20 22 2d 65 78 65 63 test-sig "-exec
57a0: 75 74 65 22 20 63 6d 64 70 61 72 6d 73 29 29 29 ute" cmdparms)))
57b0: 29 0a 20 20 20 20 20 28 6c 61 75 6e 63 68 65 72 ). (launcher
57c0: 0a 20 20 20 20 20 20 28 73 65 74 21 20 66 75 6c . (set! ful
57d0: 6c 63 6d 64 20 28 61 70 70 65 6e 64 20 6c 61 75 lcmd (append lau
57e0: 6e 63 68 65 72 20 28 6c 69 73 74 20 72 65 6d 6f ncher (list remo
57f0: 74 65 2d 6d 65 67 61 74 65 73 74 20 74 65 73 74 te-megatest test
5800: 2d 73 69 67 20 22 2d 65 78 65 63 75 74 65 22 20 -sig "-execute"
5810: 63 6d 64 70 61 72 6d 73 29 29 29 29 0a 20 20 20 cmdparms)))).
5820: 20 20 28 65 6c 73 65 0a 20 20 20 20 20 20 28 69 (else. (i
5830: 66 20 28 6e 6f 74 20 75 73 65 73 68 65 6c 6c 29 f (not useshell)
5840: 28 64 65 62 75 67 3a 70 72 69 6e 74 20 30 20 22 (debug:print 0 "
5850: 57 41 52 4e 49 4e 47 3a 20 69 6e 74 65 72 6e 61 WARNING: interna
5860: 6c 20 6c 61 75 6e 63 68 69 6e 67 20 77 69 6c 6c l launching will
5870: 20 6e 6f 74 20 77 6f 72 6b 20 77 65 6c 6c 20 77 not work well w
5880: 69 74 68 6f 75 74 20 5c 22 75 73 65 73 68 65 6c ithout \"useshel
5890: 6c 20 79 65 73 5c 22 20 69 6e 20 79 6f 75 72 20 l yes\" in your
58a0: 5b 6a 6f 62 74 6f 6f 6c 73 5d 20 73 65 63 74 69 [jobtools] secti
58b0: 6f 6e 22 29 29 0a 20 20 20 20 20 20 28 73 65 74 on")). (set
58c0: 21 20 66 75 6c 6c 63 6d 64 20 28 6c 69 73 74 20 ! fullcmd (list
58d0: 72 65 6d 6f 74 65 2d 6d 65 67 61 74 65 73 74 20 remote-megatest
58e0: 74 65 73 74 2d 73 69 67 20 22 2d 65 78 65 63 75 test-sig "-execu
58f0: 74 65 22 20 63 6d 64 70 61 72 6d 73 20 28 69 66 te" cmdparms (if
5900: 20 75 73 65 73 68 65 6c 6c 20 22 26 22 20 22 22 useshell "&" ""
5910: 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 ))))). (if (a
5920: 72 67 73 3a 67 65 74 2d 61 72 67 20 22 2d 78 74 rgs:get-arg "-xt
5930: 65 72 6d 22 29 28 73 65 74 21 20 66 75 6c 6c 63 erm")(set! fullc
5940: 6d 64 20 28 61 70 70 65 6e 64 20 66 75 6c 6c 63 md (append fullc
5950: 6d 64 20 28 6c 69 73 74 20 22 2d 78 74 65 72 6d md (list "-xterm
5960: 22 29 29 29 29 0a 20 20 20 20 28 64 65 62 75 67 ")))). (debug
5970: 3a 70 72 69 6e 74 20 31 20 22 4c 61 75 6e 63 68 :print 1 "Launch
5980: 69 6e 67 20 6d 65 67 61 74 65 73 74 20 66 6f 72 ing megatest for
5990: 20 74 65 73 74 20 22 20 74 65 73 74 2d 6e 61 6d test " test-nam
59a0: 65 20 22 20 69 6e 20 22 20 77 6f 72 6b 2d 61 72 e " in " work-ar
59b0: 65 61 22 20 2e 2e 2e 22 29 0a 20 20 20 20 28 74 ea" ..."). (t
59c0: 65 73 74 2d 73 65 74 2d 73 74 61 74 75 73 21 20 est-set-status!
59d0: 64 62 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 6e db run-id test-n
59e0: 61 6d 65 20 22 4c 41 55 4e 43 48 45 44 22 20 22 ame "LAUNCHED" "
59f0: 6e 2f 61 22 20 69 74 65 6d 64 61 74 20 23 66 20 n/a" itemdat #f
5a00: 23 66 29 20 3b 3b 20 28 69 66 20 6c 61 75 6e 63 #f) ;; (if launc
5a10: 68 2d 72 65 73 75 6c 74 73 20 6c 61 75 6e 63 68 h-results launch
5a20: 2d 72 65 73 75 6c 74 73 20 22 46 41 49 4c 45 44 -results "FAILED
5a30: 22 29 29 0a 20 20 20 20 3b 3b 20 73 65 74 20 0a ")). ;; set .
5a40: 20 20 20 20 3b 3b 20 73 65 74 20 70 72 65 2d 6c ;; set pre-l
5a50: 61 75 6e 63 68 2d 65 6e 76 2d 76 61 72 73 20 62 aunch-env-vars b
5a60: 65 66 6f 72 65 20 6c 61 75 6e 63 68 69 6e 67 2c efore launching,
5a70: 20 6b 65 65 70 20 74 68 65 20 76 61 72 73 20 69 keep the vars i
5a80: 6e 20 70 72 65 76 76 61 6c 73 20 61 6e 64 20 70 n prevvals and p
5a90: 75 74 20 74 68 65 20 65 6e 76 69 6f 6e 6d 65 6e ut the envionmen
5aa0: 74 20 62 61 63 6b 20 77 68 65 6e 20 64 6f 6e 65 t back when done
5ab0: 0a 20 20 20 20 28 64 65 62 75 67 3a 70 72 69 6e . (debug:prin
5ac0: 74 20 34 20 22 66 75 6c 6c 63 6d 64 3a 20 22 20 t 4 "fullcmd: "
5ad0: 66 75 6c 6c 63 6d 64 29 0a 20 20 20 20 28 6c 65 fullcmd). (le
5ae0: 74 2a 20 28 28 63 6f 6d 6d 6f 6e 70 72 65 76 76 t* ((commonprevv
5af0: 61 6c 73 20 28 61 6c 69 73 74 2d 3e 65 6e 76 2d als (alist->env-
5b00: 76 61 72 73 0a 09 09 09 20 20 20 20 28 68 61 73 vars.... (has
5b10: 68 2d 74 61 62 6c 65 2d 72 65 66 2f 64 65 66 61 h-table-ref/defa
5b20: 75 6c 74 20 2a 63 6f 6e 66 69 67 64 61 74 2a 20 ult *configdat*
5b30: 22 65 6e 76 2d 6f 76 65 72 72 69 64 65 22 20 27 "env-override" '
5b40: 28 29 29 29 29 0a 09 20 20 20 28 74 65 73 74 70 ()))).. (testp
5b50: 72 65 76 76 61 6c 73 20 20 20 28 61 6c 69 73 74 revvals (alist
5b60: 2d 3e 65 6e 76 2d 76 61 72 73 0a 09 09 09 20 20 ->env-vars....
5b70: 20 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 72 65 (hash-table-re
5b80: 66 2f 64 65 66 61 75 6c 74 20 74 65 73 74 2d 63 f/default test-c
5b90: 6f 6e 66 20 22 70 72 65 2d 6c 61 75 6e 63 68 2d onf "pre-launch-
5ba0: 65 6e 76 2d 6f 76 65 72 72 69 64 65 73 22 20 27 env-overrides" '
5bb0: 28 29 29 29 29 0a 09 20 20 20 28 6d 69 73 63 70 ()))).. (miscp
5bc0: 72 65 76 76 61 6c 73 20 20 20 28 61 6c 69 73 74 revvals (alist
5bd0: 2d 3e 65 6e 76 2d 76 61 72 73 20 3b 3b 20 63 6f ->env-vars ;; co
5be0: 6e 73 6f 6c 69 64 61 74 65 20 74 68 69 73 20 63 nsolidate this c
5bf0: 6f 64 65 20 77 69 74 68 20 74 68 65 20 63 6f 64 ode with the cod
5c00: 65 20 69 6e 20 6d 65 67 61 74 65 73 74 2e 73 63 e in megatest.sc
5c10: 6d 20 66 6f 72 20 22 2d 65 78 65 63 75 74 65 22 m for "-execute"
5c20: 0a 09 09 09 20 20 20 20 28 61 70 70 65 6e 64 20 .... (append
5c30: 28 6c 69 73 74 20 28 6c 69 73 74 20 22 4d 54 5f (list (list "MT_
5c40: 54 45 53 54 5f 4e 41 4d 45 22 20 74 65 73 74 2d TEST_NAME" test-
5c50: 6e 61 6d 65 29 0a 09 09 09 09 09 20 20 28 6c 69 name)...... (li
5c60: 73 74 20 22 4d 54 5f 49 54 45 4d 5f 49 4e 46 4f st "MT_ITEM_INFO
5c70: 22 20 28 63 6f 6e 63 20 69 74 65 6d 64 61 74 29 " (conc itemdat)
5c80: 29 20 0a 09 09 09 09 09 20 20 28 6c 69 73 74 20 ) ...... (list
5c90: 22 4d 54 5f 52 55 4e 4e 41 4d 45 22 20 20 20 72 "MT_RUNNAME" r
5ca0: 75 6e 6e 61 6d 65 29 29 0a 09 09 09 09 20 20 20 unname)).....
5cb0: 20 69 74 65 6d 64 61 74 29 29 29 0a 09 20 20 20 itemdat)))..
5cc0: 28 6c 61 75 6e 63 68 2d 72 65 73 75 6c 74 73 20 (launch-results
5cd0: 28 61 70 70 6c 79 20 63 6d 64 2d 72 75 6e 2d 70 (apply cmd-run-p
5ce0: 72 6f 63 2d 65 61 63 68 2d 6c 69 6e 65 0a 09 09 roc-each-line...
5cf0: 09 09 20 20 28 69 66 20 75 73 65 73 68 65 6c 6c .. (if useshell
5d00: 0a 09 09 09 09 20 20 20 20 20 20 28 73 74 72 69 ..... (stri
5d10: 6e 67 2d 69 6e 74 65 72 73 70 65 72 73 65 20 66 ng-intersperse f
5d20: 75 6c 6c 63 6d 64 20 22 20 22 29 0a 09 09 09 09 ullcmd " ").....
5d30: 20 20 20 20 20 20 28 63 61 72 20 66 75 6c 6c 63 (car fullc
5d40: 6d 64 29 29 0a 09 09 09 09 20 20 70 72 69 6e 74 md))..... print
5d50: 0a 09 09 09 09 20 20 28 69 66 20 75 73 65 73 68 ..... (if usesh
5d60: 65 6c 6c 0a 09 09 09 09 20 20 20 20 20 20 27 28 ell..... '(
5d70: 29 0a 09 09 09 09 20 20 20 20 20 20 28 63 64 72 )..... (cdr
5d80: 20 66 75 6c 6c 63 6d 64 29 29 29 29 29 20 3b 3b fullcmd))))) ;;
5d90: 20 20 6c 61 75 6e 63 68 65 72 20 66 75 6c 6c 63 launcher fullc
5da0: 6d 64 29 29 29 3b 3b 20 28 61 70 70 6c 79 20 63 md)));; (apply c
5db0: 6d 64 2d 72 75 6e 2d 70 72 6f 63 2d 65 61 63 68 md-run-proc-each
5dc0: 2d 6c 69 6e 65 20 6c 61 75 6e 63 68 65 72 20 70 -line launcher p
5dd0: 72 69 6e 74 20 66 75 6c 6c 63 6d 64 29 29 29 20 rint fullcmd)))
5de0: 3b 3b 20 28 63 6d 64 2d 72 75 6e 2d 3e 6c 69 73 ;; (cmd-run->lis
5df0: 74 20 66 75 6c 6c 63 6d 64 29 29 0a 20 20 20 20 t fullcmd)).
5e00: 20 20 28 64 65 62 75 67 3a 70 72 69 6e 74 20 32 (debug:print 2
5e10: 20 22 4c 61 75 6e 63 68 69 6e 67 20 63 6f 6d 70 "Launching comp
5e20: 6c 65 74 65 64 2c 20 75 70 64 61 74 69 6e 67 20 leted, updating
5e30: 64 62 22 29 0a 20 20 20 20 20 20 28 64 65 62 75 db"). (debu
5e40: 67 3a 70 72 69 6e 74 20 34 20 22 4c 61 75 6e 63 g:print 4 "Launc
5e50: 68 20 72 65 73 75 6c 74 73 3a 20 22 20 6c 61 75 h results: " lau
5e60: 6e 63 68 2d 72 65 73 75 6c 74 73 29 0a 20 20 20 nch-results).
5e70: 20 20 20 28 69 66 20 28 6e 6f 74 20 6c 61 75 6e (if (not laun
5e80: 63 68 2d 72 65 73 75 6c 74 73 29 0a 09 20 20 28 ch-results).. (
5e90: 62 65 67 69 6e 0a 09 20 20 20 20 28 70 72 69 6e begin.. (prin
5ea0: 74 20 22 45 52 52 4f 52 3a 20 46 61 69 6c 65 64 t "ERROR: Failed
5eb0: 20 74 6f 20 72 75 6e 20 22 20 28 73 74 72 69 6e to run " (strin
5ec0: 67 2d 69 6e 74 65 72 73 70 65 72 73 65 20 66 75 g-intersperse fu
5ed0: 6c 6c 63 6d 64 20 22 20 22 29 20 22 2c 20 65 78 llcmd " ") ", ex
5ee0: 69 74 69 6e 67 20 6e 6f 77 22 29 0a 09 20 20 20 iting now")..
5ef0: 20 28 73 71 6c 69 74 65 33 3a 66 69 6e 61 6c 69 (sqlite3:finali
5f00: 7a 65 21 20 64 62 29 0a 09 20 20 20 20 3b 3b 20 ze! db).. ;;
5f10: 67 6f 6f 64 20 6f 6c 65 20 22 65 78 69 74 22 20 good ole "exit"
5f20: 73 65 65 6d 73 20 6e 6f 74 20 74 6f 20 77 6f 72 seems not to wor
5f30: 6b 0a 09 20 20 20 20 3b 3b 20 28 5f 65 78 69 74 k.. ;; (_exit
5f40: 20 39 29 0a 09 20 20 20 20 3b 3b 20 62 75 74 20 9).. ;; but
5f50: 74 68 69 73 20 68 61 63 6b 20 77 69 6c 6c 20 77 this hack will w
5f60: 6f 72 6b 21 20 54 68 61 6e 6b 73 20 67 6f 20 74 ork! Thanks go t
5f70: 6f 20 41 6c 61 6e 20 50 6f 73 74 20 6f 66 20 74 o Alan Post of t
5f80: 68 65 20 43 68 69 63 6b 65 6e 20 65 6d 61 69 6c he Chicken email
5f90: 20 6c 69 73 74 0a 09 20 20 20 20 3b 3b 20 4e 42 list.. ;; NB
5fa0: 2f 2f 20 49 73 20 74 68 69 73 20 73 74 69 6c 6c // Is this still
5fb0: 20 6e 65 65 64 65 64 3f 20 53 68 6f 75 6c 64 20 needed? Should
5fc0: 62 65 20 73 61 66 65 20 74 6f 20 67 6f 20 62 61 be safe to go ba
5fd0: 63 6b 20 74 6f 20 22 65 78 69 74 22 20 6e 6f 77 ck to "exit" now
5fe0: 3f 0a 09 20 20 20 20 28 70 72 6f 63 65 73 73 2d ?.. (process-
5ff0: 73 69 67 6e 61 6c 20 28 63 75 72 72 65 6e 74 2d signal (current-
6000: 70 72 6f 63 65 73 73 2d 69 64 29 20 73 69 67 6e process-id) sign
6010: 61 6c 2f 6b 69 6c 6c 29 0a 09 20 20 20 20 29 29 al/kill).. ))
6020: 0a 20 20 20 20 20 20 28 61 6c 69 73 74 2d 3e 65 . (alist->e
6030: 6e 76 2d 76 61 72 73 20 6d 69 73 63 70 72 65 76 nv-vars miscprev
6040: 76 61 6c 73 29 0a 20 20 20 20 20 20 28 61 6c 69 vals). (ali
6050: 73 74 2d 3e 65 6e 76 2d 76 61 72 73 20 74 65 73 st->env-vars tes
6060: 74 70 72 65 76 76 61 6c 73 29 0a 20 20 20 20 20 tprevvals).
6070: 20 28 61 6c 69 73 74 2d 3e 65 6e 76 2d 76 61 72 (alist->env-var
6080: 73 20 63 6f 6d 6d 6f 6e 70 72 65 76 76 61 6c 73 s commonprevvals
6090: 29 0a 20 20 20 20 20 20 6c 61 75 6e 63 68 2d 72 ). launch-r
60a0: 65 73 75 6c 74 73 29 29 29 0a 0a esults)))..