Artifact
fa6512266d595fe53ad8b69cd2515b0539088490:
0000: 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ;;==============
0010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 43 6f 70 79 ========.;; Copy
0050: 72 69 67 68 74 20 32 30 30 36 2d 32 30 31 32 2c right 2006-2012,
0060: 20 4d 61 74 74 68 65 77 20 57 65 6c 6c 61 6e 64 Matthew Welland
0070: 2e 0a 3b 3b 20 0a 3b 3b 20 20 54 68 69 73 20 70 ..;; .;; This p
0080: 72 6f 67 72 61 6d 20 69 73 20 6d 61 64 65 20 61 rogram is made a
0090: 76 61 69 6c 61 62 6c 65 20 75 6e 64 65 72 20 74 vailable under t
00a0: 68 65 20 47 4e 55 20 47 50 4c 20 76 65 72 73 69 he GNU GPL versi
00b0: 6f 6e 20 32 2e 30 20 6f 72 0a 3b 3b 20 20 67 72 on 2.0 or.;; gr
00c0: 65 61 74 65 72 2e 20 53 65 65 20 74 68 65 20 61 eater. See the a
00d0: 63 63 6f 6d 70 61 6e 79 69 6e 67 20 66 69 6c 65 ccompanying file
00e0: 20 43 4f 50 59 49 4e 47 20 66 6f 72 20 64 65 74 COPYING for det
00f0: 61 69 6c 73 2e 0a 3b 3b 20 0a 3b 3b 20 20 54 68 ails..;; .;; Th
0100: 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 is program is di
0110: 73 74 72 69 62 75 74 65 64 20 57 49 54 48 4f 55 stributed WITHOU
0120: 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 T ANY WARRANTY;
0130: 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 without even the
0140: 0a 3b 3b 20 20 69 6d 70 6c 69 65 64 20 77 61 72 .;; implied war
0150: 72 61 6e 74 79 20 6f 66 20 4d 45 52 43 48 41 4e ranty of MERCHAN
0160: 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e TABILITY or FITN
0170: 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 ESS FOR A PARTIC
0180: 55 4c 41 52 0a 3b 3b 20 20 50 55 52 50 4f 53 45 ULAR.;; PURPOSE
0190: 2e 0a 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ..;;============
01a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 28 64 65 63 ==========..(dec
01e0: 6c 61 72 65 20 28 75 6e 69 74 20 67 65 6e 65 78 lare (unit genex
01f0: 61 6d 70 6c 65 29 29 0a 28 75 73 65 20 70 6f 73 ample)).(use pos
0200: 69 78 20 72 65 67 65 78 29 0a 0a 28 64 65 66 69 ix regex)..(defi
0210: 6e 65 20 67 65 6e 65 78 61 6d 70 6c 65 3a 65 78 ne genexample:ex
0220: 61 6d 70 6c 65 2d 6c 6f 67 70 72 6f 0a 23 3c 3c ample-logpro.#<<
0230: 45 4f 46 0a 20 20 3b 3b 20 59 6f 75 20 73 68 6f EOF. ;; You sho
0240: 75 6c 64 20 68 61 76 65 20 61 74 20 6c 65 61 73 uld have at leas
0250: 74 20 6f 6e 65 20 65 78 70 65 63 74 3a 72 65 71 t one expect:req
0260: 75 69 72 65 64 2e 20 54 68 69 73 20 65 6e 73 75 uired. This ensu
0270: 72 65 73 20 74 68 61 74 20 79 6f 75 72 20 70 72 res that your pr
0280: 6f 63 65 73 73 20 72 61 6e 0a 20 20 3b 3b 20 63 ocess ran. ;; c
0290: 6f 6d 6d 65 6e 74 20 6f 75 74 20 74 68 65 20 6c omment out the l
02a0: 69 6e 65 20 62 65 6c 6f 77 20 61 6e 64 20 72 65 ine below and re
02b0: 70 6c 61 63 65 20 22 70 75 74 20 70 61 74 74 65 place "put patte
02c0: 72 6e 20 68 65 72 65 22 20 77 69 74 68 20 61 20 rn here" with a
02d0: 70 61 74 74 65 72 6e 20 74 68 61 74 20 77 69 6c pattern that wil
02e0: 6c 0a 20 20 3b 3b 20 61 6c 77 61 79 73 20 62 65 l. ;; always be
02f0: 20 73 65 65 6e 20 69 6e 20 79 6f 75 72 20 6c 6f seen in your lo
0300: 67 20 66 69 6c 65 20 69 66 20 74 68 65 20 73 74 g file if the st
0310: 65 70 20 72 75 6e 73 20 73 75 63 63 65 73 73 66 ep runs successf
0320: 75 6c 6c 79 2e 0a 20 20 3b 3b 0a 20 20 3b 3b 20 ully.. ;;. ;;
0330: 28 65 78 70 65 63 74 3a 72 65 71 75 69 72 65 64 (expect:required
0340: 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 in "LogFileBody
0350: 22 20 3e 20 30 20 22 50 75 74 20 64 65 73 63 72 " > 0 "Put descr
0360: 69 70 74 69 6f 6e 20 68 65 72 65 22 20 23 2f 70 iption here" #/p
0370: 75 74 20 70 61 74 74 65 72 6e 20 68 65 72 65 2f ut pattern here/
0380: 29 0a 20 20 3b 3b 0a 20 20 3b 3b 20 59 6f 75 20 ). ;;. ;; You
0390: 6d 61 79 20 6e 65 65 64 20 69 67 6e 6f 72 65 73 may need ignores
03a0: 20 74 6f 20 73 75 70 70 72 65 73 73 20 66 61 6c to suppress fal
03b0: 73 65 20 65 72 72 6f 72 20 6f 72 20 77 61 72 6e se error or warn
03c0: 69 6e 67 20 68 69 74 73 20 66 72 6f 6d 20 74 68 ing hits from th
03d0: 65 20 6c 61 74 65 72 20 65 78 70 65 63 74 73 0a e later expects.
03e0: 20 20 3b 3b 20 4e 4f 54 45 3a 20 4f 72 64 65 72 ;; NOTE: Order
03f0: 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 68 65 is important he
0400: 72 65 21 0a 20 20 28 65 78 70 65 63 74 3a 69 67 re!. (expect:ig
0410: 6e 6f 72 65 20 20 20 69 6e 20 22 4c 6f 67 46 69 nore in "LogFi
0420: 6c 65 42 6f 64 79 22 20 20 3c 20 39 39 20 22 49 leBody" < 99 "I
0430: 67 6e 6f 72 65 20 74 68 65 20 77 6f 72 64 20 65 gnore the word e
0440: 72 72 6f 72 20 69 6e 20 63 6f 6d 6d 65 6e 74 73 rror in comments
0450: 22 20 23 2f 5e 5c 2f 5c 2f 2e 2a 65 72 72 6f 72 " #/^\/\/.*error
0460: 2f 29 0a 20 20 28 65 78 70 65 63 74 3a 77 61 72 /). (expect:war
0470: 6e 69 6e 67 20 20 69 6e 20 22 4c 6f 67 46 69 6c ning in "LogFil
0480: 65 42 6f 64 79 22 20 20 3d 20 30 20 22 41 6e 79 eBody" = 0 "Any
0490: 20 77 61 72 6e 69 6e 67 22 20 23 2f 77 61 72 6e warning" #/warn
04a0: 2f 29 0a 20 20 28 65 78 70 65 63 74 3a 65 72 72 /). (expect:err
04b0: 6f 72 20 20 20 20 69 6e 20 22 4c 6f 67 46 69 6c or in "LogFil
04c0: 65 42 6f 64 79 22 20 20 3d 20 30 20 22 41 6e 79 eBody" = 0 "Any
04d0: 20 65 72 72 6f 72 22 20 20 28 6c 69 73 74 20 23 error" (list #
04e0: 2f 45 52 52 4f 52 2f 20 23 2f 65 72 72 6f 72 2f /ERROR/ #/error/
04f0: 29 29 20 3b 3b 20 62 75 74 20 64 69 73 61 6c 6c )) ;; but disall
0500: 6f 77 20 61 6e 79 20 6f 74 68 65 72 20 65 72 72 ow any other err
0510: 6f 72 73 0a 45 4f 46 0a 29 0a 0a 28 64 65 66 69 ors.EOF.)..(defi
0520: 6e 65 20 67 65 6e 65 78 61 6d 70 6c 65 3a 65 78 ne genexample:ex
0530: 61 6d 70 6c 65 2d 73 63 72 69 70 74 0a 23 3c 3c ample-script.#<<
0540: 45 4f 46 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 65 EOF.#!/usr/bin/e
0550: 6e 76 20 62 61 73 68 0a 0a 23 20 52 75 6e 20 79 nv bash..# Run y
0560: 6f 75 72 20 73 74 65 70 20 68 65 72 65 0a 45 4f our step here.EO
0570: 46 0a 29 0a 0a 28 64 65 66 69 6e 65 20 28 67 65 F.)..(define (ge
0580: 6e 65 78 61 6d 70 6c 65 3a 6d 6b 2d 6d 65 67 61 nexample:mk-mega
0590: 74 65 73 74 2e 63 6f 6e 66 69 67 29 0a 20 20 28 test.config). (
05a0: 6c 65 74 20 28 28 6b 65 79 73 74 72 20 23 66 29 let ((keystr #f)
05b0: 0a 09 28 6b 65 79 73 20 20 20 23 66 29 0a 09 28 ..(keys #f)..(
05c0: 6c 6e 74 72 65 65 20 23 66 29 0a 09 28 70 61 74 lntree #f)..(pat
05d0: 68 20 20 20 23 66 29 0a 09 28 66 69 72 73 74 64 h #f)..(firstd
05e0: 20 23 66 29 29 0a 20 20 20 20 28 70 72 69 6e 74 #f)). (print
05f0: 20 22 4e 6f 74 65 3a 20 64 6f 6e 27 74 20 77 6f "Note: don't wo
0600: 72 72 79 20 74 6f 6f 20 6d 75 63 68 20 61 62 6f rry too much abo
0610: 75 74 20 74 79 70 6f 73 20 69 6e 20 74 68 69 73 ut typos in this
0620: 20 70 72 6f 63 65 73 73 2c 20 79 6f 75 20 77 69 process, you wi
0630: 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 65 64 ll be able to ed
0640: 69 74 0a 74 68 65 20 67 65 6e 65 72 61 74 65 64 it.the generated
0650: 20 66 69 6c 65 73 20 62 65 66 6f 72 65 20 73 74 files before st
0660: 61 72 74 69 6e 67 20 79 6f 75 72 20 66 69 72 73 arting your firs
0670: 74 20 72 75 6e 73 22 29 0a 0a 20 20 20 20 3b 3b t runs").. ;;
0680: 20 63 72 65 61 74 65 20 74 68 65 20 6e 65 65 64 create the need
0690: 65 64 20 61 72 65 61 0a 20 20 20 20 28 70 72 69 ed area. (pri
06a0: 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d nt "============
06b0: 3d 3d 3d 3d 3d 3d 5c 6e 57 68 65 72 65 20 63 61 ======\nWhere ca
06c0: 6e 20 49 20 63 72 65 61 74 65 20 79 6f 75 72 20 n I create your
06d0: 4d 65 67 61 74 65 73 74 20 72 65 67 72 65 73 73 Megatest regress
06e0: 73 69 6f 6e 2f 63 6f 6e 74 69 6e 75 6f 75 73 20 sion/continuous
06f0: 62 75 69 6c 64 20 61 72 65 61 3f 20 4e 6f 74 65 build area? Note
0700: 2c 20 79 6f 75 72 20 5c 6e 22 0a 09 20 20 20 22 , your \n".. "
0710: 74 65 73 74 73 20 77 69 6c 6c 20 6e 6f 74 20 6e tests will not n
0720: 65 63 65 73 73 61 72 69 6c 79 20 62 65 20 72 75 ecessarily be ru
0730: 6e 20 69 6e 20 74 68 69 73 20 61 72 65 61 2c 20 n in this area,
0740: 64 69 73 6b 20 73 70 61 63 65 20 6e 65 65 64 73 disk space needs
0750: 20 61 72 65 20 6d 6f 64 65 73 74 2e 20 43 75 72 are modest. Cur
0760: 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79 20 69 rent directory i
0770: 73 3a 5c 6e 5c 6e 22 0a 09 20 20 20 28 63 75 72 s:\n\n".. (cur
0780: 72 65 6e 74 2d 64 69 72 65 63 74 6f 72 79 29 20 rent-directory)
0790: 22 5c 6e 22 29 0a 20 20 20 20 28 64 69 73 70 6c "\n"). (displ
07a0: 61 79 20 22 45 6e 74 65 72 20 79 6f 75 72 20 6d ay "Enter your m
07b0: 65 67 61 74 65 73 74 20 64 69 72 65 63 74 6f 72 egatest director
07c0: 79 3a 20 22 29 0a 20 20 20 20 28 73 65 74 21 20 y: "). (set!
07d0: 70 61 74 68 20 28 72 65 61 64 2d 6c 69 6e 65 29 path (read-line)
07e0: 29 0a 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 ).. (if (not
07f0: 28 64 69 72 65 63 74 6f 72 79 3f 20 70 61 74 68 (directory? path
0800: 29 29 0a 09 28 62 65 67 69 6e 0a 09 20 20 28 70 ))..(begin.. (p
0810: 72 69 6e 74 20 22 54 68 65 20 70 61 74 68 20 22 rint "The path "
0820: 20 70 61 74 68 20 22 20 64 6f 65 73 20 6e 6f 74 path " does not
0830: 20 65 78 69 73 74 20 6f 72 20 69 73 20 6e 6f 74 exist or is not
0840: 20 61 20 64 69 72 65 63 74 6f 72 79 2e 20 41 74 a directory. At
0850: 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 72 65 61 tempting to crea
0860: 74 65 20 69 74 20 6e 6f 77 22 29 0a 09 20 20 28 te it now").. (
0870: 63 72 65 61 74 65 2d 64 69 72 65 63 74 6f 72 79 create-directory
0880: 20 70 61 74 68 20 23 74 29 29 29 0a 0a 20 20 20 path #t)))..
0890: 20 3b 3b 20 46 69 72 73 74 20 63 68 65 63 6b 20 ;; First check
08a0: 74 68 61 74 20 74 68 65 20 64 69 72 65 63 74 6f that the directo
08b0: 72 79 20 69 73 20 65 6d 70 74 79 21 0a 20 20 20 ry is empty!.
08c0: 20 28 69 66 20 28 61 6e 64 20 28 66 69 6c 65 2d (if (and (file-
08d0: 65 78 69 73 74 73 3f 20 70 61 74 68 29 0a 09 20 exists? path)..
08e0: 20 20 20 20 28 6e 6f 74 20 28 6e 75 6c 6c 3f 20 (not (null?
08f0: 28 67 6c 6f 62 20 28 63 6f 6e 63 20 70 61 74 68 (glob (conc path
0900: 20 22 2f 2a 22 29 29 29 29 29 0a 09 28 62 65 67 "/*")))))..(beg
0910: 69 6e 0a 09 20 20 28 70 72 69 6e 74 20 22 57 41 in.. (print "WA
0920: 52 4e 49 4e 47 3a 20 64 69 72 65 63 74 6f 72 79 RNING: directory
0930: 20 22 20 70 61 74 68 20 22 20 69 73 20 6e 6f 74 " path " is not
0940: 20 65 6d 70 74 79 2c 20 61 72 65 20 79 6f 75 20 empty, are you
0950: 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f sure you want to
0960: 20 63 6f 6e 74 69 6e 75 65 3f 22 29 0a 09 20 20 continue?")..
0970: 28 64 69 73 70 6c 61 79 20 22 45 6e 74 65 72 20 (display "Enter
0980: 79 2f 6e 3a 20 22 29 0a 09 20 20 28 69 66 20 28 y/n: ").. (if (
0990: 65 71 75 61 6c 3f 20 22 79 22 20 28 72 65 61 64 equal? "y" (read
09a0: 2d 6c 69 6e 65 29 29 0a 09 20 20 20 20 20 20 28 -line)).. (
09b0: 70 72 69 6e 74 20 22 55 73 69 6e 67 20 64 69 72 print "Using dir
09c0: 65 63 74 6f 72 79 20 22 20 70 61 74 68 20 22 20 ectory " path "
09d0: 66 6f 72 20 79 6f 75 72 20 4d 65 67 61 74 65 73 for your Megates
09e0: 74 20 61 72 65 61 2e 22 29 0a 09 20 20 20 20 20 t area.")..
09f0: 20 28 62 65 67 69 6e 0a 09 09 28 70 72 69 6e 74 (begin...(print
0a00: 20 22 49 4e 46 4f 3a 20 43 72 65 61 74 69 6f 6e "INFO: Creation
0a10: 20 6f 66 20 6d 65 67 61 74 65 73 74 20 66 69 6c of megatest fil
0a20: 65 73 20 69 6e 20 22 20 70 61 74 68 20 22 20 61 es in " path " a
0a30: 62 6f 72 74 65 64 22 29 0a 09 09 28 65 78 69 74 borted")...(exit
0a40: 20 31 29 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 1))))).. ;;
0a50: 66 69 72 73 74 20 70 72 6f 6d 70 74 20 75 73 65 first prompt use
0a60: 72 20 66 6f 72 20 66 69 65 6c 64 73 0a 20 20 20 r for fields.
0a70: 20 3b 3b 0a 20 20 20 20 28 70 72 69 6e 74 0a 20 ;;. (print.
0a80: 20 20 20 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "===========
0a90: 3d 3d 3d 3d 3d 3d 3d 0a 0a 4e 65 78 74 20 79 6f =======..Next yo
0aa0: 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 66 u must specify f
0ab0: 69 65 6c 64 73 20 6f 72 20 6b 65 79 73 20 66 6f ields or keys fo
0ac0: 72 20 79 6f 75 72 20 6d 65 67 61 74 65 73 74 20 r your megatest
0ad0: 61 72 65 61 2e 20 54 68 65 73 65 0a 77 69 6c 6c area. These.will
0ae0: 20 62 65 20 75 73 65 64 20 74 6f 20 6f 72 67 61 be used to orga
0af0: 6e 69 73 65 20 79 6f 75 72 20 72 75 6e 73 2e 20 nise your runs.
0b00: 4f 6e 65 20 66 69 65 6c 64 20 73 68 6f 75 6c 64 One field should
0b10: 20 70 72 6f 62 61 62 6c 79 20 62 65 0a 5c 22 52 probably be.\"R
0b20: 45 4c 45 41 53 45 5c 22 2e 20 20 4f 74 68 65 72 ELEASE\". Other
0b30: 20 65 78 61 6d 70 6c 65 73 20 6f 66 20 75 73 65 examples of use
0b40: 66 75 6c 20 66 69 65 6c 64 73 20 6d 69 67 68 74 ful fields might
0b50: 20 62 65 20 5c 22 50 4c 41 54 46 4f 52 4d 5c 22 be \"PLATFORM\"
0b60: 2c 0a 5c 22 54 41 52 47 45 54 5f 4f 53 5c 22 20 ,.\"TARGET_OS\"
0b70: 6f 72 20 69 66 20 79 6f 75 20 61 72 65 20 69 6e or if you are in
0b80: 20 74 68 65 20 73 65 6d 69 63 6f 6e 64 75 63 74 the semiconduct
0b90: 6f 72 20 62 75 73 69 6e 65 73 73 20 70 65 72 68 or business perh
0ba0: 61 70 73 0a 74 68 69 6e 67 73 20 6c 69 6b 65 20 aps.things like
0bb0: 5c 22 54 45 43 48 4e 4f 4c 4f 47 59 5f 4e 4f 44 \"TECHNOLOGY_NOD
0bc0: 45 5c 22 2c 20 5c 22 44 45 53 49 47 4e 5f 4b 49 E\", \"DESIGN_KI
0bd0: 54 5c 22 20 6f 72 20 5c 22 4d 45 54 41 4c 5f 53 T\" or \"METAL_S
0be0: 54 41 43 4b 5c 22 2e 0a 0a 54 68 65 20 61 6c 6c TACK\"...The all
0bf0: 20 63 61 70 73 20 69 73 20 61 20 63 6f 6e 76 65 caps is a conve
0c00: 6e 74 69 6f 6e 20 62 65 63 61 75 73 65 20 74 68 ntion because th
0c10: 65 20 76 61 72 69 61 62 6c 65 73 20 79 6f 75 20 e variables you
0c20: 63 68 6f 6f 73 65 20 77 69 6c 6c 20 62 65 0a 61 choose will be.a
0c30: 76 61 69 6c 61 62 6c 65 20 74 6f 20 79 6f 75 72 vailable to your
0c40: 20 74 65 73 74 73 20 61 73 20 65 6e 76 69 72 6f tests as enviro
0c50: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 2e nment variables.
0c60: 20 59 6f 75 20 63 61 6e 20 65 64 69 74 20 74 68 You can edit th
0c70: 65 73 65 0a 76 61 6c 75 65 73 20 6c 61 74 65 72 ese.values later
0c80: 20 62 75 74 20 69 74 20 69 73 20 67 65 6e 65 72 but it is gener
0c90: 61 6c 6c 79 20 61 20 67 6f 6f 64 20 69 64 65 61 ally a good idea
0ca0: 20 74 6f 20 73 65 74 74 6c 65 20 6f 6e 20 74 68 to settle on th
0cb0: 65 6d 0a 65 61 72 6c 79 2e 0a 0a 59 6f 75 72 20 em.early...Your
0cc0: 72 75 6e 73 20 77 69 6c 6c 20 62 65 20 73 74 6f runs will be sto
0cd0: 72 65 64 20 69 6e 20 64 69 72 65 63 74 6f 72 69 red in directori
0ce0: 65 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20 es specified by
0cf0: 79 6f 75 72 0a 6b 65 79 73 2e 20 45 78 61 6d 70 your.keys. Examp
0d00: 6c 65 2c 20 69 66 20 79 6f 75 20 68 61 76 65 20 le, if you have
0d10: 6b 65 79 73 20 4f 53 46 41 4d 49 4c 59 2f 56 41 keys OSFAMILY/VA
0d20: 52 49 41 4e 54 2f 4f 53 56 45 52 2f 52 45 4c 45 RIANT/OSVER/RELE
0d30: 41 53 45 20 79 6f 75 20 6d 61 79 0a 67 65 74 20 ASE you may.get
0d40: 61 20 74 65 73 74 20 5c 22 62 75 69 6c 64 5c 22 a test \"build\"
0d50: 20 69 6e 20 61 20 64 69 72 65 63 74 6f 72 79 20 in a directory
0d60: 6c 69 6b 65 20 74 68 69 73 3a 0a 6c 69 6e 75 78 like this:.linux
0d70: 2f 75 62 75 6e 74 75 2f 31 31 2e 30 34 2f 72 65 /ubuntu/11.04/re
0d80: 76 5f 31 2e 32 2f 62 75 69 6c 64 0a 0a 50 6c 65 v_1.2/build..Ple
0d90: 61 73 65 20 65 6e 74 65 72 20 79 6f 75 72 20 6b ase enter your k
0da0: 65 79 73 20 6e 6f 77 2c 20 73 65 70 61 72 61 74 eys now, separat
0db0: 65 64 20 62 79 20 73 70 61 63 65 73 20 6f 72 20 ed by spaces or
0dc0: 73 6c 61 73 68 65 73 2e 20 4f 6e 6c 79 20 61 6c slashes. Only al
0dd0: 70 68 61 2d 6e 75 6d 65 72 69 63 20 63 68 61 72 pha-numeric char
0de0: 61 63 74 65 72 73 2c 20 0a 75 70 70 65 72 20 63 acters, .upper c
0df0: 61 73 65 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e ase recommended.
0e00: 20 45 78 61 6d 70 6c 65 3a 20 43 4f 4d 50 49 4c Example: COMPIL
0e10: 45 52 5f 56 45 52 2f 52 45 4c 45 41 53 45 5f 4e ER_VER/RELEASE_N
0e20: 41 4d 45 2f 51 55 41 4c 5f 4c 45 56 45 4c 0a 22 AME/QUAL_LEVEL."
0e30: 29 0a 20 20 20 20 28 73 65 74 21 20 6b 65 79 73 ). (set! keys
0e40: 20 28 6c 65 74 20 6c 6f 6f 70 20 28 28 6b 65 79 (let loop ((key
0e50: 73 74 72 20 22 22 29 29 0a 09 09 20 28 69 66 20 str ""))... (if
0e60: 28 65 71 75 61 6c 3f 20 6b 65 79 73 74 72 20 22 (equal? keystr "
0e70: 71 22 29 0a 09 09 20 20 20 20 20 28 62 65 67 69 q")... (begi
0e80: 6e 0a 09 09 20 20 20 20 20 20 20 28 70 72 69 6e n... (prin
0e90: 74 20 22 51 75 69 74 69 6e 67 20 2e 2e 2e 22 29 t "Quiting ...")
0ea0: 0a 09 09 20 20 20 20 20 20 20 28 65 78 69 74 29 ... (exit)
0eb0: 29 0a 09 09 20 20 20 20 20 28 6c 65 74 20 28 28 )... (let ((
0ec0: 6b 65 79 6c 73 74 20 28 61 70 70 6c 79 20 61 70 keylst (apply ap
0ed0: 70 65 6e 64 0a 09 09 09 09 09 20 20 28 6d 61 70 pend...... (map
0ee0: 20 73 74 72 69 6e 67 2d 73 70 6c 69 74 20 28 73 string-split (s
0ef0: 74 72 69 6e 67 2d 73 70 6c 69 74 20 6b 65 79 73 tring-split keys
0f00: 74 72 20 22 2f 22 29 29 29 29 29 0a 09 09 20 20 tr "/")))))...
0f10: 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 75 (if (or (nu
0f20: 6c 6c 3f 20 6b 65 79 6c 73 74 29 0a 09 09 09 20 ll? keylst)....
0f30: 20 20 20 20 20 20 28 6e 6f 74 20 28 6e 75 6c 6c (not (null
0f40: 3f 20 28 66 69 6c 74 65 72 20 73 74 72 69 6e 67 ? (filter string
0f50: 2d 6e 75 6c 6c 3f 20 6b 65 79 6c 73 74 29 29 29 -null? keylst)))
0f60: 29 0a 09 09 09 20 20 20 28 62 65 67 69 6e 0a 09 ).... (begin..
0f70: 09 09 20 20 20 20 20 28 64 69 73 70 6c 61 79 20 .. (display
0f80: 22 45 6e 74 65 72 20 6b 65 79 73 20 73 65 70 61 "Enter keys sepa
0f90: 72 61 74 65 64 20 62 79 20 73 70 61 63 65 73 20 rated by spaces
0fa0: 6f 72 20 73 6c 61 73 68 65 73 3a 20 22 29 0a 09 or slashes: ")..
0fb0: 09 09 20 20 20 20 20 28 6c 6f 6f 70 20 28 72 65 .. (loop (re
0fc0: 61 64 2d 6c 69 6e 65 29 29 29 0a 09 09 09 20 20 ad-line)))....
0fd0: 20 6b 65 79 6c 73 74 29 29 29 29 29 0a 0a 20 20 keylst)))))..
0fe0: 20 20 28 70 72 69 6e 74 20 22 59 6f 75 20 68 61 (print "You ha
0ff0: 76 65 20 63 68 6f 6f 73 65 6e 20 22 20 28 73 74 ve choosen " (st
1000: 72 69 6e 67 2d 69 6e 74 65 72 73 70 65 72 73 65 ring-intersperse
1010: 20 6b 65 79 73 20 22 2c 20 22 29 20 22 20 66 6f keys ", ") " fo
1020: 72 20 79 6f 75 72 20 6b 65 79 73 2e 22 29 0a 20 r your keys.").
1030: 20 20 20 0a 20 20 20 20 3b 3b 20 4e 6f 77 20 67 . ;; Now g
1040: 65 74 20 74 68 65 20 6c 69 6e 6b 20 74 72 65 65 et the link tree
1050: 20 6c 6f 63 61 74 69 6f 6e 20 61 6e 64 20 61 20 location and a
1060: 66 69 72 73 74 20 64 69 73 6b 0a 20 20 20 20 28 first disk. (
1070: 70 72 69 6e 74 0a 20 20 20 20 20 22 3d 3d 3d 3d print. "====
1080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a ==============..
1090: 4e 6f 77 20 79 6f 75 20 6e 65 65 64 20 61 6e 20 Now you need an
10a0: 69 6e 69 74 69 61 6c 20 70 6c 61 63 65 20 74 6f initial place to
10b0: 20 73 74 6f 72 65 20 79 6f 75 72 20 72 75 6e 73 store your runs
10c0: 2e 20 54 68 65 73 65 20 61 72 65 20 63 61 6c 6c . These are call
10d0: 65 64 20 5c 22 64 69 73 6b 73 5c 22 20 61 6e 64 ed \"disks\" and
10e0: 20 79 6f 75 0a 63 61 6e 20 61 64 64 20 6d 6f 72 you.can add mor
10f0: 65 20 61 74 20 61 6e 79 20 74 69 6d 65 2e 20 54 e at any time. T
1100: 6f 20 67 65 74 20 67 6f 69 6e 67 20 70 72 6f 76 o get going prov
1110: 69 64 65 20 61 20 77 72 69 74 65 61 62 6c 65 20 ide a writeable
1120: 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 2e 20 directory name.
1130: 0a 0a 22 29 0a 20 20 20 20 28 64 69 73 70 6c 61 .."). (displa
1140: 79 20 22 45 6e 74 65 72 20 79 6f 75 72 20 74 65 y "Enter your te
1150: 73 74 20 72 75 6e 73 20 64 69 72 65 63 74 6f 72 st runs director
1160: 79 3a 20 22 29 0a 20 20 20 20 28 73 65 74 21 20 y: "). (set!
1170: 66 69 72 73 74 64 20 28 72 65 61 64 2d 6c 69 6e firstd (read-lin
1180: 65 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 e)). (if (not
1190: 20 28 64 69 72 65 63 74 6f 72 79 3f 20 66 69 72 (directory? fir
11a0: 73 74 64 29 29 0a 09 28 62 65 67 69 6e 0a 09 20 std))..(begin..
11b0: 20 28 70 72 69 6e 74 20 22 57 41 52 4e 49 4e 47 (print "WARNING
11c0: 3a 20 79 6f 75 20 68 61 76 65 20 73 70 65 63 69 : you have speci
11d0: 66 69 65 64 20 61 20 70 61 74 68 20 22 20 66 69 fied a path " fi
11e0: 72 73 74 64 20 22 20 74 68 61 74 20 64 6f 65 73 rstd " that does
11f0: 20 6e 6f 74 20 65 78 69 73 74 2e 20 41 74 74 65 not exist. Atte
1200: 6d 70 74 69 6e 67 20 74 6f 20 63 72 65 61 74 65 mpting to create
1210: 20 69 74 2e 2e 2e 5c 6e 22 29 0a 09 20 20 28 63 it...\n").. (c
1220: 72 65 61 74 65 2d 64 69 72 65 63 74 6f 72 79 20 reate-directory
1230: 66 69 72 73 74 64 20 23 74 29 29 29 0a 0a 20 20 firstd #t)))..
1240: 20 20 28 70 72 69 6e 74 0a 20 20 20 20 20 22 3d (print. "=
1250: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1260: 3d 0a 0a 4d 65 67 61 74 65 73 74 20 75 73 65 73 =..Megatest uses
1270: 20 61 20 74 72 65 65 20 6f 66 20 73 79 6d 6c 69 a tree of symli
1280: 6e 6b 73 20 74 6f 20 70 72 6f 76 69 64 65 20 61 nks to provide a
1290: 20 75 6e 69 66 6f 72 6d 20 73 74 72 75 63 74 75 uniform structu
12a0: 72 65 20 66 6f 72 20 66 69 6e 64 69 6e 67 20 61 re for finding a
12b0: 6c 6c 20 74 68 65 20 74 65 73 74 73 0a 79 6f 75 ll the tests.you
12c0: 20 72 75 6e 20 6f 76 65 72 20 74 69 6d 65 2e 20 run over time.
12d0: 50 6c 65 61 73 65 20 70 72 6f 76 69 64 65 20 61 Please provide a
12e0: 20 70 61 74 68 20 77 68 65 72 65 20 77 65 20 63 path where we c
12f0: 61 6e 20 63 72 65 61 74 65 20 74 68 69 73 20 6c an create this l
1300: 69 6e 6b 20 74 72 65 65 2e 0a 0a 22 29 0a 20 20 ink tree...").
1310: 20 20 28 64 69 73 70 6c 61 79 20 22 45 6e 74 65 (display "Ente
1320: 72 20 6c 69 6e 6b 20 74 72 65 65 20 64 69 72 65 r link tree dire
1330: 63 74 6f 72 79 3a 20 22 29 0a 20 20 20 20 28 73 ctory: "). (s
1340: 65 74 21 20 6c 6e 74 72 65 65 20 28 72 65 61 64 et! lntree (read
1350: 2d 6c 69 6e 65 29 29 0a 20 20 20 20 28 69 66 20 -line)). (if
1360: 28 6e 6f 74 20 28 64 69 72 65 63 74 6f 72 79 3f (not (directory?
1370: 20 6c 6e 74 72 65 65 29 29 0a 09 28 62 65 67 69 lntree))..(begi
1380: 6e 0a 09 20 20 28 70 72 69 6e 74 20 22 57 41 52 n.. (print "WAR
1390: 4e 49 4e 47 3a 20 79 6f 75 20 68 61 76 65 20 73 NING: you have s
13a0: 70 65 63 69 66 69 65 64 20 61 20 70 61 74 68 20 pecified a path
13b0: 22 20 6c 6e 74 72 65 65 20 22 74 68 61 74 20 64 " lntree "that d
13c0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 20 41 oes not exist. A
13d0: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 72 65 ttempting to cre
13e0: 61 74 65 20 69 74 2e 2e 2e 5c 6e 22 29 0a 09 20 ate it...\n")..
13f0: 20 28 63 72 65 61 74 65 2d 64 69 72 65 63 74 6f (create-directo
1400: 72 79 20 6c 6e 74 72 65 65 20 23 74 29 29 29 0a ry lntree #t))).
1410: 20 20 20 20 0a 20 20 20 20 28 77 69 74 68 2d 6f . (with-o
1420: 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 63 utput-to-file (c
1430: 6f 6e 63 20 70 61 74 68 20 22 2f 6d 65 67 61 74 onc path "/megat
1440: 65 73 74 2e 63 6f 6e 66 69 67 22 29 0a 20 20 20 est.config").
1450: 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 09 28 (lambda ()..(
1460: 70 72 69 6e 74 20 22 23 20 54 68 69 73 20 61 72 print "# This ar
1470: 65 61 20 75 73 65 73 20 4d 65 67 61 74 65 73 74 ea uses Megatest
1480: 2e 20 4c 65 61 72 6e 20 6d 6f 72 65 20 61 74 20 . Learn more at
1490: 68 74 74 70 3a 2f 2f 77 77 77 2e 6b 69 61 74 6f http://www.kiato
14a0: 61 2e 63 6f 6d 2f 66 6f 73 73 69 6c 73 2f 6d 65 a.com/fossils/me
14b0: 67 61 74 65 73 74 2e 22 29 0a 09 28 70 72 69 6e gatest.")..(prin
14c0: 74 20 22 23 5c 6e 22 29 0a 09 28 70 72 69 6e 74 t "#\n")..(print
14d0: 20 22 5b 66 69 65 6c 64 73 5d 22 29 0a 09 28 6d "[fields]")..(m
14e0: 61 70 20 28 6c 61 6d 62 64 61 20 28 6b 29 28 70 ap (lambda (k)(p
14f0: 72 69 6e 74 20 6b 20 22 20 54 45 58 54 22 29 29 rint k " TEXT"))
1500: 20 6b 65 79 73 29 0a 09 28 70 72 69 6e 74 20 22 keys)..(print "
1510: 22 29 0a 09 28 70 72 69 6e 74 20 22 5b 73 65 74 ")..(print "[set
1520: 75 70 5d 22 29 0a 09 28 70 72 69 6e 74 20 22 23 up]")..(print "#
1530: 20 41 64 6a 75 73 74 20 6d 61 78 5f 63 6f 6e 63 Adjust max_conc
1540: 75 72 72 65 6e 74 5f 6a 6f 62 73 20 74 6f 20 6c urrent_jobs to l
1550: 69 6d 69 74 20 68 6f 77 20 6d 75 63 68 20 79 6f imit how much yo
1560: 75 20 6c 6f 61 64 20 79 6f 75 72 20 6d 61 63 68 u load your mach
1570: 69 6e 65 73 22 29 0a 09 28 70 72 69 6e 74 20 22 ines")..(print "
1580: 6d 61 78 5f 63 6f 6e 63 75 72 72 65 6e 74 5f 6a max_concurrent_j
1590: 6f 62 73 20 35 30 5c 6e 22 29 0a 09 28 70 72 69 obs 50\n")..(pri
15a0: 6e 74 20 22 23 20 54 68 69 73 20 69 73 20 79 6f nt "# This is yo
15b0: 75 72 20 6c 69 6e 6b 20 70 61 74 68 2e 20 41 76 ur link path. Av
15c0: 6f 69 64 20 6d 6f 76 69 6e 67 20 69 74 20 6f 6e oid moving it on
15d0: 63 65 20 73 65 74 2e 22 29 0a 09 28 70 72 69 6e ce set.")..(prin
15e0: 74 20 22 6c 69 6e 6b 74 72 65 65 20 22 20 28 63 t "linktree " (c
15f0: 6f 6d 6d 6f 6e 3a 72 65 61 6c 2d 70 61 74 68 20 ommon:real-path
1600: 6c 6e 74 72 65 65 29 29 0a 09 28 70 72 69 6e 74 lntree))..(print
1610: 20 22 5c 6e 23 20 4a 6f 62 20 74 6f 6f 6c 73 20 "\n# Job tools
1620: 61 72 65 20 6d 6f 72 65 20 61 64 76 61 6e 63 65 are more advance
1630: 64 20 77 61 79 73 20 74 6f 20 63 6f 6e 74 72 6f d ways to contro
1640: 6c 20 68 6f 77 20 79 6f 75 72 20 6a 6f 62 73 20 l how your jobs
1650: 61 72 65 20 6c 61 75 6e 63 68 65 64 22 29 0a 09 are launched")..
1660: 28 70 72 69 6e 74 20 22 5b 6a 6f 62 74 6f 6f 6c (print "[jobtool
1670: 73 5d 5c 6e 75 73 65 73 68 65 6c 6c 20 79 65 73 s]\nuseshell yes
1680: 5c 6e 6c 61 75 6e 63 68 65 72 20 6e 62 66 61 6b \nlauncher nbfak
1690: 65 5c 6e 6d 61 78 6c 6f 61 64 20 31 2e 35 5c 6e e\nmaxload 1.5\n
16a0: 22 29 0a 09 28 70 72 69 6e 74 20 22 23 20 59 6f ")..(print "# Yo
16b0: 75 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 65 u can override e
16c0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 nvironment varia
16d0: 62 6c 65 73 20 66 6f 72 20 61 6c 6c 20 79 6f 75 bles for all you
16e0: 72 20 74 65 73 74 73 20 68 65 72 65 22 29 0a 09 r tests here")..
16f0: 28 70 72 69 6e 74 20 22 5b 65 6e 76 2d 6f 76 65 (print "[env-ove
1700: 72 72 69 64 65 5d 5c 6e 45 58 41 4d 50 4c 45 5f rride]\nEXAMPLE_
1710: 56 41 52 20 65 78 61 6d 70 6c 65 20 76 61 6c 75 VAR example valu
1720: 65 5c 6e 22 29 0a 09 28 70 72 69 6e 74 20 22 23 e\n")..(print "#
1730: 20 41 73 20 79 6f 75 20 72 75 6e 20 6d 6f 72 65 As you run more
1740: 20 74 65 73 74 73 20 79 6f 75 20 6d 61 79 20 6e tests you may n
1750: 65 65 64 20 74 6f 20 61 64 64 20 61 64 64 69 74 eed to add addit
1760: 69 6f 6e 61 6c 20 64 69 73 6b 73 2c 20 74 68 65 ional disks, the
1770: 20 6e 61 6d 65 73 20 61 72 65 20 61 72 62 69 74 names are arbit
1780: 72 61 72 79 20 62 75 74 20 6d 75 73 74 20 62 65 rary but must be
1790: 20 75 6e 69 71 75 65 22 29 0a 09 28 70 72 69 6e unique")..(prin
17a0: 74 20 22 5b 64 69 73 6b 73 5d 5c 6e 64 69 73 6b t "[disks]\ndisk
17b0: 30 20 22 20 28 63 6f 6d 6d 6f 6e 3a 72 65 61 6c 0 " (common:real
17c0: 2d 70 61 74 68 20 66 69 72 73 74 64 29 29 29 29 -path firstd))))
17d0: 0a 0a 20 20 20 20 28 70 72 69 6e 74 0a 20 20 20 .. (print.
17e0: 20 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "=============
17f0: 3d 3d 3d 3d 3d 0a 0a 49 27 6d 20 6e 6f 77 20 63 =====..I'm now c
1800: 72 65 61 74 69 6e 67 20 61 20 72 75 6e 63 6f 6e reating a runcon
1810: 66 69 67 73 2e 63 6f 6e 66 69 67 20 66 69 6c 65 figs.config file
1820: 20 66 6f 72 20 79 6f 75 20 77 69 74 68 20 61 20 for you with a
1830: 64 65 66 61 75 6c 74 20 73 65 63 74 69 6f 6e 2e default section.
1840: 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 .You can use thi
1850: 73 20 66 69 6c 65 20 74 6f 20 73 65 74 20 76 61 s file to set va
1860: 72 69 61 62 6c 65 73 20 66 6f 72 20 79 6f 75 72 riables for your
1870: 20 74 65 73 74 73 20 62 61 73 65 64 20 6f 6e 20 tests based on
1880: 74 68 65 20 5c 22 74 61 72 67 65 74 5c 22 20 28 the \"target\" (
1890: 74 68 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 0a the combination.
18a0: 6f 66 20 6b 65 79 73 29 2e 0a 0a 22 29 0a 20 20 of keys)...").
18b0: 20 20 28 77 69 74 68 2d 6f 75 74 70 75 74 2d 74 (with-output-t
18c0: 6f 2d 66 69 6c 65 20 28 63 6f 6e 63 20 70 61 74 o-file (conc pat
18d0: 68 20 22 2f 72 75 6e 63 6f 6e 66 69 67 73 2e 63 h "/runconfigs.c
18e0: 6f 6e 66 69 67 22 29 0a 20 20 20 20 20 20 28 6c onfig"). (l
18f0: 61 6d 62 64 61 20 28 29 0a 09 28 70 72 69 6e 74 ambda ()..(print
1900: 20 22 23 20 54 68 65 20 76 61 72 69 61 62 6c 65 "# The variable
1910: 73 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74 s in the default
1920: 20 63 61 74 65 67 6f 72 79 20 77 69 6c 6c 20 62 category will b
1930: 65 20 73 65 65 6e 20 69 6e 20 61 6c 6c 20 72 75 e seen in all ru
1940: 6e 73 5c 6e 5b 64 65 66 61 75 6c 74 5d 5c 6e 41 ns\n[default]\nA
1950: 4c 4c 54 45 53 54 53 20 73 65 65 20 74 68 69 73 LLTESTS see this
1960: 20 76 61 72 69 61 62 6c 65 5c 6e 22 29 0a 09 0a variable\n")...
1970: 09 28 70 72 69 6e 74 20 22 23 20 59 6f 75 72 20 .(print "# Your
1980: 76 61 72 69 61 62 6c 65 73 20 68 65 72 65 20 61 variables here a
1990: 72 65 20 67 72 6f 75 70 65 64 20 62 79 20 74 61 re grouped by ta
19a0: 72 67 65 74 73 20 5b 22 20 28 73 74 72 69 6e 67 rgets [" (string
19b0: 2d 69 6e 74 65 72 73 70 65 72 73 65 20 6b 65 79 -intersperse key
19c0: 73 20 22 2f 22 29 20 22 5d 22 29 0a 09 28 6c 65 s "/") "]")..(le
19d0: 74 20 28 28 65 78 61 6d 70 6c 65 2d 74 61 72 67 t ((example-targ
19e0: 65 74 20 28 73 74 72 69 6e 67 2d 69 6e 74 65 72 et (string-inter
19f0: 73 70 65 72 73 65 20 28 6d 61 70 20 28 6c 61 6d sperse (map (lam
1a00: 62 64 61 20 28 6b 29 28 63 6f 6e 63 20 6b 20 22 bda (k)(conc k "
1a10: 5f 76 61 6c 22 29 29 20 6b 65 79 73 29 20 22 2f _val")) keys) "/
1a20: 22 29 29 29 0a 09 20 20 28 70 72 69 6e 74 20 22 "))).. (print "
1a30: 5b 22 20 65 78 61 6d 70 6c 65 2d 74 61 72 67 65 [" example-targe
1a40: 74 20 22 5d 22 29 0a 09 20 20 28 70 72 69 6e 74 t "]").. (print
1a50: 20 22 41 4e 4f 54 48 45 52 56 41 52 20 6f 6e 6c "ANOTHERVAR onl
1a60: 79 20 64 65 66 69 6e 65 64 20 69 66 20 74 61 72 y defined if tar
1a70: 67 65 74 20 69 73 20 22 20 65 78 61 6d 70 6c 65 get is " example
1a80: 2d 74 61 72 67 65 74 29 29 0a 09 28 70 72 69 6e -target))..(prin
1a90: 74 20 22 5c 6e 23 20 49 74 20 63 61 6e 20 62 65 t "\n# It can be
1aa0: 20 68 61 6e 64 79 20 74 6f 20 69 6e 63 6c 75 64 handy to includ
1ab0: 65 20 61 20 66 69 6c 65 20 62 61 73 65 64 20 6f e a file based o
1ac0: 6e 20 74 68 65 20 75 73 65 72 73 20 75 6e 69 78 n the users unix
1ad0: 20 75 73 65 72 6e 61 6d 65 2e 5c 6e 22 0a 09 20 username.\n"..
1ae0: 20 20 20 20 20 20 22 23 20 54 6f 20 70 72 65 76 "# To prev
1af0: 65 6e 74 20 63 6c 75 74 74 65 72 69 6e 67 20 75 ent cluttering u
1b00: 70 20 74 68 65 20 74 6f 70 20 6c 65 76 65 6c 20 p the top level
1b10: 64 69 72 65 63 74 6f 72 79 20 77 65 27 6c 6c 20 directory we'll
1b20: 70 75 74 20 74 68 69 73 20 66 69 6c 65 5c 6e 23 put this file\n#
1b30: 20 69 6e 20 61 20 64 69 72 65 63 74 6f 72 79 20 in a directory
1b40: 63 61 6c 6c 65 64 20 5c 22 63 6f 6e 66 69 67 73 called \"configs
1b50: 5c 22 2e 22 29 0a 09 28 70 72 69 6e 74 20 22 5b \".")..(print "[
1b60: 69 6e 63 6c 75 64 65 20 23 7b 67 65 74 65 6e 76 include #{getenv
1b70: 20 55 53 45 52 7d 2e 63 6f 6e 66 69 67 5d 22 29 USER}.config]")
1b80: 0a 09 29 29 0a 0a 20 20 20 20 28 63 72 65 61 74 ..)).. (creat
1b90: 65 2d 64 69 72 65 63 74 6f 72 79 20 28 63 6f 6e e-directory (con
1ba0: 63 20 70 61 74 68 20 22 2f 63 6f 6e 66 69 67 73 c path "/configs
1bb0: 22 29 20 23 74 29 0a 20 20 20 20 28 77 69 74 68 ") #t). (with
1bc0: 2d 6f 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 -output-to-file
1bd0: 28 63 6f 6e 63 20 70 61 74 68 20 22 2f 63 6f 6e (conc path "/con
1be0: 66 69 67 73 2f 22 20 28 63 75 72 72 65 6e 74 2d figs/" (current-
1bf0: 75 73 65 72 2d 6e 61 6d 65 29 20 22 2e 63 6f 6e user-name) ".con
1c00: 66 69 67 22 29 0a 20 20 20 20 20 20 28 6c 61 6d fig"). (lam
1c10: 62 64 61 20 28 29 0a 09 28 70 72 69 6e 74 20 22 bda ()..(print "
1c20: 23 20 4f 76 65 72 72 69 64 65 20 73 65 74 74 69 # Override setti
1c30: 6e 67 73 20 69 6e 20 2e 2e 2f 72 75 6e 63 6f 6e ngs in ../runcon
1c40: 66 69 67 73 2e 63 6f 6e 66 69 67 20 66 6f 72 20 figs.config for
1c50: 75 73 65 72 20 22 20 28 63 75 72 72 65 6e 74 2d user " (current-
1c60: 75 73 65 72 2d 6e 61 6d 65 29 20 22 20 68 65 72 user-name) " her
1c70: 65 2e 22 29 29 29 0a 20 20 20 20 0a 20 20 20 20 e."))). .
1c80: 3b 3b 20 4e 6f 77 20 63 72 65 61 74 65 20 61 20 ;; Now create a
1c90: 74 65 73 74 20 61 6e 64 20 6c 6f 67 70 72 6f 20 test and logpro
1ca0: 66 69 6c 65 0a 20 20 20 20 28 70 72 69 6e 74 0a file. (print.
1cb0: 20 20 20 20 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "==========
1cc0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 59 6f 75 20 6e 6f ========..You no
1cd0: 77 20 68 61 76 65 20 74 68 65 20 62 61 73 69 63 w have the basic
1ce0: 20 63 6f 6d 6d 6f 6e 20 66 69 6c 65 73 20 66 6f common files fo
1cf0: 72 20 79 6f 75 72 20 6d 65 67 61 74 65 73 74 20 r your megatest
1d00: 73 65 74 75 70 2e 20 4e 65 78 74 20 72 75 6e 0a setup. Next run.
1d10: 5c 22 6d 65 67 61 74 65 73 74 20 2d 67 65 6e 2d \"megatest -gen-
1d20: 74 65 73 74 5c 22 20 74 6f 20 63 72 65 61 74 65 test\" to create
1d30: 20 61 20 74 65 73 74 2e 0a 0a 54 68 61 6e 6b 20 a test...Thank
1d40: 79 6f 75 20 66 6f 72 20 75 73 69 6e 67 20 4d 65 you for using Me
1d50: 67 61 74 65 73 74 2e 20 0a 0a 59 6f 75 20 63 61 gatest. ..You ca
1d60: 6e 20 65 64 69 74 20 79 6f 75 72 20 63 6f 6e 66 n edit your conf
1d70: 69 67 20 66 69 6c 65 73 20 61 6e 64 20 63 72 65 ig files and cre
1d80: 61 74 65 20 74 65 73 74 73 20 69 6e 20 74 68 65 ate tests in the
1d90: 20 22 20 70 61 74 68 20 22 20 64 69 72 65 63 74 " path " direct
1da0: 6f 72 79 0a 0a 22 29 29 29 0a 0a 0a 3b 3b 3d 3d ory..")))...;;==
1db0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1dc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1df0: 3d 3d 3d 3d 0a 3b 3b 20 63 72 65 61 74 65 20 73 ====.;; create s
1e00: 6b 65 6c 65 74 6f 6e 20 66 69 6c 65 73 20 66 6f keleton files fo
1e10: 72 20 61 20 74 65 73 74 0a 3b 3b 3d 3d 3d 3d 3d r a test.;;=====
1e20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e60: 3d 0a 0a 28 64 65 66 69 6e 65 20 28 67 65 6e 65 =..(define (gene
1e70: 78 61 6d 70 6c 65 3a 6d 6b 2d 6d 65 67 61 74 65 xample:mk-megate
1e80: 73 74 2d 74 65 73 74 20 74 65 73 74 6e 61 6d 65 st-test testname
1e90: 29 0a 20 20 3b 3b 20 47 61 74 68 65 72 20 6e 65 ). ;; Gather ne
1ea0: 65 64 65 64 20 64 61 74 61 0a 20 20 28 6c 65 74 eded data. (let
1eb0: 20 28 28 77 61 69 74 6f 6e 20 20 20 23 66 29 0a ((waiton #f).
1ec0: 09 28 70 72 69 6f 72 69 74 79 20 23 66 29 0a 09 .(priority #f)..
1ed0: 28 64 65 73 63 72 69 70 74 69 6f 6e 20 23 66 29 (description #f)
1ee0: 0a 09 28 73 74 65 70 73 20 20 20 20 27 28 29 29 ..(steps '())
1ef0: 0a 09 28 73 63 72 69 70 74 73 20 20 27 28 29 29 ..(scripts '())
1f00: 0a 09 28 69 74 65 6d 73 20 20 20 20 27 28 29 29 ..(items '())
1f10: 0a 09 28 72 65 6c 2d 70 61 74 68 20 23 66 29 29 ..(rel-path #f))
1f20: 0a 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 .. (cond.
1f30: 20 28 28 66 69 6c 65 2d 65 78 69 73 74 73 3f 20 ((file-exists?
1f40: 22 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 "megatest.config
1f50: 22 29 20 20 20 20 20 20 20 20 20 28 73 65 74 21 ") (set!
1f60: 20 72 65 6c 2d 70 61 74 68 20 22 2e 2f 22 29 29 rel-path "./"))
1f70: 0a 20 20 20 20 20 28 28 66 69 6c 65 2d 65 78 69 . ((file-exi
1f80: 73 74 73 3f 20 22 2e 2e 2f 6d 65 67 61 74 65 73 sts? "../megates
1f90: 74 2e 63 6f 6e 66 69 67 22 29 20 20 20 20 20 20 t.config")
1fa0: 28 73 65 74 21 20 72 65 6c 2d 70 61 74 68 20 22 (set! rel-path "
1fb0: 2e 2e 2f 22 29 29 0a 20 20 20 20 20 28 28 66 69 ../")). ((fi
1fc0: 6c 65 2d 65 78 69 73 74 73 3f 20 22 2e 2e 2f 2e le-exists? "../.
1fd0: 2e 2f 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 ./megatest.confi
1fe0: 67 22 29 20 20 20 28 73 65 74 21 20 72 65 6c 2d g") (set! rel-
1ff0: 70 61 74 68 20 22 2e 2e 2f 2e 2e 2f 22 29 29 0a path "../../")).
2000: 20 20 20 20 20 28 28 66 69 6c 65 2d 65 78 69 73 ((file-exis
2010: 74 73 3f 20 22 2e 2e 2f 2e 2e 2f 2e 2e 2f 6d 65 ts? "../../../me
2020: 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 22 29 28 gatest.config")(
2030: 73 65 74 21 20 72 65 6c 2d 70 61 74 68 20 22 2e set! rel-path ".
2040: 2e 2f 2e 2e 2f 2e 2e 2f 22 29 29 29 20 3b 3b 20 ./../../"))) ;;
2050: 67 6f 6f 64 20 65 6e 6f 75 67 68 20 64 61 6e 67 good enough dang
2060: 20 69 74 2e 0a 0a 20 20 20 20 3b 3b 20 44 6f 6e it... ;; Don
2070: 27 74 20 67 61 74 68 65 72 20 64 61 74 61 20 6f 't gather data o
2080: 72 20 63 6f 6e 74 69 6e 75 65 20 69 66 20 61 29 r continue if a)
2090: 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 megatest.config
20a0: 20 63 61 6e 27 74 20 62 65 20 66 6f 75 6e 64 20 can't be found
20b0: 6f 72 20 62 29 20 74 65 73 74 63 6f 6e 66 69 67 or b) testconfig
20c0: 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 0a already exists.
20d0: 20 20 20 20 28 69 66 20 28 6e 6f 74 20 72 65 6c (if (not rel
20e0: 2d 70 61 74 68 29 0a 09 28 62 65 67 69 6e 0a 09 -path)..(begin..
20f0: 20 20 28 70 72 69 6e 74 20 22 45 52 52 4f 52 3a (print "ERROR:
2100: 20 49 20 63 6f 75 6c 64 20 6e 6f 74 20 66 69 6e I could not fin
2110: 64 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 d megatest.confi
2120: 67 2c 20 70 6c 65 61 73 65 20 72 75 6e 20 2d 63 g, please run -c
2130: 72 65 61 74 65 2d 74 65 73 74 20 69 6e 20 74 68 reate-test in th
2140: 65 20 74 6f 70 20 64 69 72 20 6f 66 20 79 6f 75 e top dir of you
2150: 72 20 6d 65 67 61 74 65 73 74 20 61 72 65 61 22 r megatest area"
2160: 29 0a 09 20 20 28 65 78 69 74 20 31 29 29 29 0a ).. (exit 1))).
2170: 0a 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 65 . (if (file-e
2180: 78 69 73 74 73 3f 20 28 63 6f 6e 63 20 72 65 6c xists? (conc rel
2190: 2d 70 61 74 68 20 22 74 65 73 74 73 2f 22 20 74 -path "tests/" t
21a0: 65 73 74 6e 61 6d 65 20 22 2f 74 65 73 74 63 6f estname "/testco
21b0: 6e 66 69 67 22 29 29 0a 09 28 62 65 67 69 6e 0a nfig"))..(begin.
21c0: 09 20 20 28 70 72 69 6e 74 20 22 57 41 52 4e 49 . (print "WARNI
21d0: 4e 47 3a 20 59 6f 75 20 61 6c 72 65 61 64 79 20 NG: You already
21e0: 68 61 76 65 20 61 20 74 65 73 74 63 6f 6e 66 69 have a testconfi
21f0: 67 20 69 6e 20 22 20 72 65 6c 2d 70 61 74 68 20 g in " rel-path
2200: 22 74 65 73 74 73 2f 22 20 74 65 73 74 6e 61 6d "tests/" testnam
2210: 65 20 22 2c 20 64 6f 20 79 6f 75 20 77 61 6e 74 e ", do you want
2220: 20 74 6f 20 63 6c 6f 62 62 65 72 20 79 6f 75 72 to clobber your
2230: 20 66 69 6c 65 73 3f 22 29 0a 09 20 20 28 64 69 files?").. (di
2240: 73 70 6c 61 79 20 22 45 6e 74 65 72 20 79 2f 6e splay "Enter y/n
2250: 3a 20 22 29 0a 09 20 20 28 69 66 20 28 6e 6f 74 : ").. (if (not
2260: 20 28 65 71 75 61 6c 3f 20 22 79 22 20 28 72 65 (equal? "y" (re
2270: 61 64 2d 6c 69 6e 65 29 29 29 0a 09 20 20 20 20 ad-line)))..
2280: 20 20 28 62 65 67 69 6e 0a 09 09 28 70 72 69 6e (begin...(prin
2290: 74 20 22 49 4e 46 4f 3a 20 75 73 65 72 20 61 62 t "INFO: user ab
22a0: 6f 72 74 20 6f 66 20 63 72 65 61 74 69 6f 6e 20 ort of creation
22b0: 6f 66 20 74 65 73 74 20 22 20 74 65 73 74 6e 61 of test " testna
22c0: 6d 65 29 0a 09 09 28 65 78 69 74 20 31 29 29 29 me)...(exit 1)))
22d0: 29 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 20 22 )).. (print "
22e0: 57 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 We are going to
22f0: 67 65 6e 65 72 61 74 65 20 61 20 73 6b 65 6c 65 generate a skele
2300: 74 6f 6e 20 73 65 74 20 6f 66 20 66 69 6c 65 73 ton set of files
2310: 20 66 6f 72 20 79 6f 75 72 20 74 65 73 74 20 22 for your test "
2320: 20 74 65 73 74 6e 61 6d 65 20 22 5c 6e 22 0a 09 testname "\n"..
2330: 20 20 20 22 20 2a 2a 2a 20 4e 6f 74 65 3a 20 64 " *** Note: d
2340: 6f 20 6e 6f 74 20 77 6f 72 72 79 20 74 6f 6f 20 o not worry too
2350: 6d 75 63 68 20 61 62 6f 75 74 20 74 79 70 6f 73 much about typos
2360: 2c 20 79 6f 75 20 63 61 6e 20 65 64 69 74 20 74 , you can edit t
2370: 68 65 20 66 69 6c 65 73 20 63 72 65 61 74 65 64 he files created
2380: 20 77 68 65 6e 20 79 6f 75 20 61 72 65 20 64 6f when you are do
2390: 6e 65 2e 22 29 0a 0a 20 20 20 20 28 70 72 69 6e ne.").. (prin
23a0: 74 20 22 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d t "\n===========
23b0: 3d 3d 3d 3d 3d 3d 3d 5c 6e 50 6c 65 61 73 65 20 =======\nPlease
23c0: 64 65 73 63 72 69 62 65 20 74 68 69 73 20 74 65 describe this te
23d0: 73 74 2e 20 54 68 65 20 64 65 73 63 72 69 70 74 st. The descript
23e0: 69 6f 6e 20 77 69 6c 6c 20 62 65 20 76 69 73 69 ion will be visi
23f0: 62 6c 65 20 69 6e 20 76 61 72 69 6f 75 73 20 64 ble in various d
2400: 69 61 6c 6f 67 73 20 61 6e 64 20 72 65 70 6f 72 ialogs and repor
2410: 74 73 22 29 0a 20 20 20 20 28 64 69 73 70 6c 61 ts"). (displa
2420: 79 20 22 45 6e 74 65 72 20 6f 6e 65 20 6c 69 6e y "Enter one lin
2430: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 66 6f e description fo
2440: 72 20 74 68 69 73 20 74 65 73 74 3a 20 22 29 0a r this test: ").
2450: 20 20 20 20 28 73 65 74 21 20 64 65 73 63 72 69 (set! descri
2460: 70 74 69 6f 6e 20 28 72 65 61 64 2d 6c 69 6e 65 ption (read-line
2470: 29 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 20 22 )).. (print "
2480: 5c 6e 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d \n\n============
2490: 3d 3d 3d 3d 3d 3d 5c 6e 44 6f 65 73 20 74 68 69 ======\nDoes thi
24a0: 73 20 74 65 73 74 2c 20 22 20 74 65 73 74 6e 61 s test, " testna
24b0: 6d 65 20 22 2c 20 72 65 71 75 69 72 65 20 61 6e me ", require an
24c0: 79 20 6f 74 68 65 72 20 74 65 73 74 20 62 65 20 y other test be
24d0: 72 75 6e 20 70 72 69 6f 72 20 74 6f 20 6c 61 75 run prior to lau
24e0: 6e 63 68 3f 22 29 0a 20 20 20 20 28 64 69 73 70 nch?"). (disp
24f0: 6c 61 79 20 28 63 6f 6e 63 20 22 45 6e 74 65 72 lay (conc "Enter
2500: 20 73 70 61 63 65 20 64 65 6c 69 6d 69 74 65 64 space delimited
2510: 20 6c 69 73 74 20 6f 66 20 74 65 73 74 73 20 77 list of tests w
2520: 68 69 63 68 20 22 20 74 65 73 74 6e 61 6d 65 20 hich " testname
2530: 22 20 6d 75 73 74 20 77 61 69 74 20 66 6f 72 20 " must wait for
2540: 28 64 65 66 61 75 6c 74 20 69 73 20 6e 6f 20 77 (default is no w
2550: 61 69 74 6f 6e 29 3a 20 22 29 29 0a 20 20 20 20 aiton): ")).
2560: 28 73 65 74 21 20 77 61 69 74 6f 6e 20 28 72 65 (set! waiton (re
2570: 61 64 2d 6c 69 6e 65 29 29 0a 0a 20 20 20 20 28 ad-line)).. (
2580: 70 72 69 6e 74 20 22 5c 6e 5c 6e 3d 3d 3d 3d 3d print "\n\n=====
2590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 44 =============\nD
25a0: 6f 20 79 6f 75 20 77 69 73 68 20 74 6f 20 70 72 o you wish to pr
25b0: 69 6f 72 69 74 69 7a 65 20 74 68 65 20 72 75 6e ioritize the run
25c0: 6e 69 6e 67 20 6f 66 20 74 68 69 73 20 74 65 73 ning of this tes
25d0: 74 20 6f 76 65 72 20 6f 74 68 65 72 20 74 65 73 t over other tes
25e0: 74 73 3f 20 49 66 20 73 6f 22 29 0a 20 20 20 20 ts? If so").
25f0: 28 70 72 69 6e 74 20 22 65 6e 74 65 72 20 61 20 (print "enter a
2600: 6e 75 6d 62 65 72 20 67 72 65 61 74 65 72 20 74 number greater t
2610: 68 61 6e 20 7a 65 72 6f 20 68 65 72 65 22 29 0a han zero here").
2620: 20 20 20 20 28 64 69 73 70 6c 61 79 20 22 45 6e (display "En
2630: 74 65 72 20 61 20 70 72 69 6f 72 69 74 79 20 6f ter a priority o
2640: 66 20 30 20 28 64 65 66 61 75 6c 74 29 20 6f 72 f 0 (default) or
2650: 20 68 69 67 68 65 72 3a 20 22 29 0a 20 20 20 20 higher: ").
2660: 28 73 65 74 21 20 70 72 69 6f 72 69 74 79 20 28 (set! priority (
2670: 72 65 61 64 2d 6c 69 6e 65 29 29 0a 0a 20 20 20 read-line))..
2680: 20 3b 3b 20 47 65 74 20 74 68 65 20 73 74 65 70 ;; Get the step
2690: 73 0a 20 20 20 20 28 70 72 69 6e 74 20 22 5c 6e s. (print "\n
26a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
26b0: 3d 3d 5c 6e 4e 6f 77 20 74 6f 20 65 6e 74 65 72 ==\nNow to enter
26c0: 20 74 68 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 the one or more
26d0: 20 73 74 65 70 73 20 74 68 61 74 20 6d 61 6b 65 steps that make
26e0: 20 75 70 20 79 6f 75 72 20 74 65 73 74 2c 20 6e up your test, n
26f0: 6f 74 65 3b 20 79 6f 75 20 63 61 6e 20 61 64 64 ote; you can add
2700: 20 6d 6f 72 65 20 6c 61 74 65 72 22 29 0a 20 20 more later").
2710: 20 20 28 70 72 69 6e 74 20 22 48 69 6e 74 3b 20 (print "Hint;
2720: 75 73 65 20 2e 73 68 20 65 78 74 65 6e 73 69 6f use .sh extensio
2730: 6e 20 6f 6e 20 74 68 65 20 73 63 72 69 70 74 20 n on the script
2740: 6e 61 6d 65 73 20 61 6e 64 20 77 65 27 6c 6c 20 names and we'll
2750: 63 72 65 61 74 65 20 61 20 70 6c 61 63 65 68 6f create a placeho
2760: 6c 64 65 72 20 73 63 72 69 70 74 2e 22 0a 0a 20 lder script."..
2770: 20 20 20 28 6c 65 74 20 28 28 73 74 65 70 6e 61 (let ((stepna
2780: 6d 65 20 20 20 23 66 29 0a 09 20 20 28 73 63 72 me #f).. (scr
2790: 69 70 74 6e 61 6d 65 20 23 66 29 29 0a 20 20 20 iptname #f)).
27a0: 20 20 20 28 6c 65 74 20 6c 6f 6f 70 20 28 28 64 (let loop ((d
27b0: 6f 6e 65 20 23 66 29 29 0a 09 28 64 69 73 70 6c one #f))..(displ
27c0: 61 79 20 22 45 6e 74 65 72 20 74 68 65 20 6e 61 ay "Enter the na
27d0: 6d 65 20 66 6f 72 20 74 68 69 73 20 73 74 65 70 me for this step
27e0: 20 28 62 6c 61 6e 6b 20 74 6f 20 73 74 6f 70 29 (blank to stop)
27f0: 3a 20 22 29 0a 09 28 73 65 74 21 20 73 74 65 70 : ")..(set! step
2800: 6e 61 6d 65 20 28 72 65 61 64 2d 6c 69 6e 65 29 name (read-line)
2810: 29 0a 09 28 69 66 20 28 6e 6f 74 20 28 65 71 75 )..(if (not (equ
2820: 61 6c 3f 20 73 74 65 70 6e 61 6d 65 20 22 22 29 al? stepname "")
2830: 29 0a 09 20 20 20 20 28 62 65 67 69 6e 0a 09 20 ).. (begin..
2840: 20 20 20 20 20 28 64 69 73 70 6c 61 79 20 22 45 (display "E
2850: 6e 74 65 72 20 74 68 65 20 73 63 72 69 70 74 20 nter the script
2860: 6f 72 20 70 72 6f 67 61 6d 20 74 6f 20 72 75 6e or progam to run
2870: 3a 20 22 29 0a 09 20 20 20 20 20 20 28 73 65 74 : ").. (set
2880: 21 20 73 63 72 69 70 74 6e 61 6d 65 20 28 72 65 ! scriptname (re
2890: 61 64 2d 6c 69 6e 65 29 29 0a 09 20 20 20 20 20 ad-line))..
28a0: 20 28 73 65 74 21 20 73 74 65 70 73 20 28 61 70 (set! steps (ap
28b0: 70 65 6e 64 20 73 74 65 70 73 20 28 6c 69 73 74 pend steps (list
28c0: 20 28 6c 69 73 74 20 73 74 65 70 6e 61 6d 65 20 (list stepname
28d0: 73 63 72 69 70 74 6e 61 6d 65 29 29 29 29 29 29 scriptname))))))
28e0: 0a 09 28 69 66 20 28 6e 6f 74 20 28 65 71 75 61 ..(if (not (equa
28f0: 6c 3f 20 73 74 65 70 6e 61 6d 65 20 22 22 29 29 l? stepname ""))
2900: 0a 09 20 20 20 20 28 62 65 67 69 6e 0a 09 20 20 .. (begin..
2910: 20 20 20 20 28 70 72 69 6e 74 20 22 41 64 64 65 (print "Adde
2920: 64 20 73 74 65 70 20 22 20 73 74 65 70 6e 61 6d d step " stepnam
2930: 65 20 22 20 74 6f 20 6c 69 73 74 20 6f 66 20 73 e " to list of s
2940: 74 65 70 73 2e 5c 6e 22 29 0a 09 20 20 20 20 20 teps.\n")..
2950: 20 28 6c 6f 6f 70 20 23 66 29 29 29 29 29 0a 0a (loop #f)))))..
2960: 20 20 20 20 3b 3b 20 47 65 74 20 74 68 65 20 69 ;; Get the i
2970: 74 65 6d 73 0a 20 20 20 20 28 70 72 69 6e 74 20 tems. (print
2980: 22 5c 6e 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "\n\n===========
2990: 3d 3d 3d 3d 3d 3d 3d 5c 6e 4e 65 78 74 20 77 65 =======\nNext we
29a0: 20 6e 65 65 64 20 74 6f 20 67 65 74 20 74 68 65 need to get the
29b0: 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 76 variables and v
29c0: 61 6c 75 65 73 20 79 6f 75 20 77 69 73 68 20 74 alues you wish t
29d0: 6f 20 69 74 65 72 61 74 65 20 74 68 69 73 20 74 o iterate this t
29e0: 65 73 74 20 6f 76 65 72 20 28 62 6c 61 6e 6b 20 est over (blank
29f0: 66 6f 72 20 6e 6f 6e 65 29 22 29 0a 20 20 20 20 for none)").
2a00: 28 6c 65 74 20 28 28 76 61 72 6e 61 6d 65 20 23 (let ((varname #
2a10: 66 29 0a 09 20 20 28 76 61 6c 75 65 73 20 20 23 f).. (values #
2a20: 66 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 6c f)). (let l
2a30: 6f 6f 70 20 28 28 64 6f 6e 65 20 23 66 29 29 0a oop ((done #f)).
2a40: 09 28 64 69 73 70 6c 61 79 20 22 45 6e 74 65 72 .(display "Enter
2a50: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 6e 61 the variable na
2a60: 6d 65 3a 20 22 29 0a 09 28 73 65 74 21 20 76 61 me: ")..(set! va
2a70: 72 6e 61 6d 65 20 28 72 65 61 64 2d 6c 69 6e 65 rname (read-line
2a80: 29 29 0a 09 28 69 66 20 28 6e 6f 74 20 28 65 71 ))..(if (not (eq
2a90: 75 61 6c 3f 20 76 61 72 6e 61 6d 65 20 22 22 29 ual? varname "")
2aa0: 29 0a 09 20 20 20 20 28 62 65 67 69 6e 0a 09 20 ).. (begin..
2ab0: 20 20 20 20 20 28 64 69 73 70 6c 61 79 20 28 63 (display (c
2ac0: 6f 6e 63 20 22 45 6e 74 65 72 20 74 68 65 20 73 onc "Enter the s
2ad0: 70 61 63 65 20 73 65 70 61 72 61 74 65 64 20 6c pace separated l
2ae0: 69 73 74 20 6f 66 20 76 61 6c 75 65 73 20 66 6f ist of values fo
2af0: 72 20 22 20 76 61 72 6e 61 6d 65 20 22 3a 20 22 r " varname ": "
2b00: 29 29 0a 09 20 20 20 20 20 20 28 73 65 74 21 20 )).. (set!
2b10: 76 61 6c 75 65 73 20 28 72 65 61 64 2d 6c 69 6e values (read-lin
2b20: 65 29 29 0a 09 20 20 20 20 20 20 28 73 65 74 21 e)).. (set!
2b30: 20 69 74 65 6d 73 20 28 61 70 70 65 6e 64 20 69 items (append i
2b40: 74 65 6d 73 20 28 6c 69 73 74 20 28 63 6f 6e 63 tems (list (conc
2b50: 20 76 61 72 6e 61 6d 65 20 22 20 22 20 76 61 6c varname " " val
2b60: 75 65 73 29 29 29 29 29 29 0a 09 28 69 66 20 28 ues))))))..(if (
2b70: 6e 6f 74 20 28 65 71 75 61 6c 3f 20 76 61 72 6e not (equal? varn
2b80: 61 6d 65 20 22 22 29 29 0a 09 20 20 20 20 28 6c ame "")).. (l
2b90: 6f 6f 70 20 23 66 29 29 29 29 0a 0a 20 20 20 20 oop #f))))..
2ba0: 3b 3b 20 4e 6f 77 20 63 72 65 61 74 65 20 74 68 ;; Now create th
2bb0: 65 20 74 65 73 74 0a 20 20 20 20 28 69 66 20 28 e test. (if (
2bc0: 6e 6f 74 20 72 65 6c 2d 70 61 74 68 29 0a 09 28 not rel-path)..(
2bd0: 62 65 67 69 6e 0a 09 20 20 28 70 72 69 6e 74 20 begin.. (print
2be0: 22 45 52 52 4f 52 3a 20 59 6f 75 20 6d 75 73 74 "ERROR: You must
2bf0: 20 72 75 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e run this comman
2c00: 64 20 69 6e 20 61 20 6d 65 67 61 74 65 73 74 20 d in a megatest
2c10: 61 72 65 61 20 75 6e 64 65 72 20 77 68 65 72 65 area under where
2c20: 20 74 68 65 20 6d 65 67 61 74 65 73 74 2e 63 6f the megatest.co
2c30: 6e 66 69 67 20 66 69 6c 65 20 65 78 69 73 74 73 nfig file exists
2c40: 2e 22 29 0a 09 20 20 28 65 78 69 74 20 31 29 29 .").. (exit 1))
2c50: 0a 09 28 6c 65 74 20 28 28 74 65 73 74 64 69 72 ..(let ((testdir
2c60: 20 28 63 6f 6e 63 20 72 65 6c 2d 70 61 74 68 20 (conc rel-path
2c70: 22 74 65 73 74 73 2f 22 20 74 65 73 74 6e 61 6d "tests/" testnam
2c80: 65 29 29 29 0a 09 20 20 28 63 72 65 61 74 65 2d e))).. (create-
2c90: 64 69 72 65 63 74 6f 72 79 20 74 65 73 74 64 69 directory testdi
2ca0: 72 20 23 74 29 0a 09 20 20 28 77 69 74 68 2d 6f r #t).. (with-o
2cb0: 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 63 utput-to-file (c
2cc0: 6f 6e 63 20 74 65 73 74 64 69 72 20 22 2f 74 65 onc testdir "/te
2cd0: 73 74 63 6f 6e 66 69 67 22 29 0a 09 20 20 20 20 stconfig")..
2ce0: 28 6c 61 6d 62 64 61 20 28 29 0a 09 20 20 20 20 (lambda ()..
2cf0: 20 20 28 70 72 69 6e 74 20 22 23 20 41 64 64 20 (print "# Add
2d00: 61 64 64 69 74 69 6f 6e 61 6c 20 73 74 65 70 73 additional steps
2d10: 20 68 65 72 65 2e 20 46 6f 72 6d 61 74 20 69 73 here. Format is
2d20: 20 5c 22 73 74 65 70 6e 61 6d 65 20 73 63 72 69 \"stepname scri
2d30: 70 74 5c 22 5c 6e 5b 65 7a 73 74 65 70 73 5d 22 pt\"\n[ezsteps]"
2d40: 29 0a 09 20 20 20 20 20 20 28 6d 61 70 20 28 6c ).. (map (l
2d50: 61 6d 62 64 61 20 28 73 74 70 29 28 70 72 69 6e ambda (stp)(prin
2d60: 74 20 28 73 74 72 69 6e 67 2d 69 6e 74 65 72 73 t (string-inters
2d70: 70 65 72 73 65 20 73 74 70 20 22 20 22 29 29 29 perse stp " ")))
2d80: 20 73 74 65 70 73 29 0a 09 20 20 20 20 20 20 28 steps).. (
2d90: 70 72 69 6e 74 20 22 22 29 0a 09 20 20 20 20 20 print "")..
2da0: 20 28 70 72 69 6e 74 20 22 23 20 54 65 73 74 20 (print "# Test
2db0: 72 65 71 75 69 72 65 6d 65 6e 74 73 20 61 72 65 requirements are
2dc0: 20 73 70 65 63 69 66 69 65 64 20 68 65 72 65 5c specified here\
2dd0: 6e 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 22 n[requirements]"
2de0: 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 ).. (print
2df0: 28 69 66 20 28 73 74 72 69 6e 67 2d 6e 75 6c 6c (if (string-null
2e00: 3f 20 77 61 69 74 6f 6e 29 20 22 23 20 22 20 22 ? waiton) "# " "
2e10: 22 29 20 22 77 61 69 74 6f 6e 20 22 20 77 61 69 ") "waiton " wai
2e20: 74 6f 6e 29 0a 09 20 20 20 20 20 20 28 70 72 69 ton).. (pri
2e30: 6e 74 20 22 70 72 69 6f 72 69 74 79 20 22 20 28 nt "priority " (
2e40: 69 66 20 28 73 74 72 69 6e 67 2d 6e 75 6c 6c 3f if (string-null?
2e50: 20 70 72 69 6f 72 69 74 79 29 20 30 20 70 72 69 priority) 0 pri
2e60: 6f 72 69 74 79 29 20 22 5c 6e 22 29 0a 09 20 20 ority) "\n")..
2e70: 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 49 74 (print "# It
2e80: 65 72 61 74 69 6f 6e 20 66 6f 72 20 79 6f 75 72 eration for your
2e90: 20 74 65 73 74 20 69 73 20 63 6f 6e 74 72 6f 6c test is control
2ea0: 6c 65 64 20 62 79 20 74 68 65 20 69 74 65 6d 73 led by the items
2eb0: 20 73 65 63 74 69 6f 6e 5c 6e 5b 69 74 65 6d 73 section\n[items
2ec0: 5d 22 29 0a 09 20 20 20 20 20 20 28 6d 61 70 20 ]").. (map
2ed0: 70 72 69 6e 74 20 69 74 65 6d 73 29 0a 09 20 20 print items)..
2ee0: 20 20 20 20 28 70 72 69 6e 74 20 22 22 29 0a 09 (print "")..
2ef0: 20 20 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 (print "#
2f00: 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 20 79 6f Alternatively yo
2f10: 75 20 63 6f 75 6c 64 20 75 73 65 20 61 20 5b 69 u could use a [i
2f20: 74 65 6d 73 74 61 62 6c 65 5d 20 73 65 63 74 69 temstable] secti
2f30: 6f 6e 22 29 0a 09 20 20 20 20 20 20 28 70 72 69 on").. (pri
2f40: 6e 74 20 22 23 20 5b 69 74 65 6d 73 74 61 62 6c nt "# [itemstabl
2f50: 65 5d 22 29 0a 09 20 20 20 20 20 20 28 70 72 69 e]").. (pri
2f60: 6e 74 20 22 23 20 49 54 45 4d 56 41 52 31 20 20 nt "# ITEMVAR1
2f70: 61 20 20 20 20 62 20 20 20 20 63 22 29 0a 09 20 a b c")..
2f80: 20 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 49 (print "# I
2f90: 54 45 4d 56 41 52 32 20 20 64 20 20 20 20 65 20 TEMVAR2 d e
2fa0: 20 20 20 66 22 29 0a 09 20 20 20 20 20 20 28 70 f").. (p
2fb0: 72 69 6e 74 20 22 23 5c 6e 23 20 77 6f 75 6c 64 rint "#\n# would
2fc0: 20 72 65 73 75 6c 74 20 69 6e 20 69 74 65 6d 73 result in items
2fd0: 3a 20 61 2f 64 20 20 62 2f 65 20 20 20 63 2f 66 : a/d b/e c/f
2fe0: 5c 6e 23 5c 6e 22 29 0a 09 20 20 20 20 20 20 28 \n#\n").. (
2ff0: 70 72 69 6e 74 20 22 23 20 4c 6f 67 70 72 6f 20 print "# Logpro
3000: 72 75 6c 65 73 20 66 6f 72 20 65 61 63 68 20 73 rules for each s
3010: 74 65 70 20 63 61 6e 20 62 65 20 63 61 70 74 75 tep can be captu
3020: 72 65 64 20 68 65 72 65 20 69 6e 20 74 68 65 20 red here in the
3030: 74 65 73 74 63 6f 6e 66 69 67 22 29 0a 09 20 20 testconfig")..
3040: 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 6e 6f (print "# no
3050: 74 65 3a 20 54 68 65 20 3b 3b 20 61 66 74 65 72 te: The ;; after
3060: 20 74 68 65 20 73 74 65 70 6e 61 6d 65 20 61 6e the stepname an
3070: 64 20 74 68 65 20 6c 65 61 64 69 6e 67 20 77 68 d the leading wh
3080: 69 74 65 73 70 61 63 65 20 61 72 65 20 72 65 71 itespace are req
3090: 75 69 72 65 64 22 29 0a 09 20 20 20 20 20 20 28 uired").. (
30a0: 70 72 69 6e 74 20 22 23 5c 6e 5b 6c 6f 67 70 72 print "#\n[logpr
30b0: 6f 5d 5c 6e 22 29 0a 09 20 20 20 20 20 20 28 66 o]\n").. (f
30c0: 6f 72 2d 65 61 63 68 20 28 6c 61 6d 62 64 61 20 or-each (lambda
30d0: 28 73 74 65 70 29 0a 09 09 09 20 20 28 6c 65 74 (step).... (let
30e0: 20 28 28 73 74 65 70 6e 61 6d 65 20 20 20 28 63 ((stepname (c
30f0: 61 72 20 73 74 65 70 29 29 0a 09 09 09 09 28 73 ar step)).....(s
3100: 63 72 69 70 74 6e 61 6d 65 20 28 63 61 64 72 20 criptname (cadr
3110: 73 74 65 70 29 29 29 0a 09 09 09 20 20 20 20 28 step))).... (
3120: 70 72 69 6e 74 20 73 74 65 70 6e 61 6d 65 20 22 print stepname "
3130: 20 3b 3b 20 72 75 6c 65 73 20 66 6f 72 20 63 68 ;; rules for ch
3140: 65 63 6b 69 6e 67 20 6f 75 74 70 75 74 20 66 72 ecking output fr
3150: 6f 6d 20 72 75 6e 6e 69 6e 67 20 73 74 65 70 20 om running step
3160: 22 20 73 74 65 70 20 22 20 77 69 74 68 20 63 6f " step " with co
3170: 6d 6d 61 6e 64 20 22 20 73 63 72 69 70 74 6e 61 mmand " scriptna
3180: 6d 65 29 0a 09 09 09 20 20 20 20 28 70 72 69 6e me).... (prin
3190: 74 20 67 65 6e 65 78 61 6d 70 6c 65 3a 65 78 61 t genexample:exa
31a0: 6d 70 6c 65 2d 6c 6f 67 70 72 6f 20 22 5c 6e 22 mple-logpro "\n"
31b0: 29 29 29 0a 09 09 09 73 74 65 70 73 29 0a 09 20 )))....steps)..
31c0: 20 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 74 (print "# t
31d0: 65 73 74 5f 6d 65 74 61 20 69 73 20 61 20 73 65 est_meta is a se
31e0: 63 74 69 6f 6e 20 66 6f 72 20 73 74 6f 72 69 6e ction for storin
31f0: 67 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 g additional dat
3200: 61 20 6f 6e 20 79 6f 75 72 20 74 65 73 74 5c 6e a on your test\n
3210: 5b 74 65 73 74 5f 6d 65 74 61 5d 22 29 0a 09 20 [test_meta]")..
3220: 20 20 20 20 20 28 70 72 69 6e 74 20 22 61 75 74 (print "aut
3230: 68 6f 72 20 22 20 28 67 65 74 2d 65 6e 76 69 72 hor " (get-envir
3240: 6f 6e 6d 65 6e 74 2d 76 61 72 69 61 62 6c 65 20 onment-variable
3250: 22 55 53 45 52 22 29 29 0a 09 20 20 20 20 20 20 "USER"))..
3260: 28 70 72 69 6e 74 20 22 6f 77 6e 65 72 20 20 22 (print "owner "
3270: 20 28 67 65 74 2d 65 6e 76 69 72 6f 6e 6d 65 6e (get-environmen
3280: 74 2d 76 61 72 69 61 62 6c 65 20 22 55 53 45 52 t-variable "USER
3290: 22 29 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e ")).. (prin
32a0: 74 20 22 64 65 73 63 72 69 70 74 69 6f 6e 20 22 t "description "
32b0: 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 09 20 description)..
32c0: 20 20 20 20 20 28 70 72 69 6e 74 20 22 74 61 67 (print "tag
32d0: 73 20 74 61 67 6f 6e 65 2c 74 61 67 74 77 6f 22 s tagone,tagtwo"
32e0: 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 ).. (print
32f0: 22 72 65 76 69 65 77 65 64 20 6e 65 76 65 72 22 "reviewed never"
3300: 29 29 29 0a 09 20 20 3b 3b 20 4e 6f 77 20 63 72 ))).. ;; Now cr
3310: 65 61 74 65 20 73 68 65 6c 6c 20 73 63 72 69 70 eate shell scrip
3320: 74 73 20 28 69 66 20 65 78 74 65 6e 73 69 6f 6e ts (if extension
3330: 20 69 73 20 2e 73 68 29 20 61 6e 64 20 6c 6f 67 is .sh) and log
3340: 70 72 6f 20 66 69 6c 65 73 0a 09 20 20 28 66 6f pro files.. (fo
3350: 72 2d 65 61 63 68 20 28 6c 61 6d 62 64 61 20 28 r-each (lambda (
3360: 73 74 70 29 0a 09 09 20 20 20 20 20 20 28 6c 65 stp)... (le
3370: 74 20 28 28 73 74 65 70 6e 61 6d 65 20 28 63 61 t ((stepname (ca
3380: 72 20 73 74 70 29 29 0a 09 09 09 20 20 20 20 28 r stp)).... (
3390: 73 63 72 69 70 74 20 20 20 28 63 61 64 72 20 73 script (cadr s
33a0: 74 70 29 29 29 0a 09 09 09 28 69 66 20 28 73 74 tp)))....(if (st
33b0: 72 69 6e 67 2d 6d 61 74 63 68 20 22 2e 2a 5c 5c ring-match ".*\\
33c0: 2e 73 68 24 22 20 73 63 72 69 70 74 29 0a 09 09 .sh$" script)...
33d0: 09 20 20 20 20 28 62 65 67 69 6e 0a 09 09 09 20 . (begin....
33e0: 20 20 20 20 20 28 77 69 74 68 2d 6f 75 74 70 75 (with-outpu
33f0: 74 2d 74 6f 2d 66 69 6c 65 20 28 63 6f 6e 63 20 t-to-file (conc
3400: 74 65 73 74 64 69 72 20 22 2f 22 20 73 63 72 69 testdir "/" scri
3410: 70 74 29 0a 09 09 09 09 28 6c 61 6d 62 64 61 20 pt).....(lambda
3420: 28 29 0a 09 09 09 09 20 20 28 70 72 69 6e 74 20 ()..... (print
3430: 67 65 6e 65 78 61 6d 70 6c 65 3a 65 78 61 6d 70 genexample:examp
3440: 6c 65 2d 73 63 72 69 70 74 29 29 29 0a 09 09 09 le-script)))....
3450: 20 20 20 20 20 20 28 73 79 73 74 65 6d 20 28 63 (system (c
3460: 6f 6e 63 20 22 63 68 6d 6f 64 20 75 67 2b 72 2c onc "chmod ug+r,
3470: 61 2b 78 20 22 20 28 63 6f 6e 63 20 74 65 73 74 a+x " (conc test
3480: 64 69 72 20 22 2f 22 20 73 63 72 69 70 74 29 29 dir "/" script))
3490: 29 29 29 29 29 0a 09 09 20 20 20 20 73 74 65 70 )))))... step
34a0: 73 29 29 29 29 29 29 0a s)))))).