Megatest

Hex Artifact Content
Login

Artifact d257a69331f7073dddae788c53b412d8d114e4bb:


0000: 2f 2f 20 54 68 69 73 20 66 69 6c 65 20 69 73 20  // This file is 
0010: 70 61 72 74 20 6f 66 20 4d 65 67 61 74 65 73 74  part of Megatest
0020: 2e 0a 2f 2f 20 0a 2f 2f 20 20 20 20 20 4d 65 67  ..// .//     Meg
0030: 61 74 65 73 74 20 69 73 20 66 72 65 65 20 73 6f  atest is free so
0040: 66 74 77 61 72 65 3a 20 79 6f 75 20 63 61 6e 20  ftware: you can 
0050: 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20  redistribute it 
0060: 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 2f 2f  and/or modify.//
0070: 20 20 20 20 20 69 74 20 75 6e 64 65 72 20 74 68       it under th
0080: 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47  e terms of the G
0090: 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  NU General Publi
00a0: 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62  c License as pub
00b0: 6c 69 73 68 65 64 20 62 79 0a 2f 2f 20 20 20 20  lished by.//    
00c0: 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61   the Free Softwa
00d0: 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65  re Foundation, e
00e0: 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20  ither version 3 
00f0: 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20  of the License, 
0100: 6f 72 0a 2f 2f 20 20 20 20 20 28 61 74 20 79 6f  or.//     (at yo
0110: 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c  ur option) any l
0120: 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 2f 2f  ater version..//
0130: 20 0a 2f 2f 20 20 20 20 20 4d 65 67 61 74 65 73   .//     Megates
0140: 74 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64  t is distributed
0150: 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61   in the hope tha
0160: 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65  t it will be use
0170: 66 75 6c 2c 0a 2f 2f 20 20 20 20 20 62 75 74 20  ful,.//     but 
0180: 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52  WITHOUT ANY WARR
0190: 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76  ANTY; without ev
01a0: 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77  en the implied w
01b0: 61 72 72 61 6e 74 79 20 6f 66 0a 2f 2f 20 20 20  arranty of.//   
01c0: 20 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54    MERCHANTABILIT
01d0: 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52  Y or FITNESS FOR
01e0: 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55   A PARTICULAR PU
01f0: 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a  RPOSE.  See the.
0200: 2f 2f 20 20 20 20 20 47 4e 55 20 47 65 6e 65 72  //     GNU Gener
0210: 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  al Public Licens
0220: 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69  e for more detai
0230: 6c 73 2e 0a 2f 2f 20 0a 2f 2f 20 20 20 20 20 59  ls..// .//     Y
0240: 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72  ou should have r
0250: 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f  eceived a copy o
0260: 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61  f the GNU Genera
0270: 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65  l Public License
0280: 0a 2f 2f 20 20 20 20 20 61 6c 6f 6e 67 20 77 69  .//     along wi
0290: 74 68 20 4d 65 67 61 74 65 73 74 2e 20 20 49 66  th Megatest.  If
02a0: 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a   not, see <http:
02b0: 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69  //www.gnu.org/li
02c0: 63 65 6e 73 65 73 2f 3e 2e 0a 0a 52 65 66 65 72  censes/>...Refer
02d0: 65 6e 63 65 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a  ence.---------..
02e0: 4d 65 67 61 74 65 73 74 20 55 73 65 20 4d 6f 64  Megatest Use Mod
02f0: 65 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  es.~~~~~~~~~~~~~
0300: 7e 7e 7e 7e 7e 0a 0a 2e 42 61 73 65 20 63 6f 6d  ~~~~~...Base com
0310: 6d 61 6e 64 73 0a 5b 77 69 64 74 68 3d 22 38 30  mands.[width="80
0320: 25 22 2c 63 6f 6c 73 3d 22 5e 2c 32 6d 2c 32 6d  %",cols="^,2m,2m
0330: 22 2c 66 72 61 6d 65 3d 22 74 6f 70 62 6f 74 22  ",frame="topbot"
0340: 2c 6f 70 74 69 6f 6e 73 3d 22 68 65 61 64 65 72  ,options="header
0350: 22 5d 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  "].|============
0360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 7c 55 73 65 20  ==========.|Use 
0370: 63 61 73 65 09 20 20 20 20 20 20 20 20 20 7c 20  case.         | 
0380: 4d 65 67 61 74 65 73 74 20 63 6f 6d 6d 61 6e 64  Megatest command
0390: 09 7c 20 20 6d 74 75 74 69 6c 0a 7c 53 74 61 72  .|  mtutil.|Star
03a0: 74 20 66 72 6f 6d 20 73 63 72 61 74 63 68 20 20  t from scratch  
03b0: 20 20 20 20 20 7c 09 2d 72 65 72 75 6e 2d 61 6c       |.-rerun-al
03c0: 6c 09 7c 20 20 72 65 73 74 61 72 74 09 0a 7c 52  l.|  restart..|R
03d0: 65 72 75 6e 20 6e 6f 6e 2d 67 6f 6f 64 20 63 6f  erun non-good co
03e0: 6d 70 6c 65 74 65 64 20 7c 09 2d 72 65 72 75 6e  mpleted |.-rerun
03f0: 2d 63 6c 65 61 6e 09 7c 20 20 72 65 72 75 6e 63  -clean.|  rerunc
0400: 6c 65 61 6e 09 0a 7c 52 65 72 75 6e 20 61 6c 6c  lean..|Rerun all
0410: 20 6e 6f 6e 2d 67 6f 6f 64 20 61 6e 64 20 6e 6f   non-good and no
0420: 74 20 63 6f 6d 70 6c 65 74 65 64 20 79 65 74 20  t completed yet 
0430: 7c 20 2d 73 65 74 2d 73 74 61 74 65 2d 73 74 61  | -set-state-sta
0440: 74 75 73 20 4b 49 4c 4c 52 45 51 3b 20 2d 72 65  tus KILLREQ; -re
0450: 72 75 6e 2d 7c 63 6c 65 61 6e 20 7c 20 6b 69 6c  run-|clean | kil
0460: 6c 72 65 72 75 6e 09 0a 7c 43 6f 6e 74 69 6e 75  lrerun..|Continu
0470: 65 20 72 75 6e 20 20 20 20 20 20 20 20 20 20 20  e run           
0480: 20 20 7c 09 2d 72 75 6e 09 20 20 20 20 20 20 20    |.-run.       
0490: 20 7c 20 20 72 65 73 75 6d 65 09 0a 7c 52 65 6d   |  resume..|Rem
04a0: 6f 76 65 20 72 75 6e 09 20 20 20 20 20 20 20 20  ove run.        
04b0: 20 7c 20 20 20 20 20 20 2d 72 65 6d 6f 76 65 2d   |      -remove-
04c0: 72 75 6e 73 09 7c 20 20 63 6c 65 61 6e 09 0a 7c  runs.|  clean..|
04d0: 4c 6f 63 6b 20 72 75 6e 09 20 20 20 20 20 20 20  Lock run.       
04e0: 20 20 7c 20 20 20 20 20 20 2d 6c 6f 63 6b 09 20    |      -lock. 
04f0: 20 20 20 20 20 20 20 7c 20 20 6c 6f 63 6b 09 0a         |  lock..
0500: 7c 55 6e 6c 6f 63 6b 20 72 75 6e 09 20 20 20 20  |Unlock run.    
0510: 20 20 20 20 20 7c 20 20 20 20 20 20 2d 75 6e 6c       |      -unl
0520: 6f 63 6b 09 20 20 20 20 20 20 20 20 7c 20 20 75  ock.        |  u
0530: 6e 6c 6f 63 6b 09 0a 7c 6b 69 6c 6c 72 75 6e 09  nlock..|killrun.
0540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0550: 20 7c 20 2d 73 65 74 2d 73 74 61 74 65 2d 73 74   | -set-state-st
0560: 61 74 75 73 20 4b 49 4c 4c 52 45 51 3b 20 2d 6b  atus KILLREQ; -k
0570: 69 6c 6c 2d 72 75 6e 09 7c 20 6b 69 6c 6c 72 75  ill-run.| killru
0580: 6e 09 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  n..|============
0590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43 6f 6e 66  ==========..Conf
05a0: 69 67 20 46 69 6c 65 20 48 65 6c 70 65 72 73 0a  ig File Helpers.
05b0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
05c0: 7e 7e 7e 0a 0a 56 61 72 69 6f 75 73 20 68 65 6c  ~~~..Various hel
05d0: 70 65 72 73 20 66 6f 72 20 6d 6f 72 65 20 61 64  pers for more ad
05e0: 76 61 6e 63 65 64 20 63 6f 6e 66 69 67 20 66 69  vanced config fi
05f0: 6c 65 73 2e 0a 0a 2e 48 65 6c 70 65 72 73 0a 5b  les....Helpers.[
0600: 77 69 64 74 68 3d 22 38 30 25 22 2c 63 6f 6c 73  width="80%",cols
0610: 3d 22 5e 2c 32 6d 2c 32 6d 2c 32 6d 22 2c 66 72  ="^,2m,2m,2m",fr
0620: 61 6d 65 3d 22 74 6f 70 62 6f 74 22 2c 6f 70 74  ame="topbot",opt
0630: 69 6f 6e 73 3d 22 68 65 61 64 65 72 22 5d 0a 7c  ions="header"].|
0640: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0650: 3d 3d 3d 3d 3d 3d 0a 7c 48 65 6c 70 65 72 20 20  ======.|Helper  
0660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0670: 20 20 20 20 7c 20 50 75 72 70 6f 73 65 20 20 20      | Purpose   
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0690: 20 20 20 20 7c 20 56 61 6c 69 64 20 76 61 6c 75      | Valid valu
06a0: 65 73 20 20 20 20 20 20 20 20 20 20 20 20 7c 20  es            | 
06b0: 43 6f 6d 6d 65 6e 74 73 0a 7c 20 23 7b 73 63 68  Comments.| #{sch
06c0: 65 6d 65 20 28 73 63 68 65 6d 65 20 63 6f 64 65  eme (scheme code
06d0: 2e 2e 2e 29 7d 20 7c 20 45 78 65 63 75 74 65 20  ...)} | Execute 
06e0: 61 72 62 69 74 72 61 72 79 20 73 63 68 65 6d 65  arbitrary scheme
06f0: 20 63 6f 64 65 20 7c 20 41 6e 79 20 76 61 6c 69   code | Any vali
0700: 64 20 73 63 68 65 6d 65 20 20 20 20 20 20 20 20  d scheme        
0710: 7c 20 56 61 6c 75 65 20 72 65 74 75 72 6e 65 64  | Value returned
0720: 20 66 72 6f 6d 20 74 68 65 20 63 61 6c 6c 20 69   from the call i
0730: 73 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61  s converted to a
0740: 20 73 74 72 69 6e 67 20 61 6e 64 20 70 72 6f 63   string and proc
0750: 65 73 73 65 64 20 61 73 20 70 61 72 74 20 6f 66  essed as part of
0760: 20 74 68 65 20 63 6f 6e 66 69 67 20 66 69 6c 65   the config file
0770: 0a 7c 20 23 7b 73 79 73 74 65 6d 20 63 6f 6d 6d  .| #{system comm
0780: 61 6e 64 7d 20 20 20 20 20 20 20 20 20 20 7c 20  and}          | 
0790: 45 78 65 63 75 74 65 20 70 72 6f 67 72 61 6d 2c  Execute program,
07a0: 20 69 6e 73 65 72 74 73 20 65 78 69 74 20 63 6f   inserts exit co
07b0: 64 65 20 20 7c 20 41 6e 79 20 76 61 6c 69 64 20  de  | Any valid 
07c0: 55 6e 69 78 20 63 6f 6d 6d 61 6e 64 20 20 7c 20  Unix command  | 
07d0: 44 69 73 63 61 72 64 73 20 74 68 65 20 6f 75 74  Discards the out
07e0: 70 75 74 20 66 72 6f 6d 20 74 68 65 20 70 72 6f  put from the pro
07f0: 67 72 61 6d 0a 7c 20 23 7b 73 68 65 6c 6c 20 20  gram.| #{shell  
0800: 63 6f 6d 6d 61 6e 64 7d 20 6f 72 20 23 7b 73 68  command} or #{sh
0810: 20 2e 2e 2e 7d 20 20 7c 20 45 78 65 63 75 74 65   ...}  | Execute
0820: 20 70 72 6f 67 72 61 6d 2c 20 69 6e 73 65 72 74   program, insert
0830: 73 20 72 65 73 75 6c 74 20 66 72 6f 6d 20 73 74  s result from st
0840: 64 6f 75 74 20 7c 20 41 6e 79 20 76 61 6c 69 64  dout | Any valid
0850: 20 55 6e 69 78 20 63 6f 6d 6d 61 6e 64 20 7c 20   Unix command | 
0860: 56 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 66  Value returned f
0870: 72 6f 6d 20 74 68 65 20 63 61 6c 6c 20 69 73 20  rom the call is 
0880: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 73  converted to a s
0890: 74 72 69 6e 67 20 61 6e 64 20 70 72 6f 63 65 73  tring and proces
08a0: 73 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 74  sed as part of t
08b0: 68 65 20 63 6f 6e 66 69 67 20 66 69 6c 65 0a 7c  he config file.|
08c0: 20 23 7b 72 65 61 6c 70 61 74 68 20 70 61 74 68   #{realpath path
08d0: 7d 20 6f 72 20 23 7b 72 70 20 2e 2e 2e 7d 20 20  } or #{rp ...}  
08e0: 20 7c 20 52 65 70 6c 61 63 65 20 77 69 74 68 20   | Replace with 
08f0: 6e 6f 72 6d 61 6c 69 7a 65 64 20 70 61 74 68 20  normalized path 
0900: 7c 20 4d 75 73 74 20 62 65 20 61 20 76 61 6c 69  | Must be a vali
0910: 64 20 70 61 74 68 20 7c 0a 7c 20 23 7b 67 65 74  d path |.| #{get
0920: 65 6e 76 20 56 41 52 7d 20 6f 72 20 23 7b 67 76  env VAR} or #{gv
0930: 20 56 41 52 7d 20 20 20 20 20 20 7c 20 52 65 70   VAR}      | Rep
0940: 6c 61 63 65 20 77 69 74 68 20 63 6f 6e 74 65 6e  lace with conten
0950: 74 20 6f 66 20 65 6e 76 20 76 61 72 69 61 62 6c  t of env variabl
0960: 65 20 7c 20 4d 75 73 74 20 62 65 20 61 20 76 61  e | Must be a va
0970: 6c 69 64 20 76 61 72 20 7c 0a 7c 20 23 7b 67 65  lid var |.| #{ge
0980: 74 20 73 20 76 7d 20 6f 72 20 23 7b 67 20 73 20  t s v} or #{g s 
0990: 76 7d 20 20 20 20 20 7c 20 52 65 70 6c 61 63 65  v}     | Replace
09a0: 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 20 76   with variable v
09b0: 20 66 72 6f 6d 20 73 65 63 74 69 6f 6e 20 73 20   from section s 
09c0: 7c 20 56 61 72 69 61 62 6c 65 20 6d 75 73 74 20  | Variable must 
09d0: 62 65 20 64 65 66 69 6e 65 64 20 62 65 66 6f 72  be defined befor
09e0: 65 20 75 73 65 20 7c 0a 7c 20 23 7b 72 67 65 74  e use |.| #{rget
09f0: 20 76 7d 20 20 20 20 20 20 20 20 20 20 20 20 20   v}             
0a00: 20 20 20 20 20 7c 20 52 65 70 6c 61 63 65 20 77       | Replace w
0a10: 69 74 68 20 76 61 72 69 61 62 6c 65 20 76 20 66  ith variable v f
0a20: 72 6f 6d 20 74 61 72 67 65 74 20 6f 72 20 64 65  rom target or de
0a30: 66 61 75 6c 74 20 6f 66 20 72 75 6e 63 6f 6e 66  fault of runconf
0a40: 69 67 73 20 66 69 6c 65 20 7c 20 7c 0a 7c 20 23  igs file | |.| #
0a50: 7b 6d 74 72 61 68 7d 20 20 20 20 20 20 20 20 20  {mtrah}         
0a60: 20 20 20 20 20 20 20 20 20 20 7c 20 52 65 70 6c            | Repl
0a70: 61 63 65 20 77 69 74 68 20 74 68 65 20 70 61 74  ace with the pat
0a80: 68 20 74 6f 20 74 68 65 20 6d 65 67 61 74 65 73  h to the megates
0a90: 74 20 74 65 73 74 73 75 69 74 65 20 61 72 65 61  t testsuite area
0aa0: 20 7c 20 7c 20 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d   | | .|=========
0ab0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 43  =============..C
0ac0: 6f 6e 66 69 67 20 46 69 6c 65 20 53 65 74 74 69  onfig File Setti
0ad0: 6e 67 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ngs.~~~~~~~~~~~~
0ae0: 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 53 65 74 74 69 6e  ~~~~~~~~..Settin
0af0: 67 73 20 69 6e 20 6d 65 67 61 74 65 73 74 2e 63  gs in megatest.c
0b00: 6f 6e 66 69 67 0a 0a 43 6f 6e 66 69 67 20 46 69  onfig..Config Fi
0b10: 6c 65 20 41 64 64 69 74 69 6f 6e 61 6c 20 46 65  le Additional Fe
0b20: 61 74 75 72 65 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e  atures.~~~~~~~~~
0b30: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
0b40: 7e 7e 7e 7e 7e 7e 0a 0a 49 6e 63 6c 75 64 69 6e  ~~~~~~..Includin
0b50: 67 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 61 20  g output from a 
0b60: 73 63 72 69 70 74 20 61 73 20 69 66 20 69 74 20  script as if it 
0b70: 77 61 73 20 69 6e 6c 69 6e 65 20 74 6f 20 74 68  was inline to th
0b80: 65 20 63 6f 6e 66 69 67 20 66 69 6c 65 3a 0a 0a  e config file:..
0b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 63 72 69 70  ---------.[scrip
0bb0: 74 69 6e 63 20 6d 79 73 63 72 69 70 74 2e 73 68  tinc myscript.sh
0bc0: 5d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ].--------------
0bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 49 66 20  -----------..If 
0be0: 74 68 65 20 73 63 72 69 70 74 20 6f 75 74 70 75  the script outpu
0bf0: 74 73 3a 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ts:..-----------
0c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b  --------------.[
0c10: 69 74 65 6d 73 5d 0a 41 20 61 20 62 20 63 0a 42  items].A a b c.B
0c20: 20 64 20 65 20 66 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   d e f.---------
0c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c40: 0a 0a 54 68 65 6e 20 74 68 65 20 63 6f 6e 66 69  ..Then the confi
0c50: 67 20 66 69 6c 65 20 77 6f 75 6c 64 20 65 66 66  g file would eff
0c60: 65 63 74 69 76 65 6c 79 20 61 70 70 65 61 72 20  ectively appear 
0c70: 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 69 74  to contain an it
0c80: 65 6d 73 20 73 65 63 74 69 6f 6e 0a 65 78 61 63  ems section.exac
0c90: 74 6c 79 20 6c 69 6b 65 20 74 68 65 20 6f 75 74  tly like the out
0ca0: 70 75 74 20 66 72 6f 6d 20 74 68 65 20 73 63 72  put from the scr
0cb0: 69 70 74 2e 20 54 68 69 73 20 69 73 20 75 73 65  ipt. This is use
0cc0: 66 75 6c 20 77 68 65 6e 20 64 79 6e 61 6d 69 63  ful when dynamic
0cd0: 61 6c 6c 79 0a 63 72 65 61 74 69 6e 67 20 69 74  ally.creating it
0ce0: 65 6d 73 2c 20 69 74 65 6d 73 74 61 62 6c 65 73  ems, itemstables
0cf0: 20 61 6e 64 20 6f 74 68 65 72 20 63 6f 6e 66 69   and other confi
0d00: 67 20 73 74 72 75 63 74 75 72 65 73 2e 20 59 6f  g structures. Yo
0d10: 75 20 63 61 6e 20 73 65 65 20 74 68 65 0a 65 78  u can see the.ex
0d20: 70 61 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 63  pansion of the c
0d30: 61 6c 6c 20 62 79 20 6c 6f 6f 6b 69 6e 67 20 69  all by looking i
0d40: 6e 20 74 68 65 20 63 61 63 68 65 64 20 66 69 6c  n the cached fil
0d50: 65 73 20 28 6c 6f 6f 6b 20 69 6e 20 79 6f 75 72  es (look in your
0d60: 20 6c 69 6e 6b 74 72 65 65 0a 66 6f 72 20 6d 65   linktree.for me
0d70: 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 20 61 6e  gatest.config an
0d80: 64 20 72 75 6e 63 6f 6e 66 69 67 73 2e 63 6f 6e  d runconfigs.con
0d90: 66 69 67 20 63 61 63 68 65 20 66 69 6c 65 73 20  fig cache files 
0da0: 61 6e 64 20 69 6e 20 79 6f 75 72 20 74 65 73 74  and in your test
0db0: 20 72 75 6e 0a 61 72 65 61 73 20 66 6f 72 20 74   run.areas for t
0dc0: 68 65 20 65 78 70 61 6e 64 65 64 20 61 6e 64 20  he expanded and 
0dd0: 63 61 63 68 65 64 20 74 65 73 74 63 6f 6e 66 69  cached testconfi
0de0: 67 29 2e 0a 0a 57 69 6c 64 63 61 72 64 73 20 61  g)...Wildcards a
0df0: 6e 64 20 72 65 67 65 78 65 73 20 69 6e 20 54 61  nd regexes in Ta
0e00: 72 67 65 74 73 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  rgets..---------
0e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e20: 0a 5b 61 2f 32 2f 62 5d 0a 56 41 52 31 20 56 41  .[a/2/b].VAR1 VA
0e30: 4c 31 0a 0a 5b 61 2f 25 2f 62 5d 0a 56 41 52 31  L1..[a/%/b].VAR1
0e40: 20 56 41 4c 32 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   VAL2.----------
0e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
0e60: 0a 57 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 3a  .Will result in:
0e70: 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
0e80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 61 2f 32  -----------.[a/2
0e90: 2f 62 5d 0a 56 41 52 31 20 56 41 4c 32 0a 2d 2d  /b].VAR1 VAL2.--
0ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0eb0: 2d 2d 2d 2d 2d 2d 2d 0a 0a 43 61 6e 20 75 73 65  -------..Can use
0ec0: 20 65 69 74 68 65 72 20 77 69 6c 64 63 61 72 64   either wildcard
0ed0: 20 6f 66 20 22 25 22 20 6f 72 20 61 20 72 65 67   of "%" or a reg
0ee0: 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 3a  ular expression:
0ef0: 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
0f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 2f 61 62  -----------.[/ab
0f10: 63 2e 2a 64 65 66 2f 5d 0a 2d 2d 2d 2d 2d 2d 2d  c.*def/].-------
0f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0f30: 2d 2d 0a 0a 44 69 73 6b 20 53 70 61 63 65 20 43  --..Disk Space C
0f40: 68 65 63 6b 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  hecks.~~~~~~~~~~
0f50: 7e 7e 7e 7e 7e 7e 7e 0a 0a 53 6f 6d 65 20 70 61  ~~~~~~~..Some pa
0f60: 72 61 6d 65 74 65 72 73 20 79 6f 75 20 63 61 6e  rameters you can
0f70: 20 70 75 74 20 69 6e 20 74 68 65 20 5b 73 65 74   put in the [set
0f80: 75 70 5d 20 73 65 63 74 69 6f 6e 20 6f 66 20 6d  up] section of m
0f90: 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 3a 0a  egatest.config:.
0fa0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
0fb0: 2d 2d 2d 2d 0a 23 20 6d 69 6e 69 6d 75 6d 20 73  ----.# minimum s
0fc0: 70 61 63 65 20 72 65 71 75 69 72 65 64 20 69 6e  pace required in
0fd0: 20 61 20 72 75 6e 20 64 69 73 6b 20 0a 6d 69 6e   a run disk .min
0fe0: 73 70 61 63 65 20 31 30 30 30 30 30 30 30 0a 0a  space 10000000..
0ff0: 23 20 6d 69 6e 69 6d 75 6d 20 73 70 61 63 65 20  # minimum space 
1000: 72 65 71 75 69 72 65 64 20 69 6e 20 64 62 64 69  required in dbdi
1010: 72 3a 0a 64 62 64 69 72 2d 73 70 61 63 65 2d 72  r:.dbdir-space-r
1020: 65 71 75 69 72 65 64 20 31 30 30 30 30 30 0a 0a  equired 100000..
1030: 23 20 73 63 72 69 70 74 20 74 68 61 74 20 74 61  # script that ta
1040: 6b 65 73 20 70 61 74 68 20 61 73 20 70 61 72 61  kes path as para
1050: 6d 65 74 65 72 20 61 6e 64 20 72 65 74 75 72 6e  meter and return
1060: 73 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  s number of byte
1070: 73 20 61 76 61 69 6c 61 62 6c 65 3a 0a 66 72 65  s available:.fre
1080: 65 2d 73 70 61 63 65 2d 73 63 72 69 70 74 20 63  e-space-script c
1090: 68 65 63 6b 2d 73 70 61 63 65 2e 73 68 0a 2d 2d  heck-space.sh.--
10a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10b0: 2d 0a 0a 54 72 69 6d 20 74 72 61 69 6c 69 6e 67  -..Trim trailing
10c0: 20 73 70 61 63 65 73 0a 7e 7e 7e 7e 7e 7e 7e 7e   spaces.~~~~~~~~
10d0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 4e 4f  ~~~~~~~~~~~~..NO
10e0: 54 45 3a 20 41 73 20 6f 66 20 4d 65 67 61 74 65  TE: As of Megate
10f0: 73 74 20 76 65 72 73 69 6f 6e 20 76 31 2e 36 35  st version v1.65
1100: 34 38 20 74 72 69 6d 2d 74 72 61 69 6c 69 6e 67  48 trim-trailing
1110: 2d 73 70 61 63 65 73 20 64 65 66 61 75 6c 74 73  -spaces defaults
1120: 20 74 6f 20 79 65 73 2e 0a 0a 2d 2d 2d 2d 2d 2d   to yes...------
1130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 63 6f  ------------.[co
1140: 6e 66 69 67 66 3a 73 65 74 74 69 6e 67 73 20 74  nfigf:settings t
1150: 72 69 6d 2d 74 72 61 69 6c 69 6e 67 2d 73 70 61  rim-trailing-spa
1160: 63 65 73 20 6e 6f 5d 0a 23 20 20 20 20 20 20 20  ces no].#       
1170: 20 20 20 20 20 20 20 20 20 20 7c 3c 3d 3d 20 6e            |<== n
1180: 65 78 74 20 6c 69 6e 65 20 70 61 64 64 65 64 20  ext line padded 
1190: 77 69 74 68 20 73 70 61 63 65 73 20 74 6f 20 68  with spaces to h
11a0: 65 72 65 0a 44 45 46 41 55 4c 54 5f 49 4e 44 45  ere.DEFAULT_INDE
11b0: 4e 54 0a 5b 63 6f 6e 66 69 67 66 3a 73 65 74 74  NT.[configf:sett
11c0: 69 6e 67 73 20 74 72 69 6d 2d 74 72 61 69 6c 69  ings trim-traili
11d0: 6e 67 2d 73 70 61 63 65 73 20 6e 6f 5d 0a 2d 2d  ng-spaces no].--
11e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11f0: 0a 0a 54 68 65 20 76 61 72 69 61 62 6c 65 20 44  ..The variable D
1200: 45 46 41 55 4c 54 5f 49 4e 44 45 4e 54 20 77 6f  EFAULT_INDENT wo
1210: 75 6c 64 20 62 65 20 61 20 73 74 72 69 6e 67 20  uld be a string 
1220: 6f 66 20 33 20 73 70 61 63 65 73 0a 0a 4a 6f 62  of 3 spaces..Job
1230: 20 53 75 62 6d 69 73 73 69 6f 6e 20 43 6f 6e 74   Submission Cont
1240: 72 6f 6c 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  rol.~~~~~~~~~~~~
1250: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 53 75 62 6d  ~~~~~~~~~~..Subm
1260: 69 74 20 6a 6f 62 73 20 74 6f 20 48 6f 73 74 20  it jobs to Host 
1270: 54 79 70 65 73 20 62 61 73 65 64 20 6f 6e 20 54  Types based on T
1280: 65 73 74 20 4e 61 6d 65 0a 5e 5e 5e 5e 5e 5e 5e  est Name.^^^^^^^
1290: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
12a0: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
12b0: 5e 5e 5e 5e 5e 0a 0a 2e 49 6e 20 6d 65 67 61 74  ^^^^^...In megat
12c0: 65 73 74 2e 63 6f 6e 66 69 67 0a 2d 2d 2d 2d 2d  est.config.-----
12d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
12e0: 2d 2d 2d 0a 5b 68 6f 73 74 2d 74 79 70 65 73 5d  ---.[host-types]
12f0: 0a 67 65 6e 65 72 61 6c 20 20 20 6e 62 66 61 6b  .general   nbfak
1300: 65 0a 72 65 6d 6f 74 65 20 20 20 20 62 73 75 62  e.remote    bsub
1310: 0a 0a 5b 6c 61 75 6e 63 68 65 72 73 5d 0a 72 75  ..[launchers].ru
1320: 6e 66 69 72 73 74 2f 73 75 6d 25 20 72 65 6d 6f  nfirst/sum% remo
1330: 74 65 0a 25 20 67 65 6e 65 72 61 6c 0a 0a 5b 6a  te.% general..[j
1340: 6f 62 74 6f 6f 6c 73 5d 0a 6c 61 75 6e 63 68 65  obtools].launche
1350: 72 20 62 73 75 62 0a 23 20 69 66 20 64 65 66 69  r bsub.# if defi
1360: 6e 65 64 20 61 6e 64 20 6e 6f 74 20 22 6e 6f 22  ned and not "no"
1370: 20 66 6c 65 78 69 2d 6c 61 75 6e 63 68 65 72 20   flexi-launcher 
1380: 77 69 6c 6c 20 62 79 70 61 73 73 20 6c 61 75 6e  will bypass laun
1390: 63 68 65 72 20 75 6e 6c 65 73 73 20 0a 23 20 74  cher unless .# t
13a0: 68 65 72 65 20 69 73 20 6e 6f 20 68 6f 73 74 2d  here is no host-
13b0: 74 79 70 65 20 6d 61 74 63 68 2e 0a 66 6c 65 78  type match..flex
13c0: 69 2d 6c 61 75 6e 63 68 65 72 20 79 65 73 0a 2d  i-launcher yes.-
13d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13e0: 2d 2d 2d 2d 2d 2d 2d 0a 0a 68 6f 73 74 2d 74 79  -------..host-ty
13f0: 70 65 73 0a 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 0a 0a  pes.++++++++++..
1400: 4c 69 73 74 20 6f 66 20 68 6f 73 74 20 74 79 70  List of host typ
1410: 65 73 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61  es and the comma
1420: 6e 64 6c 69 6e 65 20 74 6f 20 72 75 6e 20 61 20  ndline to run a 
1430: 6a 6f 62 20 6f 6e 20 74 68 61 74 20 68 6f 73 74  job on that host
1440: 20 74 79 70 65 2e 0a 0a 2e 68 6f 73 74 2d 74 79   type....host-ty
1450: 70 65 20 3d 3e 20 6c 61 75 6e 63 68 20 63 6f 6d  pe => launch com
1460: 6d 61 6e 64 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  mand.-----------
1470: 2d 0a 67 65 6e 65 72 61 6c 20 6e 62 66 61 6b 65  -.general nbfake
1480: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6c  .------------..l
1490: 61 75 6e 63 68 65 72 73 0a 2b 2b 2b 2b 2b 2b 2b  aunchers.+++++++
14a0: 2b 2b 0a 0a 2e 74 65 73 74 2f 69 74 65 6d 70 61  ++...test/itempa
14b0: 74 68 20 3d 3e 20 68 6f 73 74 2d 74 79 70 65 0a  th => host-type.
14c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 75 6e  ------------.run
14d0: 66 69 72 73 74 2f 73 75 6d 25 20 72 65 6d 6f 74  first/sum% remot
14e0: 65 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a  e.------------..
14f0: 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 53 65  Miscellaneous Se
1500: 74 75 70 20 49 74 65 6d 73 0a 2b 2b 2b 2b 2b 2b  tup Items.++++++
1510: 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b  ++++++++++++++++
1520: 2b 2b 2b 0a 0a 41 74 74 65 6d 70 74 20 74 6f 20  +++..Attempt to 
1530: 72 65 72 75 6e 20 74 65 73 74 73 20 69 6e 20 22  rerun tests in "
1540: 53 54 55 43 4b 2f 44 45 41 44 22 2c 20 22 6e 2f  STUCK/DEAD", "n/
1550: 61 22 2c 20 22 5a 45 52 4f 5f 49 54 45 4d 53 22  a", "ZERO_ITEMS"
1560: 20 73 74 61 74 65 73 2e 0a 0a 2e 49 6e 20 6d 65   states....In me
1570: 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 0a 2d 2d  gatest.config.--
1580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1590: 0a 5b 73 65 74 75 70 5d 0a 72 65 72 75 6e 73 20  .[setup].reruns 
15a0: 35 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  5.--------------
15b0: 2d 2d 2d 2d 0a 0a 52 65 70 6c 61 63 65 20 74 68  ----..Replace th
15c0: 65 20 64 65 66 61 75 6c 74 20 62 6c 61 63 6b 6c  e default blackl
15d0: 69 73 74 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  isted environmen
15e0: 74 20 76 61 72 69 61 62 6c 65 73 20 77 69 74 68  t variables with
15f0: 20 75 73 65 72 20 73 75 70 70 6c 69 65 64 0a 6c   user supplied.l
1600: 69 73 74 2e 0a 0a 44 65 66 61 75 6c 74 20 6c 69  ist...Default li
1610: 73 74 3a 20 55 53 45 52 20 48 4f 4d 45 20 44 49  st: USER HOME DI
1620: 53 50 4c 41 59 20 4c 53 5f 43 4f 4c 4f 52 53 20  SPLAY LS_COLORS 
1630: 58 4b 45 59 53 59 4d 44 42 20 45 44 49 54 4f 52  XKEYSYMDB EDITOR
1640: 20 4d 41 4b 45 46 4c 41 47 53 20 4d 41 4b 45 46   MAKEFLAGS MAKEF
1650: 20 4d 41 4b 45 4f 56 45 52 52 49 44 45 53 0a 0a   MAKEOVERRIDES..
1660: 2e 41 64 64 20 61 20 22 62 61 64 22 20 76 61 72  .Add a "bad" var
1670: 69 61 62 6c 65 20 22 50 52 4f 4d 50 54 22 20 74  iable "PROMPT" t
1680: 6f 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20  o the variables 
1690: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 63 6f 6d  that will be com
16a0: 6d 65 6e 74 65 64 20 6f 75 74 0a 69 6e 20 74 68  mented out.in th
16b0: 65 20 6d 65 67 61 74 65 73 74 2e 73 68 20 61 6e  e megatest.sh an
16c0: 64 20 6d 65 67 61 74 65 73 74 2e 63 73 68 20 66  d megatest.csh f
16d0: 69 6c 65 73 3a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  iles:.----------
16e0: 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 65 74 75 70 5d 0a  -------.[setup].
16f0: 62 6c 61 63 6b 6c 69 73 74 76 61 72 73 20 55 53  blacklistvars US
1700: 45 52 20 48 4f 4d 45 20 44 49 53 50 4c 41 59 20  ER HOME DISPLAY 
1710: 4c 53 5f 43 4f 4c 4f 52 53 20 58 4b 45 59 53 59  LS_COLORS XKEYSY
1720: 4d 44 42 20 45 44 49 54 4f 52 20 4d 41 4b 45 46  MDB EDITOR MAKEF
1730: 4c 41 47 53 20 50 52 4f 4d 50 54 0a 2d 2d 2d 2d  LAGS PROMPT.----
1740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 52  -------------..R
1750: 75 6e 20 74 69 6d 65 20 6c 69 6d 69 74 0a 2b 2b  un time limit.++
1760: 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 0a 0a 2d 2d  ++++++++++++..--
1770: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
1780: 5b 73 65 74 75 70 5d 0a 23 20 74 68 69 73 20 77  [setup].# this w
1790: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
17a0: 79 20 6b 69 6c 6c 20 74 68 65 20 74 65 73 74 20  y kill the test 
17b0: 69 66 20 69 74 20 72 75 6e 73 20 66 6f 72 20 6d  if it runs for m
17c0: 6f 72 65 20 74 68 61 6e 20 31 68 20 32 6d 20 61  ore than 1h 2m a
17d0: 6e 64 20 33 73 0a 72 75 6e 74 69 6d 65 6c 69 6d  nd 3s.runtimelim
17e0: 20 31 68 20 32 6d 20 33 73 0a 2d 2d 2d 2d 2d 2d   1h 2m 3s.------
17f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 54 65 73  -----------..Tes
1800: 74 73 20 62 72 6f 77 73 65 72 20 76 69 65 77 0a  ts browser view.
1810: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
1820: 7e 7e 0a 0a 54 68 65 20 74 65 73 74 73 20 62 72  ~~..The tests br
1830: 6f 77 73 65 72 20 28 73 65 65 20 74 68 65 20 52  owser (see the R
1840: 75 6e 20 43 6f 6e 74 72 6f 6c 20 74 61 62 20 6f  un Control tab o
1850: 6e 20 74 68 65 20 64 61 73 68 62 6f 61 72 64 29  n the dashboard)
1860: 20 68 61 73 20 74 77 6f 20 76 69 65 77 73 20 66   has two views f
1870: 6f 72 20 64 69 73 70 6c 61 79 69 6e 67 20 74 68  or displaying th
1880: 65 20 74 65 73 74 73 2e 20 0a 0a 2e 20 44 6f 74  e tests. ... Dot
1890: 20 28 67 72 61 70 68 76 69 7a 29 20 62 61 73 65   (graphviz) base
18a0: 64 20 74 72 65 65 0a 2e 20 4e 6f 20 64 6f 74 2c  d tree.. No dot,
18b0: 20 70 6c 61 69 6e 20 6c 69 73 74 69 6e 67 0a 0a   plain listing..
18c0: 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 74  The default is t
18d0: 68 65 20 67 72 61 70 68 76 69 7a 20 62 61 73 65  he graphviz base
18e0: 64 20 74 72 65 65 20 62 75 74 20 69 66 20 79 6f  d tree but if yo
18f0: 75 72 20 74 65 73 74 73 20 64 6f 6e 27 74 20 76  ur tests don't v
1900: 69 65 77 0a 77 65 6c 6c 20 69 6e 20 74 68 61 74  iew.well in that
1910: 20 6d 6f 64 65 20 74 68 65 6e 20 75 73 65 20 22   mode then use "
1920: 6e 6f 64 6f 74 22 20 74 6f 20 74 75 72 6e 20 69  nodot" to turn i
1930: 74 20 6f 66 66 2e 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d  t off...--------
1940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 65 74 75 70  ---------.[setup
1950: 5d 0a 6e 6f 64 6f 74 0a 2d 2d 2d 2d 2d 2d 2d 2d  ].nodot.--------
1960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 43 61 70 74 75  ---------..Captu
1970: 72 69 6e 67 20 54 65 73 74 20 44 61 74 61 0a 7e  ring Test Data.~
1980: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
1990: 7e 7e 0a 0a 49 6e 20 61 20 74 65 73 74 20 79 6f  ~~..In a test yo
19a0: 75 20 63 61 6e 20 63 61 70 74 75 72 65 20 61 72  u can capture ar
19b0: 62 69 74 72 61 72 79 20 76 61 72 69 61 62 6c 65  bitrary variable
19c0: 73 20 61 6e 64 20 72 6f 6c 6c 20 74 68 65 6d 20  s and roll them 
19d0: 75 70 20 69 6e 20 74 68 65 0a 6d 65 67 61 74 65  up in the.megate
19e0: 73 74 20 64 61 74 61 62 61 73 65 20 66 6f 72 20  st database for 
19f0: 76 69 65 77 69 6e 67 20 6f 6e 20 74 68 65 20 64  viewing on the d
1a00: 61 73 68 62 6f 61 72 64 20 6f 72 20 77 65 62 20  ashboard or web 
1a10: 61 70 70 2e 0a 0a 2e 49 6e 20 61 20 74 65 73 74  app....In a test
1a20: 20 61 73 20 61 20 73 63 72 69 70 74 0a 2d 2d 2d   as a script.---
1a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1a40: 2d 2d 2d 2d 2d 0a 24 4d 54 5f 4d 45 47 41 54 45  -----.$MT_MEGATE
1a50: 53 54 20 2d 6c 6f 61 64 2d 74 65 73 74 2d 64 61  ST -load-test-da
1a60: 74 61 20 3c 3c 20 45 4f 46 0a 66 6f 6f 2c 62 61  ta << EOF.foo,ba
1a70: 72 2c 20 20 20 31 2e 32 2c 20 20 31 2e 39 2c 20  r,   1.2,  1.9, 
1a80: 3e 0a 66 6f 6f 2c 72 61 62 2c 20 31 2e 30 65 39  >.foo,rab, 1.0e9
1a90: 2c 20 31 30 65 39 2c 20 31 65 39 0a 66 6f 6f 2c  , 10e9, 1e9.foo,
1aa0: 62 6c 61 2c 20 20 20 31 2e 32 2c 20 20 31 2e 39  bla,   1.2,  1.9
1ab0: 2c 20 3c 0a 66 6f 6f 2c 62 61 6c 2c 20 20 20 31  , <.foo,bal,   1
1ac0: 2e 32 2c 20 20 31 2e 32 2c 20 3c 20 20 20 2c 20  .2,  1.2, <   , 
1ad0: 20 20 20 20 2c 43 68 65 63 6b 20 66 6f 72 20 6f      ,Check for o
1ae0: 76 65 72 6c 6f 61 64 0a 66 6f 6f 2c 61 6c 62 2c  verload.foo,alb,
1af0: 20 20 20 31 2e 32 2c 20 20 31 2e 32 2c 20 3c 3d     1.2,  1.2, <=
1b00: 20 20 2c 20 41 6d 70 73 2c 54 68 69 73 20 69 73    , Amps,This is
1b10: 20 74 68 65 20 68 69 67 68 20 70 6f 77 65 72 20   the high power 
1b20: 63 69 72 63 75 69 74 20 74 65 73 74 0a 66 6f 6f  circuit test.foo
1b30: 2c 61 62 6c 2c 20 20 20 31 2e 32 2c 20 20 31 2e  ,abl,   1.2,  1.
1b40: 33 2c 20 30 2e 31 0a 66 6f 6f 2c 62 72 61 2c 20  3, 0.1.foo,bra, 
1b50: 20 20 31 2e 32 2c 20 70 61 73 73 2c 20 73 69 6c    1.2, pass, sil
1b60: 6c 79 20 73 74 75 66 66 0a 66 61 7a 2c 62 61 72  ly stuff.faz,bar
1b70: 2c 20 20 20 20 31 30 2c 20 20 38 6d 41 2c 20 20  ,    10,  8mA,  
1b80: 20 20 20 2c 20 20 20 20 20 2c 22 74 68 69 73 20     ,     ,"this 
1b90: 69 73 20 61 20 63 6f 6d 6d 65 6e 74 22 0a 45 4f  is a comment".EO
1ba0: 46 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  F.--------------
1bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 41 6c 74 65  ----------..Alte
1bc0: 72 6e 61 74 69 76 65 6c 79 20 79 6f 75 20 63 61  rnatively you ca
1bd0: 6e 20 75 73 65 20 6c 6f 67 70 72 6f 20 74 72 69  n use logpro tri
1be0: 67 67 65 72 73 20 74 6f 20 63 61 70 74 75 72 65  ggers to capture
1bf0: 20 76 61 6c 75 65 73 20 61 6e 64 20 69 6e 6a 65   values and inje
1c00: 63 74 20 74 68 65 6d 0a 69 6e 74 6f 20 6d 65 67  ct them.into meg
1c10: 61 74 65 73 74 20 75 73 69 6e 67 20 74 68 65 20  atest using the 
1c20: 2d 73 65 74 2d 76 61 6c 75 65 73 20 6d 65 63 68  -set-values mech
1c30: 61 6e 69 73 6d 3a 0a 0a 2e 4d 65 67 61 74 65 73  anism:...Megates
1c40: 74 20 68 65 6c 70 20 72 65 6c 61 74 65 64 20 74  t help related t
1c50: 6f 20 2d 73 65 74 2d 76 61 6c 75 65 73 0a 2d 2d  o -set-values.--
1c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1c70: 2d 2d 2d 2d 2d 2d 0a 54 65 73 74 20 64 61 74 61  ------.Test data
1c80: 20 63 61 70 74 75 72 65 0a 20 20 2d 73 65 74 2d   capture.  -set-
1c90: 76 61 6c 75 65 73 20 20 20 20 20 20 20 20 20 20  values          
1ca0: 20 20 20 3a 20 75 70 64 61 74 65 20 6f 72 20 73     : update or s
1cb0: 65 74 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  et values in the
1cc0: 20 74 65 73 74 64 61 74 61 20 74 61 62 6c 65 0a   testdata table.
1cd0: 20 20 3a 63 61 74 65 67 6f 72 79 20 20 20 20 20    :category     
1ce0: 20 20 20 20 20 20 20 20 20 20 3a 20 73 65 74 20            : set 
1cf0: 74 68 65 20 63 61 74 65 67 6f 72 79 20 66 69 65  the category fie
1d00: 6c 64 20 28 6f 70 74 69 6f 6e 61 6c 29 0a 20 20  ld (optional).  
1d10: 3a 76 61 72 69 61 62 6c 65 20 20 20 20 20 20 20  :variable       
1d20: 20 20 20 20 20 20 20 20 3a 20 73 65 74 20 74 68          : set th
1d30: 65 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20  e variable name 
1d40: 28 6f 70 74 69 6f 6e 61 6c 29 0a 20 20 3a 76 61  (optional).  :va
1d50: 6c 75 65 20 20 20 20 20 20 20 20 20 20 20 20 20  lue             
1d60: 20 20 20 20 20 3a 20 76 61 6c 75 65 20 6d 65 61       : value mea
1d70: 73 75 72 65 64 20 28 72 65 71 75 69 72 65 64 29  sured (required)
1d80: 0a 20 20 3a 65 78 70 65 63 74 65 64 20 20 20 20  .  :expected    
1d90: 20 20 20 20 20 20 20 20 20 20 20 3a 20 76 61 6c             : val
1da0: 75 65 20 65 78 70 65 63 74 65 64 20 28 72 65 71  ue expected (req
1db0: 75 69 72 65 64 29 0a 20 20 3a 74 6f 6c 20 20 20  uired).  :tol   
1dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd0: 20 3a 20 7c 76 61 6c 75 65 2d 65 78 70 65 63 74   : |value-expect
1de0: 7c 20 3c 3d 20 74 6f 6c 20 28 72 65 71 75 69 72  | <= tol (requir
1df0: 65 64 2c 20 63 61 6e 20 62 65 20 3c 2c 20 3e 2c  ed, can be <, >,
1e00: 20 3e 3d 2c 20 3c 3d 20 6f 72 20 6e 75 6d 62 65   >=, <= or numbe
1e10: 72 29 0a 20 20 3a 75 6e 69 74 73 20 20 20 20 20  r).  :units     
1e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 6e               : n
1e30: 61 6d 65 20 6f 66 20 74 68 65 20 75 6e 69 74 73  ame of the units
1e40: 20 66 6f 72 20 76 61 6c 75 65 2c 20 65 78 70 65   for value, expe
1e50: 63 74 65 64 5f 76 61 6c 75 65 20 65 74 63 2e 20  cted_value etc. 
1e60: 28 6f 70 74 69 6f 6e 61 6c 29 0a 2d 2d 2d 2d 2d  (optional).-----
1e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1e80: 2d 2d 2d 0a 0a 44 61 73 68 62 6f 61 72 64 20 73  ---..Dashboard s
1e90: 65 74 74 69 6e 67 73 0a 7e 7e 7e 7e 7e 7e 7e 7e  ettings.~~~~~~~~
1ea0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 2e 52 75 6e  ~~~~~~~~~~...Run
1eb0: 73 20 74 61 62 20 62 75 74 74 6f 6e 73 2c 20 66  s tab buttons, f
1ec0: 6f 6e 74 20 61 6e 64 20 73 69 7a 65 0a 2d 2d 2d  ont and size.---
1ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
1ee0: 5b 64 61 73 68 62 6f 61 72 64 5d 0a 62 74 6e 2d  [dashboard].btn-
1ef0: 68 65 69 67 68 74 20 78 31 34 0a 62 74 6e 2d 66  height x14.btn-f
1f00: 6f 6e 74 73 7a 20 31 30 0a 63 65 6c 6c 2d 77 69  ontsz 10.cell-wi
1f10: 64 74 68 20 36 30 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  dth 60.---------
1f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 44 61 74 61 62  ---------..Datab
1f30: 61 73 65 20 73 65 74 74 69 6e 67 73 0a 7e 7e 7e  ase settings.~~~
1f40: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a  ~~~~~~~~~~~~~~..
1f50: 2e 44 61 74 61 62 61 73 65 20 63 6f 6e 66 69 67  .Database config
1f60: 20 73 65 74 74 69 6e 67 73 20 69 6e 20 5b 73 65   settings in [se
1f70: 74 75 70 5d 20 73 65 63 74 69 6f 6e 20 6f 66 20  tup] section of 
1f80: 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 0a  megatest.config.
1f90: 5b 77 69 64 74 68 3d 22 37 30 25 22 2c 63 6f 6c  [width="70%",col
1fa0: 73 3d 22 5e 2c 32 6d 2c 32 6d 2c 32 6d 22 2c 66  s="^,2m,2m,2m",f
1fb0: 72 61 6d 65 3d 22 74 6f 70 62 6f 74 22 2c 6f 70  rame="topbot",op
1fc0: 74 69 6f 6e 73 3d 22 68 65 61 64 65 72 22 5d 0a  tions="header"].
1fd0: 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  |===============
1fe0: 3d 3d 3d 3d 3d 3d 3d 0a 7c 56 61 72 20 20 20 20  =======.|Var    
1ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2000: 20 20 20 7c 20 50 75 72 70 6f 73 65 20 20 20 20     | Purpose    
2010: 20 20 20 20 20 20 20 20 7c 20 56 61 6c 69 64 20          | Valid 
2020: 76 61 6c 75 65 73 20 20 20 20 20 20 20 20 20 20  values          
2030: 20 20 7c 20 43 6f 6d 6d 65 6e 74 73 0a 7c 64 65    | Comments.|de
2040: 6c 61 79 2d 6f 6e 2d 62 75 73 79 20 20 20 20 20  lay-on-busy     
2050: 20 20 20 20 20 20 20 20 7c 20 50 72 65 76 65 6e          | Preven
2060: 74 20 63 6f 6e 63 75 72 72 65 6e 74 20 61 63 63  t concurrent acc
2070: 65 73 73 20 69 73 73 75 65 73 20 7c 20 79 65 73  ess issues | yes
2080: 5c 7c 6e 6f 20 6f 72 20 6e 6f 74 20 64 65 66 69  \|no or not defi
2090: 6e 65 64 20 7c 20 44 65 66 61 75 6c 74 3d 6e 6f  ned | Default=no
20a0: 2c 20 6d 61 79 20 68 65 6c 70 20 6f 6e 20 73 6f  , may help on so
20b0: 6d 65 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 20  me network file 
20c0: 73 79 73 74 65 6d 73 2c 20 6d 61 79 20 73 6c 6f  systems, may slo
20d0: 77 20 74 68 69 6e 67 73 20 64 6f 77 6e 20 61 6c  w things down al
20e0: 73 6f 2e 0a 7c 66 61 73 74 73 74 61 72 74 09 09  so..|faststart..
20f0: 20 20 20 7c 20 41 6c 6c 20 64 69 72 65 63 74 20     | All direct 
2100: 66 69 6c 65 20 61 63 63 65 73 73 20 74 6f 20 73  file access to s
2110: 71 6c 69 74 65 20 64 62 20 66 69 6c 65 73 20 7c  qlite db files |
2120: 20 79 65 73 5c 7c 6e 6f 20 6f 72 20 6e 6f 74 20   yes\|no or not 
2130: 64 65 66 69 6e 65 64 20 7c 20 44 65 66 61 75 6c  defined | Defaul
2140: 74 3d 79 65 73 2c 20 73 75 67 67 65 73 74 20 6e  t=yes, suggest n
2150: 6f 20 66 6f 72 20 63 65 6e 74 72 61 6c 20 61 75  o for central au
2160: 74 6f 6d 61 74 65 64 20 73 79 73 74 65 6d 73 20  tomated systems 
2170: 61 6e 64 20 79 65 73 20 66 6f 72 20 69 6e 74 65  and yes for inte
2180: 72 61 63 74 69 76 65 20 75 73 65 0a 7c 68 6f 6d  ractive use.|hom
2190: 65 68 6f 73 74 20 09 09 20 20 20 7c 20 53 74 61  ehost ..   | Sta
21a0: 72 74 20 73 65 72 76 65 72 73 20 6f 6e 20 74 68  rt servers on th
21b0: 69 73 20 68 6f 73 74 20 7c 20 3c 68 6f 73 74 6e  is host | <hostn
21c0: 61 6d 65 3e 20 7c 20 44 65 66 61 75 6c 74 73 20  ame> | Defaults 
21d0: 74 6f 20 6c 6f 63 61 6c 20 68 6f 73 74 0a 7c 68  to local host.|h
21e0: 6f 73 74 6e 61 6d 65 09 09 20 20 20 7c 20 48 6f  ostname..   | Ho
21f0: 73 74 6e 61 6d 65 20 74 6f 20 62 69 6e 64 20 74  stname to bind t
2200: 6f 20 7c 20 3c 68 6f 73 74 6e 61 6d 65 3e 5c 7c  o | <hostname>\|
2210: 2d 09 20 20 7c 20 4f 6e 20 6d 75 6c 74 69 2d 68  -.  | On multi-h
2220: 6f 6d 65 64 20 68 6f 73 74 73 20 61 6c 6c 6f 77  omed hosts allow
2230: 73 20 62 69 6e 64 69 6e 67 20 74 6f 20 73 70 65  s binding to spe
2240: 63 69 66 69 63 20 68 6f 73 74 6e 61 6d 65 0a 7c  cific hostname.|
2250: 6c 6f 77 70 6f 72 74 09 09 20 20 20 7c 20 53 74  lowport..   | St
2260: 61 72 74 20 73 65 61 72 63 68 69 6e 67 20 66 6f  art searching fo
2270: 72 20 61 20 70 6f 72 74 20 61 74 20 74 68 69 73  r a port at this
2280: 20 70 6f 72 74 6e 75 6d 7c 20 33 32 37 36 38 20   portnum| 32768 
2290: 7c 20 0a 7c 72 65 71 75 69 72 65 64 09 09 20 20  | .|required..  
22a0: 20 7c 20 53 65 72 76 65 72 20 72 65 71 75 69 72   | Server requir
22b0: 65 64 20 20 20 20 7c 20 79 65 73 5c 7c 6e 6f 20  ed    | yes\|no 
22c0: 6f 72 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 20  or not defined  
22d0: 7c 20 44 65 66 61 75 6c 74 3d 6e 6f 2c 20 66 6f  | Default=no, fo
22e0: 72 63 65 20 73 74 61 72 74 20 6f 66 20 73 65 72  rce start of ser
22f0: 76 65 72 20 61 6c 77 61 79 73 0a 7c 73 65 72 76  ver always.|serv
2300: 65 72 2d 71 75 65 72 79 2d 74 68 72 65 73 68 6f  er-query-thresho
2310: 6c 64 09 20 20 20 7c 20 53 74 61 72 74 20 73 65  ld.   | Start se
2320: 72 76 65 72 20 77 68 65 6e 20 71 75 65 72 69 65  rver when querie
2330: 73 20 74 61 6b 65 20 6c 6f 6e 67 65 72 20 74 68  s take longer th
2340: 61 6e 20 74 68 69 73 20 7c 20 6e 75 6d 62 65 72  an this | number
2350: 20 69 6e 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   in milliseconds
2360: 20 7c 20 44 65 66 61 75 6c 74 3d 33 30 30 0a 7c   | Default=300.|
2370: 74 69 6d 65 6f 75 74 09 09 20 20 20 7c 20 68 74  timeout..   | ht
2380: 74 70 20 61 70 69 20 74 69 6d 65 6f 75 74 20 09  tp api timeout .
2390: 7c 20 6e 75 6d 62 65 72 20 69 6e 20 68 6f 75 72  | number in hour
23a0: 73 09 20 20 7c 20 44 65 66 61 75 6c 74 20 69 73  s.  | Default is
23b0: 20 31 20 6d 69 6e 75 74 65 2c 20 64 6f 20 6e 6f   1 minute, do no
23c0: 74 20 63 68 61 6e 67 65 0a 7c 3d 3d 3d 3d 3d 3d  t change.|======
23d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
23e0: 0a 0a 54 68 65 20 74 65 73 74 63 6f 6e 66 69 67  ..The testconfig
23f0: 20 46 69 6c 65 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   File.----------
2400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 53 65 74 75 70  ---------..Setup
2410: 20 73 65 63 74 69 6f 6e 0a 7e 7e 7e 7e 7e 7e 7e   section.~~~~~~~
2420: 7e 7e 7e 7e 7e 7e 0a 0a 48 65 61 64 65 72 0a 5e  ~~~~~~..Header.^
2430: 5e 5e 5e 5e 5e 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  ^^^^^..---------
2440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 65 74 75  ----------.[setu
2450: 70 5d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  p].-------------
2460: 2d 2d 2d 2d 2d 2d 0a 0a 54 68 65 20 72 75 6e 73  ------..The runs
2470: 63 72 69 70 74 20 6d 65 74 68 6f 64 20 69 73 20  cript method is 
2480: 61 20 62 72 75 74 65 20 66 6f 72 63 65 20 77 61  a brute force wa
2490: 79 20 74 6f 20 72 75 6e 20 73 63 72 69 70 74 73  y to run scripts
24a0: 20 77 68 65 72 65 20 74 68 65 0a 75 73 65 72 20   where the.user 
24b0: 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  is responsible f
24c0: 6f 72 20 73 65 74 74 69 6e 67 20 53 54 41 54 45  or setting STATE
24d0: 20 61 6e 64 20 53 54 41 54 55 53 0a 0a 2d 2d 2d   and STATUS..---
24e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
24f0: 0a 72 75 6e 73 63 72 69 70 74 20 6d 61 69 6e 2e  .runscript main.
2500: 63 73 68 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  csh.------------
2510: 2d 2d 2d 2d 2d 2d 2d 0a 0a 49 74 65 72 61 74 69  -------..Iterati
2520: 6f 6e 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 2e 53  on.~~~~~~~~~...S
2530: 65 63 74 69 6f 6e 73 20 66 6f 72 20 69 74 65 72  ections for iter
2540: 61 74 69 6f 6e 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ation.----------
2550: 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 66 75 6c 6c 20  --------.# full 
2560: 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 0a 5b 69 74  combinations.[it
2570: 65 6d 73 5d 0a 41 20 78 20 79 0a 42 20 31 20 32  ems].A x y.B 1 2
2580: 0a 0a 23 20 59 69 65 6c 64 73 3a 20 78 2f 31 20  ..# Yields: x/1 
2590: 78 2f 32 20 79 2f 31 20 79 2f 32 0a 0a 23 20 74  x/2 y/1 y/2..# t
25a0: 61 62 6c 65 64 0a 5b 69 74 65 6d 73 74 61 62 6c  abled.[itemstabl
25b0: 65 5d 0a 41 20 78 20 79 0a 42 20 31 20 32 0a 0a  e].A x y.B 1 2..
25c0: 23 20 59 69 65 6c 64 73 20 78 2f 31 20 79 2f 32  # Yields x/1 y/2
25d0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
25e0: 2d 2d 2d 0a 0a 0a 52 65 71 75 69 72 65 6d 65 6e  ---...Requiremen
25f0: 74 73 20 73 65 63 74 69 6f 6e 0a 7e 7e 7e 7e 7e  ts section.~~~~~
2600: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a  ~~~~~~~~~~~~~~~.
2610: 0a 2e 48 65 61 64 65 72 0a 2d 2d 2d 2d 2d 2d 2d  ..Header.-------
2620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 72 65  ------------.[re
2630: 71 75 69 72 65 6d 65 6e 74 73 5d 0a 2d 2d 2d 2d  quirements].----
2640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
2650: 0a 57 61 69 74 20 6f 6e 20 4f 74 68 65 72 20 54  .Wait on Other T
2660: 65 73 74 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ests.~~~~~~~~~~~
2670: 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 2d 2d 2d 2d 2d 2d  ~~~~~~~~..------
2680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
2690: 41 20 6e 6f 72 6d 61 6c 20 77 61 69 74 6f 6e 20  A normal waiton 
26a0: 77 61 69 74 73 20 66 6f 72 20 74 68 65 20 70 72  waits for the pr
26b0: 69 6f 72 20 74 65 73 74 73 20 74 6f 20 62 65 20  ior tests to be 
26c0: 43 4f 4d 50 4c 45 54 45 44 20 0a 23 20 61 6e 64  COMPLETED .# and
26d0: 20 50 41 53 53 2c 20 43 48 45 43 4b 20 6f 72 20   PASS, CHECK or 
26e0: 57 41 49 56 45 44 0a 77 61 69 74 6f 6e 20 74 65  WAIVED.waiton te
26f0: 73 74 31 20 74 65 73 74 32 0a 2d 2d 2d 2d 2d 2d  st1 test2.------
2700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 4e  -------------..N
2710: 4f 54 45 3a 20 44 79 6e 61 6d 69 63 20 77 61 69  OTE: Dynamic wai
2720: 74 6f 6e 20 6c 69 73 74 73 20 6d 75 73 74 20 62  ton lists must b
2730: 65 20 63 61 70 61 62 6c 65 20 6f 66 20 62 65 69  e capable of bei
2740: 6e 67 20 63 61 6c 63 75 6c 61 74 65 64 20 61 74  ng calculated at
2750: 20 74 68 65 0a 62 65 67 69 6e 6e 69 6e 67 20 6f   the.beginning o
2760: 66 20 61 20 72 75 6e 2e 20 54 68 69 73 20 69 73  f a run. This is
2770: 20 62 65 63 61 75 73 65 20 4d 65 67 61 74 65 73   because Megates
2780: 74 20 77 61 6c 6b 73 20 74 68 65 20 74 72 65 65  t walks the tree
2790: 20 6f 66 20 77 61 69 74 6f 6e 73 0a 74 6f 20 63   of waitons.to c
27a0: 72 65 61 74 65 20 74 68 65 20 6c 69 73 74 20 6f  reate the list o
27b0: 66 20 74 65 73 74 73 20 74 6f 20 65 78 65 63 75  f tests to execu
27c0: 74 65 2e 0a 0a 2e 54 68 69 73 20 77 6f 72 6b 73  te....This works
27d0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
27e0: 2d 2d 2d 2d 0a 77 61 69 74 6f 6e 20 5b 73 79 73  ----.waiton [sys
27f0: 74 65 6d 20 73 6f 6d 65 73 63 72 69 70 74 2e 73  tem somescript.s
2800: 68 5d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  h].-------------
2810: 2d 2d 2d 2d 2d 2d 0a 0a 2e 54 68 69 73 20 64 6f  ------...This do
2820: 65 73 20 4e 4f 54 20 77 6f 72 6b 20 28 74 68 65  es NOT work (the
2830: 20 66 75 6c 6c 20 63 6f 6e 74 65 78 74 20 66 6f   full context fo
2840: 72 20 74 68 65 20 74 65 73 74 20 69 73 20 6e 6f  r the test is no
2850: 74 20 61 76 61 69 6c 61 62 6c 65 20 73 6f 20 23  t available so #
2860: 7b 73 68 65 6c 6c 20 2e 2e 2e 7d 20 69 73 20 4e  {shell ...} is N
2870: 4f 54 20 65 6e 61 62 6c 65 64 20 74 6f 20 65 76  OT enabled to ev
2880: 61 6c 75 61 74 65 2e 0a 2d 2d 2d 2d 2d 2d 2d 2d  aluate..--------
2890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 77 61 69 74  -----------.wait
28a0: 6f 6e 20 23 7b 73 68 65 6c 6c 20 73 6f 6d 65 73  on #{shell somes
28b0: 63 72 69 70 74 2e 73 68 7d 0a 2d 2d 2d 2d 2d 2d  cript.sh}.------
28c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 2e  -------------...
28d0: 54 68 69 73 20 64 6f 65 73 20 4e 4f 54 20 77 6f  This does NOT wo
28e0: 72 6b 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  rk.-------------
28f0: 2d 2d 2d 2d 2d 2d 0a 77 61 69 74 6f 6e 20 5b 73  ------.waiton [s
2900: 79 73 74 65 6d 20 73 6f 6d 65 73 63 72 69 70 74  ystem somescript
2910: 5f 74 68 61 74 5f 64 65 70 65 6e 64 73 5f 6f 6e  _that_depends_on
2920: 5f 61 5f 70 72 69 6f 72 5f 74 65 73 74 2e 73 68  _a_prior_test.sh
2930: 5d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ].--------------
2940: 2d 2d 2d 2d 2d 0a 0a 4d 6f 64 65 0a 7e 7e 7e 7e  -----..Mode.~~~~
2950: 0a 0a 54 68 65 20 64 65 66 61 75 6c 74 20 28 69  ..The default (i
2960: 2e 65 2e 20 69 66 20 6d 6f 64 65 20 69 73 20 6e  .e. if mode is n
2970: 6f 74 20 73 70 65 63 69 66 69 65 64 29 20 69 73  ot specified) is
2980: 20 6e 6f 72 6d 61 6c 2e 20 41 6c 6c 20 70 72 65   normal. All pre
2990: 2d 64 65 70 65 6e 64 65 6e 74 20 74 65 73 74 73  -dependent tests
29a0: 0a 6d 75 73 74 20 62 65 20 43 4f 4d 50 4c 45 54  .must be COMPLET
29b0: 45 44 20 61 6e 64 20 50 41 53 53 2c 20 43 48 45  ED and PASS, CHE
29c0: 43 4b 20 6f 72 20 57 41 49 56 45 44 20 62 65 66  CK or WAIVED bef
29d0: 6f 72 65 20 74 68 65 20 74 65 73 74 20 77 69 6c  ore the test wil
29e0: 6c 20 73 74 61 72 74 0a 0a 2d 2d 2d 2d 2d 2d 2d  l start..-------
29f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 72 65  ------------.[re
2a00: 71 75 69 72 65 6d 65 6e 74 73 5d 0a 6d 6f 64 65  quirements].mode
2a10: 20 20 20 6e 6f 72 6d 61 6c 0a 2d 2d 2d 2d 2d 2d     normal.------
2a20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 54  -------------..T
2a30: 68 65 20 74 6f 70 6c 65 76 65 6c 20 6d 6f 64 65  he toplevel mode
2a40: 20 72 65 71 75 69 72 65 73 20 6f 6e 6c 79 20 74   requires only t
2a50: 68 61 74 20 74 68 65 20 70 72 69 6f 72 20 74 65  hat the prior te
2a60: 73 74 73 20 61 72 65 20 43 4f 4d 50 4c 45 54 45  sts are COMPLETE
2a70: 44 2e 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  D...------------
2a80: 2d 2d 2d 2d 2d 2d 2d 0a 5b 72 65 71 75 69 72 65  -------.[require
2a90: 6d 65 6e 74 73 5d 0a 6d 6f 64 65 20 74 6f 70 6c  ments].mode topl
2aa0: 65 76 65 6c 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  evel.-----------
2ab0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 41 20 69 74 65 6d  --------..A item
2ac0: 20 62 61 73 65 64 20 77 61 69 74 6f 6e 20 77 69   based waiton wi
2ad0: 6c 6c 20 73 74 61 72 74 20 69 74 65 6d 73 20 69  ll start items i
2ae0: 6e 20 61 20 74 65 73 74 20 77 68 65 6e 20 74 68  n a test when th
2af0: 65 20 73 61 6d 65 2d 6e 61 6d 65 64 0a 69 74 65  e same-named.ite
2b00: 6d 20 69 73 20 43 4f 4d 50 4c 45 54 45 44 20 61  m is COMPLETED a
2b10: 6e 64 20 50 41 53 53 2c 20 43 48 45 43 4b 20 6f  nd PASS, CHECK o
2b20: 72 20 57 41 49 56 45 44 20 69 6e 20 74 68 65 20  r WAIVED in the 
2b30: 70 72 69 6f 72 20 74 65 73 74 2e 20 54 68 69 73  prior test. This
2b40: 0a 77 61 73 20 68 69 73 74 6f 72 69 63 61 6c 6c  .was historicall
2b50: 79 20 63 61 6c 6c 65 64 20 22 69 74 65 6d 77 61  y called "itemwa
2b60: 69 74 22 20 6d 6f 64 65 2e 20 54 68 65 20 74 65  it" mode. The te
2b70: 72 6d 73 20 22 69 74 65 6d 77 61 69 74 22 20 61  rms "itemwait" a
2b80: 6e 64 0a 22 69 74 65 6d 6d 61 74 63 68 22 20 61  nd."itemmatch" a
2b90: 72 65 20 73 79 6e 6f 6e 79 6d 73 2e 0a 0a 2d 2d  re synonyms...--
2ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2bb0: 2d 0a 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d  -.[requirements]
2bc0: 0a 6d 6f 64 65 20 69 74 65 6d 6d 61 74 63 68 0a  .mode itemmatch.
2bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2be0: 2d 2d 2d 0a 0a 4f 76 65 72 72 69 64 69 6e 67 20  ---..Overriding 
2bf0: 45 6e 76 69 72 6f 6d 65 6e 74 20 56 61 72 69 61  Enviroment Varia
2c00: 62 6c 65 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  bles.~~~~~~~~~~~
2c10: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
2c20: 7e 7e 7e 7e 0a 0a 4f 76 65 72 72 69 64 65 20 76  ~~~~..Override v
2c30: 61 72 69 61 62 6c 65 73 20 62 65 66 6f 72 65 20  ariables before 
2c40: 73 74 61 72 74 69 6e 67 20 74 68 65 20 74 65 73  starting the tes
2c50: 74 2e 20 43 61 6e 20 69 6e 63 6c 75 64 65 20 66  t. Can include f
2c60: 69 6c 65 73 20 28 70 65 72 68 61 70 73 20 67 65  iles (perhaps ge
2c70: 6e 65 72 61 74 65 64 20 62 79 20 6d 65 67 61 74  nerated by megat
2c80: 65 73 74 20 2d 65 6e 76 64 65 6c 74 61 20 6f 72  est -envdelta or
2c90: 20 73 69 6d 69 6c 61 72 29 2e 0a 0a 2d 2d 2d 2d   similar)...----
2ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2cb0: 0a 5b 70 72 65 2d 6c 61 75 6e 63 68 2d 65 6e 76  .[pre-launch-env
2cc0: 2d 76 61 72 73 5d 0a 56 41 52 31 20 76 61 6c 75  -vars].VAR1 valu
2cd0: 65 31 0a 0a 23 20 47 65 74 20 73 6f 6d 65 20 67  e1..# Get some g
2ce0: 65 6e 65 72 61 74 65 64 20 73 65 74 74 69 6e 67  enerated setting
2cf0: 73 0a 5b 69 6e 63 6c 75 64 65 20 2e 2e 2f 67 65  s.[include ../ge
2d00: 6e 65 72 61 74 65 64 2d 76 61 72 73 2e 63 6f 6e  nerated-vars.con
2d10: 66 69 67 5d 0a 0a 23 20 55 73 65 20 74 68 69 73  fig]..# Use this
2d20: 20 74 72 69 63 6b 20 74 6f 20 75 6e 73 65 74 20   trick to unset 
2d30: 76 61 72 69 61 62 6c 65 73 0a 23 7b 73 63 68 65  variables.#{sche
2d40: 6d 65 20 28 75 6e 73 65 74 65 6e 76 20 22 46 4f  me (unsetenv "FO
2d50: 4f 42 41 52 22 29 7d 0a 2d 2d 2d 2d 2d 2d 2d 2d  OBAR")}.--------
2d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 49 74  ------------..It
2d70: 65 6d 6d 61 70 20 48 61 6e 64 6c 69 6e 67 0a 7e  emmap Handling.~
2d80: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a  ~~~~~~~~~~~~~~~.
2d90: 0a 46 6f 72 20 63 61 73 65 73 20 77 65 72 65 20  .For cases were 
2da0: 74 68 65 20 64 65 70 65 6e 64 65 6e 74 20 74 65  the dependent te
2db0: 73 74 20 68 61 73 20 61 20 73 69 6d 69 6c 61 72  st has a similar
2dc0: 20 62 75 74 20 6e 6f 74 20 69 64 65 6e 74 69 63   but not identic
2dd0: 61 6c 0a 69 74 65 6d 70 61 74 68 20 74 6f 20 74  al.itempath to t
2de0: 68 65 20 64 6f 77 6e 73 74 72 65 61 6d 20 74 65  he downstream te
2df0: 73 74 20 61 6e 20 69 74 65 6d 6d 61 70 20 63 61  st an itemmap ca
2e00: 6e 20 61 6c 6c 6f 77 20 66 6f 72 20 69 74 65 6d  n allow for item
2e10: 6d 61 74 63 68 0a 6d 6f 64 65 0a 0a 2e 65 78 61  match.mode...exa
2e20: 6d 70 6c 65 20 66 6f 72 20 72 65 6d 6f 76 69 6e  mple for removin
2e30: 67 20 70 61 72 74 20 6f 66 20 69 74 65 6d 6d 61  g part of itemma
2e40: 70 20 66 6f 72 20 77 61 69 74 6f 6e 20 74 65 73  p for waiton tes
2e50: 74 20 28 65 67 3a 20 69 74 65 6d 20 2b 66 6f 6f  t (eg: item +foo
2e60: 2d 78 2f 62 61 72 2b 20 64 65 70 65 6e 64 73 20  -x/bar+ depends 
2e70: 6f 6e 20 77 61 69 74 6f 6e 27 73 20 69 74 65 6d  on waiton's item
2e80: 20 2b 79 2f 62 61 72 2b 29 0a 2d 2d 2d 2d 2d 2d   +y/bar+).------
2e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 72  -------------.[r
2ea0: 65 71 75 69 72 65 6d 65 6e 74 73 5d 0a 6d 6f 64  equirements].mod
2eb0: 65 20 69 74 65 6d 77 61 69 74 0a 23 20 69 74 65  e itemwait.# ite
2ec0: 6d 6d 61 70 20 3c 69 74 65 6d 20 70 61 74 74 65  mmap <item patte
2ed0: 72 6e 20 66 6f 72 20 74 68 69 73 20 74 65 73 74  rn for this test
2ee0: 3e 20 20 3c 69 74 65 6d 20 72 65 70 6c 61 63 65  >  <item replace
2ef0: 6d 65 6e 74 20 70 61 74 74 65 72 6e 20 66 6f 72  ment pattern for
2f00: 20 77 61 69 74 6f 6e 20 74 65 73 74 3e 0a 69 74   waiton test>.it
2f10: 65 6d 6d 61 70 20 2e 2a 78 2f 20 79 2f 0a 0a 2d  emmap .*x/ y/..-
2f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f30: 2d 2d 0a 0a 2e 65 78 61 6d 70 6c 65 20 66 6f 72  --...example for
2f40: 20 72 65 6d 6f 76 69 6e 67 20 70 61 72 74 20 6f   removing part o
2f50: 66 20 69 74 65 6d 6d 61 70 20 66 6f 72 20 77 61  f itemmap for wa
2f60: 69 74 6f 6e 20 74 65 73 74 20 28 65 67 3a 20 69  iton test (eg: i
2f70: 74 65 6d 20 2b 66 6f 6f 2f 62 61 72 2f 62 61 7a  tem +foo/bar/baz
2f80: 2b 20 69 6e 20 74 68 69 73 20 74 65 73 74 20 64  + in this test d
2f90: 65 70 65 6e 64 73 20 6f 6e 20 77 61 69 74 6f 6e  epends on waiton
2fa0: 27 73 20 69 74 65 6d 20 2b 62 61 7a 2b 29 0a 2d  's item +baz+).-
2fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2fc0: 2d 2d 0a 0a 23 20 23 23 20 70 61 74 74 65 72 6e  --..# ## pattern
2fd0: 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 6e 6f 74   replacement not
2fe0: 65 73 0a 23 0a 23 20 23 23 20 45 78 61 6d 70 6c  es.#.# ## Exampl
2ff0: 65 0a 23 20 23 23 20 52 65 6d 6f 76 65 20 65 76  e.# ## Remove ev
3000: 65 72 79 74 68 69 6e 67 20 75 70 20 74 6f 20 74  erything up to t
3010: 68 65 20 6c 61 73 74 20 2f 0a 5b 72 65 71 75 69  he last /.[requi
3020: 72 65 6d 65 6e 74 73 5d 0a 6d 6f 64 65 20 69 74  rements].mode it
3030: 65 6d 77 61 69 74 0a 23 20 69 74 65 6d 6d 61 70  emwait.# itemmap
3040: 20 3c 69 74 65 6d 20 70 61 74 74 65 72 6e 20 66   <item pattern f
3050: 6f 72 20 74 68 69 73 20 74 65 73 74 3e 20 3c 6e  or this test> <n
3060: 6f 74 68 69 6e 67 20 68 65 72 65 20 69 6e 64 69  othing here indi
3070: 63 61 74 65 73 20 72 65 6d 6f 76 61 6c 3e 0a 69  cates removal>.i
3080: 74 65 6d 6d 61 70 20 2e 2a 2f 0a 2d 2d 2d 2d 2d  temmap .*/.-----
3090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a  --------------..
30a0: 2e 65 78 61 6d 70 6c 65 20 72 65 70 6c 61 63 69  .example replaci
30b0: 6e 67 20 70 61 72 74 20 6f 66 20 69 74 65 6d 6d  ng part of itemm
30c0: 61 70 20 66 6f 72 20 28 65 67 3a 20 69 74 65 6d  ap for (eg: item
30d0: 20 2b 66 6f 6f 2f 31 32 33 34 2b 20 77 69 6c 6c   +foo/1234+ will
30e0: 20 69 6d 70 6c 79 20 77 61 69 74 6f 6e 27 73 20   imply waiton's 
30f0: 69 74 65 6d 20 2b 62 61 72 2f 31 32 33 34 2b 29  item +bar/1234+)
3100: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
3110: 2d 2d 2d 2d 0a 0a 23 0a 23 20 23 23 20 45 78 61  ----..#.# ## Exa
3120: 6d 70 6c 65 0a 23 20 23 23 20 52 65 70 6c 61 63  mple.# ## Replac
3130: 65 20 66 6f 6f 2f 20 77 69 74 68 20 62 61 72 2f  e foo/ with bar/
3140: 0a 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0a  .[requirements].
3150: 6d 6f 64 65 20 69 74 65 6d 77 61 69 74 0a 23 20  mode itemwait.# 
3160: 69 74 65 6d 6d 61 70 20 3c 69 74 65 6d 20 70 61  itemmap <item pa
3170: 74 74 65 72 6e 20 66 6f 72 20 74 68 69 73 20 74  ttern for this t
3180: 65 73 74 3e 20 20 3c 69 74 65 6d 20 72 65 70 6c  est>  <item repl
3190: 61 63 65 6d 65 6e 74 20 70 61 74 74 65 72 6e 20  acement pattern 
31a0: 66 6f 72 20 77 61 69 74 6f 6e 20 74 65 73 74 3e  for waiton test>
31b0: 0a 69 74 65 6d 6d 61 70 20 66 6f 6f 2f 20 62 61  .itemmap foo/ ba
31c0: 72 2f 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  r/..------------
31d0: 2d 2d 2d 2d 2d 2d 2d 0a 0a 2e 65 78 61 6d 70 6c  -------...exampl
31e0: 65 20 66 6f 72 20 62 61 63 6b 72 65 66 65 72 65  e for backrefere
31f0: 6e 63 65 20 28 65 67 3a 20 69 74 65 6d 20 2b 66  nce (eg: item +f
3200: 6f 6f 32 33 2f 74 68 75 64 2b 20 77 69 6c 6c 20  oo23/thud+ will 
3210: 69 6d 70 6c 79 20 77 61 69 74 6f 6e 27 73 20 69  imply waiton's i
3220: 74 65 6d 20 2b 6e 75 6d 2d 32 33 2f 62 61 72 2f  tem +num-23/bar/
3230: 74 68 75 64 2b 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  thud+.----------
3240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 23 20 23 23  ---------.#.# ##
3250: 20 45 78 61 6d 70 6c 65 0a 23 20 23 23 20 63 61   Example.# ## ca
3260: 6e 20 75 73 65 20 5c 7b 6e 75 6d 62 65 72 7d 20  n use \{number} 
3270: 69 6e 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 70  in replacement p
3280: 61 74 74 65 72 6e 20 74 6f 20 62 61 63 6b 72 65  attern to backre
3290: 66 65 72 65 6e 63 65 20 61 20 28 63 61 70 74 75  ference a (captu
32a0: 72 65 29 20 66 72 6f 6d 20 6d 61 74 63 68 69 6e  re) from matchin
32b0: 67 20 70 61 74 74 65 72 6e 20 73 69 6d 69 6c 61  g pattern simila
32c0: 72 20 74 6f 20 73 65 64 20 6f 72 20 70 65 72 6c  r to sed or perl
32d0: 0a 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0a  .[requirements].
32e0: 6d 6f 64 65 20 69 74 65 6d 77 61 69 74 0a 23 20  mode itemwait.# 
32f0: 69 74 65 6d 6d 61 70 20 3c 69 74 65 6d 20 70 61  itemmap <item pa
3300: 74 74 65 72 6e 20 66 6f 72 20 74 68 69 73 20 74  ttern for this t
3310: 65 73 74 3e 20 20 3c 69 74 65 6d 20 72 65 70 6c  est>  <item repl
3320: 61 63 65 6d 65 6e 74 20 70 61 74 74 65 72 6e 20  acement pattern 
3330: 66 6f 72 20 77 61 69 74 6f 6e 20 74 65 73 74 3e  for waiton test>
3340: 0a 69 74 65 6d 6d 61 70 20 66 6f 6f 28 5c 64 2b  .itemmap foo(\d+
3350: 29 2f 20 6e 75 6d 2d 5c 31 2f 62 61 72 2f 0a 0a  )/ num-\1/bar/..
3360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3370: 2d 2d 2d 0a 0a 2e 65 78 61 6d 70 6c 65 20 6d 75  ---...example mu
3380: 6c 74 69 70 6c 65 20 69 74 65 6d 6d 61 70 73 0a  ltiple itemmaps.
3390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
33a0: 2d 2d 2d 0a 0a 23 20 6d 75 6c 74 69 2d 6c 69 6e  ---..# multi-lin
33b0: 65 3b 20 6d 61 74 63 68 65 73 20 61 72 65 20 61  e; matches are a
33c0: 70 70 6c 69 65 64 20 69 6e 20 74 68 65 20 6c 69  pplied in the li
33d0: 73 74 65 64 20 6f 72 64 65 72 0a 23 20 54 68 65  sted order.# The
33e0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 77 6f 75 6c 64   following would
33f0: 20 6d 61 70 3a 0a 23 20 20 20 61 31 32 33 62 33   map:.#   a123b3
3400: 32 31 20 74 6f 20 62 33 32 31 66 6f 6f 61 31 32  21 to b321fooa12
3410: 33 20 74 68 65 6e 20 74 6f 20 33 32 31 66 6f 6f  3 then to 321foo
3420: 61 31 32 33 70 0a 23 0a 5b 72 65 71 75 69 72 65  a123p.#.[require
3430: 6d 65 6e 74 73 5d 0a 69 74 65 6d 6d 61 70 20 28  ments].itemmap (
3440: 61 5c 64 2b 29 28 62 5c 64 2b 29 20 5c 32 66 6f  a\d+)(b\d+) \2fo
3450: 6f 5c 31 0a 20 20 62 28 2e 2a 29 20 5c 31 70 0a  o\1.  b(.*) \1p.
3460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3470: 2d 2d 2d 0a 0a 0a 43 6f 6d 70 6c 65 78 20 6d 61  ---...Complex ma
3480: 70 70 69 6e 67 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  pping.~~~~~~~~~~
3490: 7e 7e 7e 7e 7e 0a 43 6f 6d 70 6c 65 78 20 6d 61  ~~~~~.Complex ma
34a0: 70 70 69 6e 67 73 20 63 61 6e 20 62 65 20 68 61  ppings can be ha
34b0: 6e 64 6c 65 64 20 77 69 74 68 20 61 20 73 65 70  ndled with a sep
34c0: 61 72 61 74 65 20 5b 69 74 65 6d 6d 61 70 5d 20  arate [itemmap] 
34d0: 73 65 63 74 69 6f 6e 20 28 69 6e 73 74 65 61 64  section (instead
34e0: 20 69 66 20 61 6e 20 69 74 65 6d 6d 61 70 20 6c   if an itemmap l
34f0: 69 6e 65 20 69 6e 20 74 68 65 20 5b 72 65 71 75  ine in the [requ
3500: 69 72 65 6d 65 6e 74 73 5d 20 73 65 63 74 69 6f  irements] sectio
3510: 6e 29 0a 0a 45 61 63 68 20 6c 69 6e 65 20 69 6e  n)..Each line in
3520: 20 61 6e 20 69 74 65 6d 6d 61 70 20 73 65 63 74   an itemmap sect
3530: 69 6f 6e 20 73 74 61 72 74 73 20 77 69 74 68 20  ion starts with 
3540: 61 20 77 61 69 74 6f 6e 20 74 65 73 74 20 6e 61  a waiton test na
3550: 6d 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  me followed by a
3560: 6e 20 69 74 65 6d 6d 61 70 20 65 78 70 72 65 73  n itemmap expres
3570: 73 69 6f 6e 0a 0a 2e 65 67 3a 20 54 68 65 20 66  sion...eg: The f
3580: 6f 6c 6c 6f 77 69 6e 67 20 63 61 75 73 65 73 20  ollowing causes 
3590: 77 61 69 74 6f 6e 20 74 65 73 74 20 41 20 69 74  waiton test A it
35a0: 65 6d 20 2b 62 61 72 2f 31 32 33 34 2b 20 74 6f  em +bar/1234+ to
35b0: 20 72 75 6e 20 77 68 65 6e 20 6f 75 72 20 74 65   run when our te
35c0: 73 74 27 73 20 2b 66 6f 6f 2f 31 32 33 34 2b 20  st's +foo/1234+ 
35d0: 69 74 65 6d 20 69 73 20 72 65 71 75 65 73 74 65  item is requeste
35e0: 64 20 61 73 20 77 65 6c 6c 20 61 73 20 63 61 75  d as well as cau
35f0: 73 69 6e 67 20 77 61 69 74 6f 6e 20 74 65 73 74  sing waiton test
3600: 20 42 27 73 20 2b 62 6c 61 68 2b 20 69 74 65 6d   B's +blah+ item
3610: 20 74 6f 20 72 75 6e 20 77 68 65 6e 20 6f 75 72   to run when our
3620: 20 74 65 73 74 27 73 20 2b 73 74 75 66 66 2f 62   test's +stuff/b
3630: 6c 61 68 2b 20 69 74 65 6d 20 69 73 20 72 65 71  lah+ item is req
3640: 75 65 73 74 65 64 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  uested.---------
3650: 2d 2d 2d 2d 2d 0a 5b 69 74 65 6d 6d 61 70 5d 0a  -----.[itemmap].
3660: 41 20 66 6f 6f 2f 20 62 61 72 2f 0a 42 20 73 74  A foo/ bar/.B st
3670: 75 66 66 2f 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  uff/.-----------
3680: 2d 2d 2d 0a 0a 0a 43 6f 6d 70 6c 65 78 20 6d 61  ---...Complex ma
3690: 70 70 69 6e 67 20 65 78 61 6d 70 6c 65 0a 7e 7e  pping example.~~
36a0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
36b0: 7e 7e 7e 7e 7e 0a 0a 0a 2f 2f 20 69 6d 61 67 65  ~~~~~...// image
36c0: 3a 3a 69 74 65 6d 6d 61 70 2e 70 6e 67 5b 5d 0a  ::itemmap.png[].
36d0: 69 6d 61 67 65 3a 3a 63 6f 6d 70 6c 65 78 2d 69  image::complex-i
36e0: 74 65 6d 6d 61 70 2e 70 6e 67 5b 5d 0a 0a 57 65  temmap.png[]..We
36f0: 20 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 69 73   accomplish this
3700: 20 62 79 20 63 6f 6e 66 69 67 75 72 69 6e 67 20   by configuring 
3710: 74 68 65 20 74 65 73 74 63 6f 6e 66 69 67 73 20  the testconfigs 
3720: 6f 66 20 6f 75 72 20 74 65 73 74 73 20 43 20 44  of our tests C D
3730: 20 61 6e 64 20 45 20 61 73 20 66 6f 6c 6c 6f 77   and E as follow
3740: 73 3a 0a 0a 2e 54 65 73 74 63 6f 6e 66 69 67 20  s:...Testconfig 
3750: 66 6f 72 20 54 65 73 74 20 45 20 68 61 73 0a 2d  for Test E has.-
3760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3770: 2d 2d 2d 2d 2d 0a 5b 72 65 71 75 69 72 65 6d 65  -----.[requireme
3780: 6e 74 73 5d 0a 77 61 69 74 6f 6e 20 43 0a 69 74  nts].waiton C.it
3790: 65 6d 6d 61 70 20 28 5c 64 2b 29 2f 72 65 73 20  emmap (\d+)/res 
37a0: 5c 31 2f 62 62 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  \1/bb.----------
37b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 2e 54  ------------...T
37c0: 65 73 74 63 6f 6e 66 69 67 20 66 6f 72 20 54 65  estconfig for Te
37d0: 73 74 20 44 20 68 61 73 0a 2d 2d 2d 2d 2d 2d 2d  st D has.-------
37e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
37f0: 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0a 77  [requirements].w
3800: 61 69 74 6f 6e 20 43 0a 69 74 65 6d 6d 61 70 20  aiton C.itemmap 
3810: 28 5c 64 2b 29 2f 72 65 73 20 5c 31 2f 61 61 0a  (\d+)/res \1/aa.
3820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3830: 2d 2d 2d 2d 2d 2d 0a 0a 2e 54 65 73 74 63 6f 6e  ------...Testcon
3840: 66 69 67 20 66 6f 72 20 54 65 73 74 20 43 20 68  fig for Test C h
3850: 61 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  as.-------------
3860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 72 65 71 75 69  ---------.[requi
3870: 72 65 6d 65 6e 74 73 5d 0a 77 61 69 74 6f 6e 20  rements].waiton 
3880: 41 20 42 0a 0a 5b 69 74 65 6d 6d 61 70 5d 0a 41  A B..[itemmap].A
3890: 20 28 5c 64 2b 29 2f 61 61 20 61 61 2f 5c 31 0a   (\d+)/aa aa/\1.
38a0: 42 20 28 5c 64 2b 29 2f 62 62 20 62 62 2f 5c 31  B (\d+)/bb bb/\1
38b0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
38c0: 2d 2d 2d 2d 2d 2d 2d 0a 0a 2e 54 65 73 74 63 6f  -------...Testco
38d0: 6e 66 69 67 73 20 66 6f 72 20 54 65 73 74 20 42  nfigs for Test B
38e0: 20 61 6e 64 20 54 65 73 74 20 41 20 68 61 76 65   and Test A have
38f0: 20 6e 6f 20 77 61 69 74 6f 6e 20 6f 72 20 69 74   no waiton or it
3900: 65 6d 6d 61 70 20 63 6f 6e 66 69 67 75 72 65 64  emmap configured
3910: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
3920: 2d 2d 2d 2d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----.-----------
3930: 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 2e 57 61 6c 6b 20  --------...Walk 
3940: 74 68 72 6f 75 67 68 20 6f 6e 65 20 69 74 65 6d  through one item
3950: 20 2d 2d 20 77 65 20 77 61 6e 74 20 74 68 65 20   -- we want the 
3960: 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 68 61 70  following to hap
3970: 70 65 6e 20 66 6f 72 20 74 65 73 74 70 61 74 74  pen for testpatt
3980: 20 2b 44 2f 31 2f 72 65 73 2b 20 28 73 65 65 20   +D/1/res+ (see 
3990: 62 6c 75 65 20 62 6f 78 65 73 20 69 6e 20 63 6f  blue boxes in co
39a0: 6d 70 6c 65 78 20 69 74 65 6d 6d 61 70 69 6e 67  mplex itemmaping
39b0: 20 66 69 67 75 72 65 20 61 62 6f 76 65 29 3a 0a   figure above):.
39c0: 0a 2e 20 65 67 20 66 72 6f 6d 20 63 6f 6d 6d 61  .. eg from comma
39d0: 6e 64 20 6c 69 6e 65 20 2b 6d 65 67 61 74 65 73  nd line +megates
39e0: 74 20 2d 72 75 6e 20 2d 74 65 73 74 70 61 74 74  t -run -testpatt
39f0: 20 44 2f 31 2f 72 65 73 20 2d 74 61 72 67 65 74   D/1/res -target
3a00: 20 6d 79 74 61 72 67 65 74 20 2d 72 75 6e 6e 61   mytarget -runna
3a10: 6d 65 20 6d 79 72 75 6e 6e 61 6d 65 2b 0a 2e 20  me myrunname+.. 
3a20: 46 75 6c 6c 20 6c 69 73 74 20 74 6f 20 62 65 20  Full list to be 
3a30: 72 75 6e 20 69 73 20 6e 6f 77 3a 20 2b 44 2f 31  run is now: +D/1
3a40: 2f 72 65 73 2b 0a 2e 20 54 65 73 74 20 44 20 68  /res+.. Test D h
3a50: 61 73 20 61 20 77 61 69 74 6f 6e 20 2d 20 74 65  as a waiton - te
3a60: 73 74 20 43 2e 20 20 54 65 73 74 20 44 27 73 20  st C.  Test D's 
3a70: 69 74 65 6d 6d 61 70 20 72 75 6c 65 20 2b 69 74  itemmap rule +it
3a80: 65 6d 6d 61 70 20 28 5c 64 26 70 6c 75 73 3b 29  emmap (\d&plus;)
3a90: 2f 72 65 73 20 5c 31 2f 61 61 2b 20 2d 3e 20 20  /res \1/aa+ ->  
3aa0: 63 61 75 73 65 73 20 2b 43 2f 31 2f 61 61 2b 20  causes +C/1/aa+ 
3ab0: 74 6f 20 72 75 6e 20 62 65 66 6f 72 65 20 2b 44  to run before +D
3ac0: 2f 31 2f 72 65 73 2b 0a 2e 20 46 75 6c 6c 20 6c  /1/res+.. Full l
3ad0: 69 73 74 20 74 6f 20 62 65 20 72 75 6e 20 69 73  ist to be run is
3ae0: 20 6e 6f 77 3a 20 2b 44 2f 31 2f 72 65 73 2b 2c   now: +D/1/res+,
3af0: 20 2b 43 2f 31 2f 61 61 2b 0a 2e 20 54 65 73 74   +C/1/aa+.. Test
3b00: 20 43 20 77 61 73 20 61 20 77 61 69 74 6f 6e 20   C was a waiton 
3b10: 2d 20 74 65 73 74 20 41 2e 20 54 65 73 74 20 43  - test A. Test C
3b20: 27 73 20 72 75 6c 65 20 2b 41 20 28 5c 64 26 70  's rule +A (\d&p
3b30: 6c 75 73 3b 29 2f 61 61 20 61 61 2f 5c 31 2b 20  lus;)/aa aa/\1+ 
3b40: 2d 3e 20 63 61 75 73 65 73 20 2b 41 2f 61 61 2f  -> causes +A/aa/
3b50: 31 2b 20 74 6f 20 72 75 6e 20 62 65 66 6f 72 65  1+ to run before
3b60: 20 2b 43 2f 31 2f 61 61 2b 0a 2e 20 46 75 6c 6c   +C/1/aa+.. Full
3b70: 20 6c 69 73 74 20 74 6f 20 62 65 20 72 75 6e 20   list to be run 
3b80: 69 73 20 6e 6f 77 3a 20 2b 44 2f 31 2f 72 65 73  is now: +D/1/res
3b90: 2b 2c 20 2b 43 2f 31 2f 61 61 2b 2c 20 2b 41 2f  +, +C/1/aa+, +A/
3ba0: 61 61 2f 31 2b 0a 2e 20 54 65 73 74 20 41 20 68  aa/1+.. Test A h
3bb0: 61 73 20 6e 6f 20 77 61 69 74 6f 6e 73 2e 20 20  as no waitons.  
3bc0: 41 6c 6c 20 77 61 69 74 6f 6e 73 20 6f 66 20 61  All waitons of a
3bd0: 6c 6c 20 74 65 73 74 73 20 69 6e 20 66 75 6c 6c  ll tests in full
3be0: 20 6c 69 73 74 20 68 61 76 65 20 62 65 65 6e 20   list have been 
3bf0: 70 72 6f 63 65 73 73 65 64 2e 20 20 46 75 6c 6c  processed.  Full
3c00: 20 6c 69 73 74 20 69 73 20 66 69 6e 61 6c 69 7a   list is finaliz
3c10: 65 64 2e 0a 0a 0a 0a 69 74 65 6d 73 74 61 62 6c  ed.....itemstabl
3c20: 65 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 41 6e 20  e.~~~~~~~~~~.An 
3c30: 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20 64  alternative to d
3c40: 65 66 69 6e 69 6e 67 20 69 74 65 6d 73 20 69 73  efining items is
3c50: 20 74 68 65 20 69 74 65 6d 73 74 61 62 6c 65 20   the itemstable 
3c60: 73 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 6c  section.  This l
3c70: 65 74 73 20 79 6f 75 20 64 65 66 69 6e 65 20 74  ets you define t
3c80: 68 65 20 69 74 65 6d 70 61 74 68 20 69 6e 20 61  he itempath in a
3c90: 20 74 61 62 6c 65 20 66 6f 72 6d 61 74 20 72 61   table format ra
3ca0: 74 68 65 72 20 74 68 61 6e 20 73 70 65 63 69 66  ther than specif
3cb0: 79 69 6e 67 20 63 6f 6d 70 6f 6e 65 6e 74 73 20  ying components 
3cc0: 61 6e 64 20 72 65 6c 79 69 6e 67 20 6f 6e 20 67  and relying on g
3cd0: 65 74 74 69 6e 67 20 61 6c 6c 20 70 65 72 6d 75  etting all permu
3ce0: 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 6f 73 65  tations of those
3cf0: 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0a 0a 44 79   components...Dy
3d00: 6e 61 6d 69 63 20 46 6c 6f 77 20 44 65 70 65 6e  namic Flow Depen
3d10: 64 65 6e 63 79 20 54 72 65 65 0a 7e 7e 7e 7e 7e  dency Tree.~~~~~
3d20: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
3d30: 7e 7e 7e 7e 7e 7e 7e 0a 0a 2e 41 75 74 6f 67 65  ~~~~~~~...Autoge
3d40: 6e 65 72 61 74 69 6f 6e 20 77 61 69 74 6f 6e 20  neration waiton 
3d50: 6c 69 73 74 20 66 6f 72 20 64 79 6e 61 6d 69 63  list for dynamic
3d60: 20 66 6c 6f 77 20 64 65 70 65 6e 64 65 6e 63 79   flow dependency
3d70: 20 74 72 65 65 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d   trees.---------
3d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 72 65 71 75  ----------.[requ
3d90: 69 72 65 6d 65 6e 74 73 5d 0a 23 20 57 69 74 68  irements].# With
3da0: 20 61 20 74 6f 70 6c 65 76 65 6c 20 74 65 73 74   a toplevel test
3db0: 20 79 6f 75 20 6d 61 79 20 77 69 73 68 20 74 6f   you may wish to
3dc0: 20 67 65 6e 65 72 61 74 65 20 79 6f 75 72 20 6c   generate your l
3dd0: 69 73 74 20 0a 23 20 6f 66 20 74 65 73 74 73 20  ist .# of tests 
3de0: 74 6f 20 72 75 6e 20 64 79 6e 61 6d 69 63 61 6c  to run dynamical
3df0: 6c 79 0a 23 0a 77 61 69 74 6f 6e 20 23 7b 73 68  ly.#.waiton #{sh
3e00: 65 6c 6c 20 67 65 74 2d 76 61 6c 69 64 2d 74 65  ell get-valid-te
3e10: 73 74 73 2d 74 6f 2d 72 75 6e 2e 73 68 7d 0a 2d  sts-to-run.sh}.-
3e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3e30: 2d 2d 0a 0a 52 75 6e 20 74 69 6d 65 20 6c 69 6d  --..Run time lim
3e40: 69 74 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  it.~~~~~~~~~~~~~
3e50: 7e 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ~..-------------
3e60: 2d 2d 2d 2d 0a 5b 72 65 71 75 69 72 65 6d 65 6e  ----.[requiremen
3e70: 74 73 5d 0a 72 75 6e 74 69 6d 65 6c 69 6d 20 31  ts].runtimelim 1
3e80: 68 20 32 6d 20 33 73 20 20 23 20 74 68 69 73 20  h 2m 3s  # this 
3e90: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
3ea0: 6c 79 20 6b 69 6c 6c 20 74 68 65 20 74 65 73 74  ly kill the test
3eb0: 20 69 66 20 69 74 20 72 75 6e 73 20 66 6f 72 20   if it runs for 
3ec0: 6d 6f 72 65 20 74 68 61 6e 20 31 68 20 32 6d 20  more than 1h 2m 
3ed0: 61 6e 64 20 33 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  and 3s.---------
3ee0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 53 6b 69 70 0a 7e  --------..Skip.~
3ef0: 7e 7e 7e 0a 0a 41 20 74 65 73 74 20 77 69 74 68  ~~~..A test with
3f00: 20 61 20 73 6b 69 70 20 73 65 63 74 69 6f 6e 20   a skip section 
3f10: 77 69 6c 6c 20 63 6f 6e 64 69 74 69 6f 6e 61 6c  will conditional
3f20: 20 73 6b 69 70 20 72 75 6e 6e 69 6e 67 2e 0a 0a   skip running...
3f30: 2e 53 6b 69 70 20 73 65 63 74 69 6f 6e 20 65 78  .Skip section ex
3f40: 61 6d 70 6c 65 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ample.----------
3f50: 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 6b 69 70 5d 0a 70  -------.[skip].p
3f60: 72 65 76 72 75 6e 6e 69 6e 67 20 78 0a 23 20 72  revrunning x.# r
3f70: 75 6e 64 65 6c 61 79 20 33 30 6d 20 31 35 73 0a  undelay 30m 15s.
3f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f90: 2d 0a 0a 53 6b 69 70 20 6f 6e 20 53 74 69 6c 6c  -..Skip on Still
3fa0: 2d 72 75 6e 6e 69 6e 67 20 54 65 73 74 73 0a 7e  -running Tests.~
3fb0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
3fc0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 2d 2d 2d 2d  ~~~~~~~~~~..----
3fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
3fe0: 4e 42 2f 2f 20 49 66 20 74 68 65 20 70 72 65 76  NB// If the prev
3ff0: 72 75 6e 6e 69 6e 67 20 6c 69 6e 65 20 65 78 69  running line exi
4000: 73 74 73 20 77 69 74 68 20 2a 61 6e 79 2a 20 76  sts with *any* v
4010: 61 6c 75 65 20 74 68 65 20 74 65 73 74 20 77 69  alue the test wi
4020: 6c 6c 0a 23 20 61 75 74 6f 6d 61 74 69 63 61 6c  ll.# automatical
4030: 6c 79 20 53 4b 49 50 20 69 66 20 74 68 65 20 73  ly SKIP if the s
4040: 61 6d 65 2d 6e 61 6d 65 64 20 74 65 73 74 20 69  ame-named test i
4050: 73 20 63 75 72 72 65 6e 74 6c 79 20 52 55 4e 4e  s currently RUNN
4060: 49 4e 47 2e 20 54 68 65 0a 23 20 22 78 22 20 63  ING. The.# "x" c
4070: 61 6e 20 62 65 20 61 6e 79 20 73 74 72 69 6e 67  an be any string
4080: 2e 20 43 6f 6d 6d 65 6e 74 20 6f 75 74 20 74 68  . Comment out th
4090: 65 20 70 72 65 76 72 75 6e 6e 69 6e 67 20 6c 69  e prevrunning li
40a0: 6e 65 20 74 6f 20 74 75 72 6e 20 6f 66 66 0a 23  ne to turn off.#
40b0: 20 73 6b 69 70 2e 0a 0a 5b 73 6b 69 70 5d 0a 70   skip...[skip].p
40c0: 72 65 76 72 75 6e 6e 69 6e 67 20 78 0a 2d 2d 2d  revrunning x.---
40d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a  --------------..
40e0: 53 6b 69 70 20 69 66 20 61 20 46 69 6c 65 20 45  Skip if a File E
40f0: 78 69 73 74 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  xists.~~~~~~~~~~
4100: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 2d 2d 2d  ~~~~~~~~~~~..---
4110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b  --------------.[
4120: 73 6b 69 70 5d 0a 66 69 6c 65 65 78 69 73 74 73  skip].fileexists
4130: 20 2f 70 61 74 68 2f 74 6f 2f 61 2f 66 69 6c 65   /path/to/a/file
4140: 20 23 20 73 6b 69 70 20 69 66 20 2f 70 61 74 68   # skip if /path
4150: 2f 74 6f 2f 61 2f 66 69 6c 65 20 65 78 69 73 74  /to/a/file exist
4160: 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  s.--------------
4170: 2d 2d 2d 0a 0a 53 6b 69 70 20 69 66 20 61 20 46  ---..Skip if a F
4180: 69 6c 65 20 44 6f 65 73 20 6e 6f 74 20 45 78 69  ile Does not Exi
4190: 73 74 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  st.~~~~~~~~~~~~~
41a0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
41b0: 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
41c0: 2d 2d 2d 0a 5b 73 6b 69 70 5d 0a 66 69 6c 65 6e  ---.[skip].filen
41d0: 6f 74 65 78 69 73 74 73 20 2f 70 61 74 68 2f 74  otexists /path/t
41e0: 6f 2f 61 2f 66 69 6c 65 20 23 20 73 6b 69 70 20  o/a/file # skip 
41f0: 69 66 20 2f 70 61 74 68 2f 74 6f 2f 61 2f 66 69  if /path/to/a/fi
4200: 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  le does not exis
4210: 74 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  t.--------------
4220: 2d 2d 2d 0a 0a 53 6b 69 70 20 69 66 20 61 20 73  ---..Skip if a s
4230: 63 72 69 70 74 20 63 6f 6d 70 6c 65 74 65 73 20  cript completes 
4240: 77 69 74 68 20 30 20 73 74 61 74 75 73 0a 7e 7e  with 0 status.~~
4250: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
4260: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
4270: 7e 7e 7e 7e 7e 7e 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d  ~~~~~~..--------
4280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 6b 69 70 5d  ---------.[skip]
4290: 0a 73 63 72 69 70 74 20 2f 70 61 74 68 2f 74 6f  .script /path/to
42a0: 2f 61 2f 73 63 72 69 70 74 20 23 20 73 6b 69 70  /a/script # skip
42b0: 20 69 66 20 2f 70 61 74 68 2f 74 6f 2f 61 2f 73   if /path/to/a/s
42c0: 63 72 69 70 74 20 63 6f 6d 70 6c 65 74 65 73 20  cript completes 
42d0: 77 69 74 68 20 30 20 73 74 61 74 75 73 0a 2d 2d  with 0 status.--
42e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
42f0: 0a 53 6b 69 70 20 69 66 20 74 65 73 74 20 72 61  .Skip if test ra
4300: 6e 20 6d 6f 72 65 20 72 65 63 65 6e 74 6c 79 20  n more recently 
4310: 74 68 61 6e 20 73 70 65 63 69 66 69 65 64 20 74  than specified t
4320: 69 6d 65 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ime.~~~~~~~~~~~~
4330: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
4340: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
4350: 7e 7e 7e 7e 7e 7e 0a 0a 2e 53 6b 69 70 20 69 66  ~~~~~~...Skip if
4360: 20 74 68 69 73 20 74 65 73 74 20 68 61 73 20 62   this test has b
4370: 65 65 6e 20 72 75 6e 20 69 6e 20 74 68 65 20 70  een run in the p
4380: 61 73 74 20 66 69 66 74 65 65 6e 20 6d 69 6e 75  ast fifteen minu
4390: 74 65 73 20 61 6e 64 20 31 35 20 73 65 63 6f 6e  tes and 15 secon
43a0: 64 73 2e 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ds..------------
43b0: 2d 2d 2d 2d 2d 0a 5b 73 6b 69 70 5d 0a 72 75 6e  -----.[skip].run
43c0: 64 65 6c 61 79 20 31 35 6d 20 31 35 73 0a 2d 2d  delay 15m 15s.--
43d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
43e0: 0a 44 69 73 6b 73 0a 7e 7e 7e 7e 7e 0a 0a 41 20  .Disks.~~~~~..A 
43f0: 64 69 73 6b 73 20 73 65 63 74 69 6f 6e 20 69 6e  disks section in
4400: 20 74 65 73 74 63 6f 6e 66 69 67 20 77 69 6c 6c   testconfig will
4410: 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 64 69   override the di
4420: 73 6b 73 20 73 65 63 74 69 6f 6e 20 69 6e 0a 6d  sks section in.m
4430: 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 2e 20  egatest.config. 
4440: 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64  This can be used
4450: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 64 69 73   to allocate dis
4460: 6b 73 20 6f 6e 20 61 20 70 65 72 2d 74 65 73 74  ks on a per-test
4470: 20 6f 72 20 70 65 72 20 69 74 65 6d 0a 62 61 73   or per item.bas
4480: 69 73 2e 0a 0a 43 6f 6e 74 72 6f 6c 6c 65 64 20  is...Controlled 
4490: 77 61 69 76 65 72 20 70 72 6f 70 61 67 61 74 69  waiver propagati
44a0: 6f 6e 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  on.~~~~~~~~~~~~~
44b0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
44c0: 0a 0a 49 66 20 74 65 73 74 20 69 73 20 46 41 49  ..If test is FAI
44d0: 4c 20 61 6e 64 20 70 72 65 76 69 6f 75 73 20 74  L and previous t
44e0: 65 73 74 20 69 6e 20 72 75 6e 20 77 69 74 68 20  est in run with 
44f0: 73 61 6d 65 20 4d 54 5f 54 41 52 47 45 54 20 69  same MT_TARGET i
4500: 73 20 57 41 49 56 45 44 20 74 68 65 6e 20 61 70  s WAIVED then ap
4510: 70 6c 79 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ply the followin
4520: 67 20 72 75 6c 65 73 20 66 72 6f 6d 20 74 68 65  g rules from the
4530: 20 74 65 73 74 63 6f 6e 66 69 67 3a 0a 49 66 20   testconfig:.If 
4540: 61 20 77 61 69 76 65 72 20 63 68 65 63 6b 20 69  a waiver check i
4550: 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  s specified in t
4560: 68 65 20 74 65 73 74 63 6f 6e 66 69 67 20 61 70  he testconfig ap
4570: 70 6c 79 20 74 68 65 20 63 68 65 63 6b 20 61 6e  ply the check an
4580: 64 20 69 66 20 69 74 20 70 61 73 73 65 73 20 74  d if it passes t
4590: 68 65 6e 20 73 65 74 20 74 68 69 73 20 46 41 49  hen set this FAI
45a0: 4c 20 74 6f 20 57 41 49 56 45 44 0a 0a 57 61 69  L to WAIVED..Wai
45b0: 76 65 72 20 63 68 65 63 6b 20 68 61 73 20 74 77  ver check has tw
45c0: 6f 20 70 61 72 74 73 2c 20 31 29 20 61 20 6c 69  o parts, 1) a li
45d0: 73 74 20 6f 66 20 77 61 69 76 65 72 2c 20 72 75  st of waiver, ru
45e0: 6c 65 6e 61 6d 65 2c 20 66 69 6c 65 70 61 74 74  lename, filepatt
45f0: 65 72 6e 73 20 61 6e 64 20 32 29 20 74 68 65 20  erns and 2) the 
4600: 72 75 6c 65 6e 61 6d 65 20 73 63 72 69 70 74 20  rulename script 
4610: 73 70 65 63 20 28 6e 6f 74 65 20 74 68 61 74 20  spec (note that 
4620: 22 64 69 66 66 22 20 61 6e 64 20 22 6c 6f 67 70  "diff" and "logp
4630: 72 6f 22 20 61 72 65 20 70 72 65 64 65 66 69 6e  ro" are predefin
4640: 65 64 29 0a 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ed)..-----------
4650: 2d 2d 2d 2d 2d 2d 0a 23 23 23 23 23 23 20 45 58  ------.###### EX
4660: 41 4d 50 4c 45 20 46 52 4f 4d 20 74 65 73 74 63  AMPLE FROM testc
4670: 6f 6e 66 69 67 20 23 23 23 23 23 23 23 23 23 0a  onfig #########.
4680: 23 20 6d 61 74 63 68 69 6e 67 20 66 69 6c 65 28  # matching file(
4690: 73 29 20 77 69 6c 6c 20 62 65 20 64 69 66 66 27  s) will be diff'
46a0: 64 20 77 69 74 68 20 70 72 65 76 69 6f 75 73 20  d with previous 
46b0: 72 75 6e 20 61 6e 64 20 6c 6f 67 70 72 6f 20 61  run and logpro a
46c0: 70 70 6c 69 65 64 0a 23 20 69 66 20 50 41 53 53  pplied.# if PASS
46d0: 20 6f 72 20 57 41 52 4e 20 72 65 73 75 6c 74 20   or WARN result 
46e0: 66 72 6f 6d 20 6c 6f 67 70 72 6f 20 74 68 65 6e  from logpro then
46f0: 20 57 41 49 56 45 52 20 73 74 61 74 65 20 69 73   WAIVER state is
4700: 20 73 65 74 0a 23 0a 5b 77 61 69 76 65 72 73 5d   set.#.[waivers]
4710: 0a 23 20 6c 6f 67 70 72 6f 5f 66 69 6c 65 20 20  .# logpro_file  
4720: 20 20 72 75 6c 65 6e 61 6d 65 20 20 20 20 20 20    rulename      
4730: 69 6e 70 75 74 5f 67 6c 6f 62 0a 77 61 69 76 65  input_glob.waive
4740: 72 5f 31 20 20 20 20 20 20 20 20 20 6c 6f 67 70  r_1         logp
4750: 72 6f 20 20 20 20 20 20 20 20 6c 6f 6f 6b 69 74  ro        lookit
4760: 74 6d 70 2e 6c 6f 67 0a 0a 5b 77 61 69 76 65 72  tmp.log..[waiver
4770: 5f 72 75 6c 65 73 5d 0a 0a 23 20 54 68 69 73 20  _rules]..# This 
4780: 62 75 69 6c 74 69 6e 20 72 75 6c 65 20 69 73 20  builtin rule is 
4790: 74 68 65 20 64 65 66 61 75 6c 74 20 69 66 20 74  the default if t
47a0: 68 65 72 65 20 69 73 20 6e 6f 20 3c 77 61 69 76  here is no <waiv
47b0: 65 72 6e 61 6d 65 3e 2e 6c 6f 67 70 72 6f 20 66  ername>.logpro f
47c0: 69 6c 65 0a 23 20 64 69 66 66 20 20 20 64 69 66  ile.# diff   dif
47d0: 66 20 25 66 69 6c 65 31 25 20 25 66 69 6c 65 32  f %file1% %file2
47e0: 25 0a 0a 23 20 54 68 69 73 20 62 75 69 6c 74 69  %..# This builti
47f0: 6e 20 72 75 6c 65 20 69 73 20 61 70 70 6c 69 65  n rule is applie
4800: 64 20 69 66 20 61 20 3c 77 61 69 76 65 72 6e 61  d if a <waiverna
4810: 6d 65 3e 2e 6c 6f 67 70 72 6f 20 66 69 6c 65 20  me>.logpro file 
4820: 65 78 69 73 74 73 0a 23 20 6c 6f 67 70 72 6f 20  exists.# logpro 
4830: 64 69 66 66 20 25 66 69 6c 65 31 25 20 25 66 69  diff %file1% %fi
4840: 6c 65 32 25 20 7c 20 6c 6f 67 70 72 6f 20 25 77  le2% | logpro %w
4850: 61 69 76 65 72 6e 61 6d 65 25 2e 6c 6f 67 70 72  aivername%.logpr
4860: 6f 20 25 77 61 69 76 65 72 6e 61 6d 65 25 2e 68  o %waivername%.h
4870: 74 6d 6c 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  tml.------------
4880: 2d 2d 2d 2d 2d 0a 0a 45 7a 73 74 65 70 73 0a 7e  -----..Ezsteps.~
4890: 7e 7e 7e 7e 7e 7e 0a 0a 2e 45 78 61 6d 70 6c 65  ~~~~~~...Example
48a0: 20 65 7a 73 74 65 70 73 20 77 69 74 68 20 6c 6f   ezsteps with lo
48b0: 67 70 72 6f 20 72 75 6c 65 73 0a 2d 2d 2d 2d 2d  gpro rules.-----
48c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 65 7a  ------------.[ez
48d0: 73 74 65 70 73 5d 0a 6c 6f 6f 6b 69 74 74 6d 70  steps].lookittmp
48e0: 20 20 20 6c 73 20 2f 74 6d 70 0a 0a 5b 6c 6f 67     ls /tmp..[log
48f0: 70 72 6f 5d 0a 6c 6f 6f 6b 69 74 74 6d 70 20 3b  pro].lookittmp ;
4900: 3b 20 4e 6f 74 65 3a 20 63 6f 6e 66 69 67 20 66  ; Note: config f
4910: 69 6c 65 20 66 6f 72 6d 61 74 20 73 75 70 70 6f  ile format suppo
4920: 72 74 73 20 6d 75 6c 74 69 2d 6c 69 6e 65 20 65  rts multi-line e
4930: 6e 74 72 69 65 73 20 77 68 65 72 65 20 6c 65 61  ntries where lea
4940: 64 69 6e 67 20 77 68 69 74 65 73 70 61 63 65 20  ding whitespace 
4950: 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  is removed from 
4960: 65 61 63 68 20 6c 69 6e 65 0a 20 20 3b 3b 20 20  each line.  ;;  
4970: 20 20 20 61 20 62 6c 61 6e 6b 20 6c 69 6e 65 20     a blank line 
4980: 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 65 6e  indicates the en
4990: 64 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 20 6f  d of the block o
49a0: 66 20 74 65 78 74 20 0a 20 20 28 65 78 70 65 63  f text .  (expec
49b0: 74 3a 72 65 71 75 69 72 65 64 20 69 6e 20 22 4c  t:required in "L
49c0: 6f 67 46 69 6c 65 42 6f 64 79 22 20 3e 20 30 20  ogFileBody" > 0 
49d0: 22 41 20 66 69 6c 65 20 6e 61 6d 65 20 74 68 61  "A file name tha
49e0: 74 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 65  t should never e
49f0: 78 69 73 74 21 22 20 23 2f 54 68 69 73 20 69 73  xist!" #/This is
4a00: 20 61 20 61 77 66 75 6c 6c 79 20 73 74 75 70 69   a awfully stupi
4a10: 64 20 66 69 6c 65 20 6e 61 6d 65 20 74 68 61 74  d file name that
4a20: 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 62 65   should never be
4a30: 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 74 65   found in the te
4a40: 6d 70 20 64 69 72 2f 29 0a 0a 2d 2d 2d 2d 2d 2d  mp dir/)..------
4a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20  -----------..To 
4a60: 74 72 61 6e 73 66 65 72 20 74 68 65 20 65 6e 76  transfer the env
4a70: 69 72 6f 6e 6d 65 6e 74 20 74 6f 20 74 68 65 20  ironment to the 
4a80: 6e 65 78 74 20 73 74 65 70 20 79 6f 75 20 63 61  next step you ca
4a90: 6e 20 64 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69  n do the followi
4aa0: 6e 67 3a 0a 0a 2e 50 72 6f 70 61 67 61 74 65 20  ng:...Propagate 
4ab0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 74 6f 20 6e  environment to n
4ac0: 65 78 74 20 73 74 65 70 0a 2d 2d 2d 2d 2d 2d 2d  ext step.-------
4ad0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4ae0: 2d 2d 2d 2d 2d 0a 24 4d 54 5f 4d 45 47 41 54 45  -----.$MT_MEGATE
4af0: 53 54 20 2d 65 6e 76 32 66 69 6c 65 20 2e 65 7a  ST -env2file .ez
4b00: 73 74 65 70 73 2f 24 7b 73 74 65 70 6e 61 6d 65  steps/${stepname
4b10: 7d 09 20 20 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  }.  .-----------
4b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b30: 2d 0a 0a 53 63 72 69 70 74 73 0a 7e 7e 7e 7e 7e  -..Scripts.~~~~~
4b40: 7e 7e 0a 0a 2e 53 70 65 63 69 66 79 69 6e 67 20  ~~...Specifying 
4b50: 73 63 72 69 70 74 73 20 69 6e 6c 69 6e 65 20 28  scripts inline (
4b60: 62 65 73 74 20 75 73 65 64 20 66 6f 72 20 6f 6e  best used for on
4b70: 6c 79 20 73 69 6d 70 6c 65 20 73 63 72 69 70 74  ly simple script
4b80: 73 29 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  s).-------------
4b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
4ba0: 5b 73 63 72 69 70 74 73 5d 0a 6c 6f 61 64 64 62  [scripts].loaddb
4bb0: 20 23 21 2f 62 69 6e 2f 62 61 73 68 0a 20 20 73   #!/bin/bash.  s
4bc0: 71 6c 69 74 65 33 20 24 31 20 3c 3c 45 4f 46 0a  qlite3 $1 <<EOF.
4bd0: 20 20 2e 6d 6f 64 65 20 74 61 62 73 0a 20 20 2e    .mode tabs.  .
4be0: 69 6d 70 6f 72 74 20 24 32 20 64 61 74 61 0a 20  import $2 data. 
4bf0: 20 2e 71 0a 20 20 45 4f 46 0a 2d 2d 2d 2d 2d 2d   .q.  EOF.------
4c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4c10: 2d 2d 2d 2d 2d 2d 0a 0a 54 68 65 20 61 62 6f 76  ------..The abov
4c20: 65 20 73 6e 69 70 70 65 74 20 72 65 73 75 6c 74  e snippet result
4c30: 73 20 69 6e 20 74 68 65 20 63 72 65 61 74 69 6f  s in the creatio
4c40: 6e 20 6f 66 20 61 6e 20 65 78 65 63 75 74 61 62  n of an executab
4c50: 6c 65 20 73 63 72 69 70 74 0a 63 61 6c 6c 65 64  le script.called
4c60: 20 22 6c 6f 61 64 64 62 22 20 69 6e 20 74 68 65   "loaddb" in the
4c70: 20 74 65 73 74 20 64 69 72 65 63 74 6f 72 79 2e   test directory.
4c80: 20 4e 4f 54 45 3a 20 65 76 65 72 79 20 6c 69 6e   NOTE: every lin
4c90: 65 20 69 6e 20 74 68 65 20 73 63 72 69 70 74 0a  e in the script.
4ca0: 6d 75 73 74 20 62 65 20 70 72 65 66 69 78 65 64  must be prefixed
4cb0: 20 77 69 74 68 20 74 68 65 20 65 78 61 63 74 20   with the exact 
4cc0: 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 73  same number of s
4cd0: 70 61 63 65 73 2e 20 4c 69 6e 65 73 20 62 65 67  paces. Lines beg
4ce0: 69 6e 6e 69 6e 67 0a 77 69 74 68 20 61 20 23 20  inning.with a # 
4cf0: 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b 20 61 73  will not work as
4d00: 20 65 78 70 65 63 74 65 64 2e 20 43 75 72 72 65   expected. Curre
4d10: 6e 74 6c 79 20 79 6f 75 20 63 61 6e 6e 6f 74 20  ntly you cannot 
4d20: 69 6e 64 65 6e 74 0a 69 6e 74 65 72 6d 65 64 69  indent.intermedi
4d30: 61 74 65 20 6c 69 6e 65 73 2e 0a 0a 2e 46 75 6c  ate lines....Ful
4d40: 6c 20 65 78 61 6d 70 6c 65 20 77 69 74 68 20 65  l example with e
4d50: 7a 73 74 65 70 73 2c 20 6c 6f 67 70 72 6f 20 72  zsteps, logpro r
4d60: 75 6c 65 73 2c 20 73 63 72 69 70 74 73 20 65 74  ules, scripts et
4d70: 63 2e 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  c..-------------
4d80: 2d 2d 2d 2d 0a 23 20 59 6f 75 20 63 61 6e 20 69  ----.# You can i
4d90: 6e 63 6c 75 64 65 20 61 20 63 6f 6d 6d 6f 6e 20  nclude a common 
4da0: 66 69 6c 65 0a 23 0a 5b 69 6e 63 6c 75 64 65 20  file.#.[include 
4db0: 23 7b 67 65 74 65 6e 76 20 4d 54 5f 52 55 4e 5f  #{getenv MT_RUN_
4dc0: 41 52 45 41 5f 48 4f 4d 45 7d 2f 67 6c 6f 62 61  AREA_HOME}/globa
4dd0: 6c 2d 74 65 73 74 63 6f 6e 66 69 67 2e 69 6e 63  l-testconfig.inc
4de0: 5d 0a 0a 23 20 55 73 65 20 22 76 61 72 22 20 66  ]..# Use "var" f
4df0: 6f 72 20 61 20 73 63 72 61 74 63 68 20 70 61 64  or a scratch pad
4e00: 0a 23 0a 5b 76 61 72 5d 0a 64 75 6d 70 73 71 6c  .#.[var].dumpsql
4e10: 20 73 65 6c 65 63 74 20 2a 20 66 72 6f 6d 20 64   select * from d
4e20: 61 74 61 3b 0a 73 65 70 73 74 72 20 2e 2e 2e 2e  ata;.sepstr ....
4e30: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e  ................
4e40: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e  ................
4e50: 2e 0a 0a 23 20 4e 4f 54 20 49 4d 50 4c 45 4d 45  ...# NOT IMPLEME
4e60: 4e 54 45 44 20 59 45 54 21 0a 23 0a 5b 65 7a 73  NTED YET!.#.[ezs
4e70: 74 65 70 73 2d 61 64 64 65 6e 64 75 6d 5d 0a 70  teps-addendum].p
4e80: 72 65 73 63 72 69 70 74 20 73 6f 6d 65 74 68 69  rescript somethi
4e90: 6e 67 2e 73 68 0a 70 6f 73 74 73 63 72 69 70 74  ng.sh.postscript
4ea0: 20 73 6f 6d 65 74 68 69 6e 67 32 2e 73 68 0a 0a   something2.sh..
4eb0: 23 20 41 64 64 20 61 64 64 69 74 69 6f 6e 61 6c  # Add additional
4ec0: 20 73 74 65 70 73 20 68 65 72 65 2e 20 46 6f 72   steps here. For
4ed0: 6d 61 74 20 69 73 20 22 73 74 65 70 6e 61 6d 65  mat is "stepname
4ee0: 20 73 63 72 69 70 74 22 0a 5b 65 7a 73 74 65 70   script".[ezstep
4ef0: 73 5d 0a 69 6d 70 6f 72 74 64 62 20 6c 6f 61 64  s].importdb load
4f00: 64 62 20 70 72 6f 64 2e 64 62 20 70 72 6f 64 2e  db prod.db prod.
4f10: 73 71 6c 0a 64 75 6d 70 70 72 6f 64 20 64 75 6d  sql.dumpprod dum
4f20: 70 64 61 74 61 20 70 72 6f 64 2e 64 62 20 22 23  pdata prod.db "#
4f30: 7b 67 65 74 20 76 61 72 20 64 75 6d 70 73 71 6c  {get var dumpsql
4f40: 7d 22 0a 64 69 66 66 20 28 65 63 68 6f 20 22 70  }".diff (echo "p
4f50: 72 6f 64 23 7b 67 65 74 20 76 61 72 20 73 65 70  rod#{get var sep
4f60: 73 74 72 7d 74 65 73 74 22 3b 64 69 66 66 20 2d  str}test";diff -
4f70: 2d 73 69 64 65 2d 62 79 2d 73 69 64 65 20 5c 0a  -side-by-side \.
4f80: 20 20 20 20 20 64 75 6d 70 70 72 6f 64 2e 6c 6f       dumpprod.lo
4f90: 67 20 72 65 66 65 72 65 6e 63 65 2e 6c 6f 67 20  g reference.log 
4fa0: 3b 65 63 68 6f 20 44 49 46 46 44 4f 4e 45 29 0a  ;echo DIFFDONE).
4fb0: 0a 5b 73 63 72 69 70 74 73 5d 0a 6c 6f 61 64 64  .[scripts].loadd
4fc0: 62 20 23 21 2f 62 69 6e 2f 62 61 73 68 0a 20 20  b #!/bin/bash.  
4fd0: 73 71 6c 69 74 65 33 20 24 31 20 3c 3c 45 4f 46  sqlite3 $1 <<EOF
4fe0: 0a 20 20 2e 6d 6f 64 65 20 74 61 62 73 0a 20 20  .  .mode tabs.  
4ff0: 2e 69 6d 70 6f 72 74 20 24 32 20 64 61 74 61 0a  .import $2 data.
5000: 20 20 2e 71 0a 20 20 45 4f 46 0a 0a 64 75 6d 70    .q.  EOF..dump
5010: 64 61 74 61 20 23 21 2f 62 69 6e 2f 62 61 73 68  data #!/bin/bash
5020: 0a 20 20 73 71 6c 69 74 65 33 20 24 31 20 3c 3c  .  sqlite3 $1 <<
5030: 45 4f 46 0a 20 20 2e 73 65 70 61 72 61 74 6f 72  EOF.  .separator
5040: 20 2c 0a 20 20 24 32 0a 20 20 2e 71 0a 20 20 45   ,.  $2.  .q.  E
5050: 4f 46 0a 0a 23 20 54 65 73 74 20 72 65 71 75 69  OF..# Test requi
5060: 72 65 6d 65 6e 74 73 20 61 72 65 20 73 70 65 63  rements are spec
5070: 69 66 69 65 64 20 68 65 72 65 0a 5b 72 65 71 75  ified here.[requ
5080: 69 72 65 6d 65 6e 74 73 5d 0a 77 61 69 74 6f 6e  irements].waiton
5090: 20 73 65 74 75 70 0a 70 72 69 6f 72 69 74 79 20   setup.priority 
50a0: 30 0a 0a 23 20 49 74 65 72 61 74 69 6f 6e 20 66  0..# Iteration f
50b0: 6f 72 20 79 6f 75 72 20 74 65 73 74 20 69 73 20  or your test is 
50c0: 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 74 68  controlled by th
50d0: 65 20 69 74 65 6d 73 20 73 65 63 74 69 6f 6e 0a  e items section.
50e0: 23 20 54 68 65 20 63 6f 6d 70 6c 69 63 61 74 65  # The complicate
50f0: 64 20 69 66 20 69 73 20 6e 65 65 64 65 64 20 74  d if is needed t
5100: 6f 20 61 6c 6c 6f 77 20 70 72 6f 63 65 73 73 69  o allow processi
5110: 6e 67 20 6f 66 20 74 68 65 20 63 6f 6e 66 69 67  ng of the config
5120: 20 66 6f 72 20 74 68 65 20 64 61 73 68 62 6f 61   for the dashboa
5130: 72 64 20 77 68 65 6e 20 74 68 65 72 65 20 61 72  rd when there ar
5140: 65 20 6e 6f 20 61 63 74 75 61 6c 20 72 75 6e 73  e no actual runs
5150: 2e 0a 5b 69 74 65 6d 73 5d 0a 54 48 49 4e 47 4e  ..[items].THINGN
5160: 41 4d 45 20 5b 73 79 73 74 65 6d 20 67 65 6e 65  AME [system gene
5170: 72 61 74 65 74 68 69 6e 67 73 2e 73 68 20 7c 20  ratethings.sh | 
5180: 73 6f 72 74 20 2d 75 5d 0a 0a 23 20 4c 6f 67 70  sort -u]..# Logp
5190: 72 6f 20 72 75 6c 65 73 20 66 6f 72 20 65 61 63  ro rules for eac
51a0: 68 20 73 74 65 70 20 63 61 6e 20 62 65 20 63 61  h step can be ca
51b0: 70 74 75 72 65 64 20 68 65 72 65 20 69 6e 20 74  ptured here in t
51c0: 68 65 20 74 65 73 74 63 6f 6e 66 69 67 0a 23 20  he testconfig.# 
51d0: 6e 6f 74 65 3a 20 54 68 65 20 3b 3b 20 61 66 74  note: The ;; aft
51e0: 65 72 20 74 68 65 20 73 74 65 70 6e 61 6d 65 20  er the stepname 
51f0: 61 6e 64 20 74 68 65 20 6c 65 61 64 69 6e 67 20  and the leading 
5200: 77 68 69 74 65 73 70 61 63 65 20 61 72 65 20 72  whitespace are r
5210: 65 71 75 69 72 65 64 0a 23 0a 5b 6c 6f 67 70 72  equired.#.[logpr
5220: 6f 5d 0a 69 6e 70 75 74 64 62 20 3b 3b 20 0a 20  o].inputdb ;; . 
5230: 20 28 65 78 70 65 63 74 3a 69 67 6e 6f 72 65 20   (expect:ignore 
5240: 20 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64    in "LogFileBod
5250: 79 22 20 20 3c 20 39 39 20 22 49 67 6e 6f 72 65  y"  < 99 "Ignore
5260: 20 65 72 72 6f 72 20 69 6e 20 63 6f 6d 6d 65 6e   error in commen
5270: 74 73 22 20 20 20 20 20 20 23 2f 5e 5c 2f 5c 2f  ts"      #/^\/\/
5280: 2e 2a 65 72 72 6f 72 2f 29 0a 20 20 28 65 78 70  .*error/).  (exp
5290: 65 63 74 3a 77 61 72 6e 69 6e 67 20 20 69 6e 20  ect:warning  in 
52a0: 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 20 3d  "LogFileBody"  =
52b0: 20 30 20 22 41 6e 79 20 77 61 72 6e 69 6e 67 22   0 "Any warning"
52c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52d0: 20 20 20 20 23 2f 77 61 72 6e 2f 29 0a 20 20 28      #/warn/).  (
52e0: 65 78 70 65 63 74 3a 72 65 71 75 69 72 65 64 20  expect:required 
52f0: 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22  in "LogFileBody"
5300: 20 20 3e 20 30 20 22 53 6f 6d 65 20 64 61 74 61    > 0 "Some data
5310: 20 66 6f 75 6e 64 22 20 20 20 20 20 20 20 20 20   found"         
5320: 20 20 20 20 20 20 20 23 2f 5e 5b 61 2d 7a 5d 7b         #/^[a-z]{
5330: 33 2c 34 7d 5b 30 2d 39 5d 2b 5f 72 2e 2a 2f 29  3,4}[0-9]+_r.*/)
5340: 0a 0a 64 69 66 66 20 3b 3b 20 0a 20 20 28 65 78  ..diff ;; .  (ex
5350: 70 65 63 74 3a 69 67 6e 6f 72 65 20 20 20 69 6e  pect:ignore   in
5360: 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 20   "LogFileBody"  
5370: 3c 20 39 39 20 22 49 67 6e 6f 72 65 20 65 72 72  < 99 "Ignore err
5380: 6f 72 20 69 6e 20 63 6f 6d 6d 65 6e 74 73 22 20  or in comments" 
5390: 20 20 20 20 20 23 2f 5e 5c 2f 5c 2f 2e 2a 65 72       #/^\/\/.*er
53a0: 72 6f 72 2f 29 0a 20 20 28 65 78 70 65 63 74 3a  ror/).  (expect:
53b0: 77 61 72 6e 69 6e 67 20 20 69 6e 20 22 4c 6f 67  warning  in "Log
53c0: 46 69 6c 65 42 6f 64 79 22 20 20 3d 20 30 20 22  FileBody"  = 0 "
53d0: 41 6e 79 20 77 61 72 6e 69 6e 67 22 20 20 20 20  Any warning"    
53e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53f0: 23 2f 77 61 72 6e 2f 29 0a 20 20 28 65 78 70 65  #/warn/).  (expe
5400: 63 74 3a 65 72 72 6f 72 20 20 20 20 69 6e 20 22  ct:error    in "
5410: 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 20 3d 20  LogFileBody"  = 
5420: 30 20 22 3c 20 6f 72 20 3e 20 69 6e 64 69 63 61  0 "< or > indica
5430: 74 65 20 6d 69 73 73 69 6e 67 20 65 6e 74 72 79  te missing entry
5440: 22 20 20 28 6c 69 73 74 20 23 2f 28 3c 7c 3e 29  "  (list #/(<|>)
5450: 2f 20 20 20 23 2f 65 72 72 6f 72 2f 69 29 29 0a  /   #/error/i)).
5460: 20 20 28 65 78 70 65 63 74 3a 65 72 72 6f 72 20    (expect:error 
5470: 20 20 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f     in "LogFileBo
5480: 64 79 22 20 20 3d 20 30 20 22 44 69 66 66 65 72  dy"  = 0 "Differ
5490: 65 6e 63 65 20 69 6e 20 64 61 74 61 22 20 20 20  ence in data"   
54a0: 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20            (list 
54b0: 23 2f 5c 73 2b 5c 7c 5c 73 2b 2f 20 23 2f 65 72  #/\s+\|\s+/ #/er
54c0: 72 6f 72 2f 69 29 29 0a 20 20 28 65 78 70 65 63  ror/i)).  (expec
54d0: 74 3a 72 65 71 75 69 72 65 64 20 69 6e 20 22 4c  t:required in "L
54e0: 6f 67 46 69 6c 65 42 6f 64 79 22 20 20 3e 20 30  ogFileBody"  > 0
54f0: 20 22 44 49 46 46 44 4f 4e 45 20 4d 61 72 6b 65   "DIFFDONE Marke
5500: 72 20 66 6f 75 6e 64 22 20 20 20 20 20 20 20 20  r found"        
5510: 20 20 23 2f 44 49 46 46 44 4f 4e 45 2f 29 0a 20    #/DIFFDONE/). 
5520: 20 28 65 78 70 65 63 74 3a 72 65 71 75 69 72 65   (expect:require
5530: 64 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64  d in "LogFileBod
5540: 79 22 20 20 3e 20 30 20 22 53 6f 6d 65 20 74 68  y"  > 0 "Some th
5550: 69 6e 67 73 20 66 6f 75 6e 64 22 20 20 20 20 20  ings found"     
5560: 20 20 20 20 20 20 20 20 20 23 2f 5e 5b 61 2d 7a           #/^[a-z
5570: 5d 7b 33 2c 34 7d 5b 30 2d 39 5d 2b 5f 72 2e 2a  ]{3,4}[0-9]+_r.*
5580: 2f 29 0a 0a 23 20 4e 4f 54 20 49 4d 50 4c 45 4d  /)..# NOT IMPLEM
5590: 45 4e 54 45 44 20 59 45 54 21 0a 23 0a 23 23 20  ENTED YET!.#.## 
55a0: 41 6c 73 6f 3a 20 65 6e 68 61 6e 63 65 20 6c 6f  Also: enhance lo
55b0: 67 70 72 6f 20 74 6f 20 74 61 6b 65 20 6c 69 73  gpro to take lis
55c0: 74 20 6f 66 20 63 6f 6d 6d 61 6e 64 20 66 69 6c  t of command fil
55d0: 65 73 3a 20 66 69 6c 65 31 2c 66 69 6c 65 32 2e  es: file1,file2.
55e0: 2e 2e 0a 5b 77 61 69 76 65 72 73 5d 0a 63 72 65  ...[waivers].cre
55f0: 61 74 65 70 72 6f 64 7b 74 61 72 67 65 74 3d 25  ateprod{target=%
5600: 37 38 2f 25 2f 25 2f 25 7d 20 3b 3b 0a 20 20 28  78/%/%/%} ;;.  (
5610: 64 69 73 61 62 6c 65 3a 72 65 71 75 69 72 65 64  disable:required
5620: 20 22 44 49 46 46 44 4f 4e 45 20 4d 61 72 6b 65   "DIFFDONE Marke
5630: 72 20 66 6f 75 6e 64 22 29 0a 20 20 28 64 69 73  r found").  (dis
5640: 61 62 6c 65 3a 65 72 72 6f 72 20 20 20 20 22 53  able:error    "S
5650: 6f 6d 65 20 65 72 72 6f 72 22 29 0a 20 20 28 65  ome error").  (e
5660: 78 70 65 63 74 3a 77 61 69 76 65 20 20 69 6e 20  xpect:waive  in 
5670: 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 3c 20  "LogFileBody" < 
5680: 39 39 20 22 57 61 69 76 65 20 69 66 20 66 61 69  99 "Waive if fai
5690: 6c 65 64 20 64 75 65 20 74 6f 20 76 65 72 73 69  led due to versi
56a0: 6f 6e 22 20 23 2f 5c 77 2b 33 5c 2e 36 2e 2a 2f  on" #/\w+3\.6.*/
56b0: 29 0a 0a 23 20 74 65 73 74 5f 6d 65 74 61 20 69  )..# test_meta i
56c0: 73 20 61 20 73 65 63 74 69 6f 6e 20 66 6f 72 20  s a section for 
56d0: 73 74 6f 72 69 6e 67 20 61 64 64 69 74 69 6f 6e  storing addition
56e0: 61 6c 20 64 61 74 61 20 6f 6e 20 79 6f 75 72 20  al data on your 
56f0: 74 65 73 74 0a 5b 74 65 73 74 5f 6d 65 74 61 5d  test.[test_meta]
5700: 0a 61 75 74 68 6f 72 20 6d 61 74 74 0a 6f 77 6e  .author matt.own
5710: 65 72 20 20 6d 61 74 74 0a 64 65 73 63 72 69 70  er  matt.descrip
5720: 74 69 6f 6e 20 43 6f 6d 70 61 72 65 20 74 68 69  tion Compare thi
5730: 6e 67 73 0a 74 61 67 73 20 74 61 67 6f 6e 65 2c  ngs.tags tagone,
5740: 74 61 67 74 77 6f 0a 72 65 76 69 65 77 65 64 20  tagtwo.reviewed 
5750: 6e 65 76 65 72 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  never.----------
5760: 2d 2d 2d 2d 2d 2d 2d 0a 0a 54 72 69 67 67 65 72  -------..Trigger
5770: 73 0a 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 49 6e 20 79  s.~~~~~~~~..In y
5780: 6f 75 72 20 74 65 73 74 63 6f 6e 66 69 67 20 6f  our testconfig o
5790: 72 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69  r megatest.confi
57a0: 67 20 74 72 69 67 67 65 72 73 20 63 61 6e 20 62  g triggers can b
57b0: 65 20 73 70 65 63 69 66 69 65 64 20 0a 0a 2e 54  e specified ...T
57c0: 72 69 67 67 65 72 73 20 73 70 65 63 0a 2d 2d 2d  riggers spec.---
57d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b  --------------.[
57e0: 74 72 69 67 67 65 72 73 5d 0a 0a 23 20 43 61 6c  triggers]..# Cal
57f0: 6c 20 73 63 72 69 70 74 20 72 75 6e 6e 69 6e 67  l script running
5800: 2e 73 68 20 77 68 65 6e 20 74 65 73 74 20 67 6f  .sh when test go
5810: 65 73 20 74 6f 20 73 74 61 74 65 3d 52 55 4e 4e  es to state=RUNN
5820: 49 4e 47 2c 20 73 74 61 74 75 73 3d 50 41 53 53  ING, status=PASS
5830: 0a 52 55 4e 4e 49 4e 47 2f 50 41 53 53 20 72 75  .RUNNING/PASS ru
5840: 6e 6e 69 6e 67 2e 73 68 0a 0a 23 20 43 61 6c 6c  nning.sh..# Call
5850: 20 73 63 72 69 70 74 20 72 75 6e 6e 69 6e 67 2e   script running.
5860: 73 68 20 61 6e 79 20 74 69 6d 65 20 73 74 61 74  sh any time stat
5870: 65 20 67 6f 65 73 20 74 6f 20 52 55 4e 4e 49 4e  e goes to RUNNIN
5880: 47 0a 52 55 4e 4e 49 4e 47 2f 20 72 75 6e 6e 69  G.RUNNING/ runni
5890: 6e 67 2e 73 68 0a 0a 23 20 43 61 6c 6c 20 73 63  ng.sh..# Call sc
58a0: 72 69 70 74 20 6f 6e 70 61 73 73 2e 73 68 20 61  ript onpass.sh a
58b0: 6e 79 20 74 69 6d 65 20 73 74 61 74 75 73 20 67  ny time status g
58c0: 6f 65 73 20 74 6f 20 50 41 53 53 0a 50 41 53 53  oes to PASS.PASS
58d0: 2f 20 6f 6e 70 61 73 73 2e 73 68 0a 2d 2d 2d 2d  / onpass.sh.----
58e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 53  -------------..S
58f0: 63 72 69 70 74 73 20 63 61 6c 6c 65 64 20 77 69  cripts called wi
5900: 6c 6c 20 68 61 76 65 3b 20 74 65 73 74 2d 69 64  ll have; test-id
5910: 20 74 65 73 74 2d 72 75 6e 64 69 72 20 74 72 69   test-rundir tri
5920: 67 67 65 72 20 74 65 73 74 2d 6e 61 6d 65 20 69  gger test-name i
5930: 74 65 6d 2d 70 61 74 68 20 73 74 61 74 65 20 73  tem-path state s
5940: 74 61 74 75 73 20 65 76 65 6e 74 2d 74 69 6d 65  tatus event-time
5950: 2c 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 63  , added to the c
5960: 6f 6d 6d 61 6e 64 6c 69 6e 65 2e 0a 0a 48 49 4e  ommandline...HIN
5970: 54 0a 0a 54 6f 20 73 74 61 72 74 20 61 6e 20 78  T..To start an x
5980: 74 65 72 6d 20 28 75 73 65 66 75 6c 20 66 6f 72  term (useful for
5990: 20 64 65 62 75 67 67 69 6e 67 29 2c 20 75 73 65   debugging), use
59a0: 20 61 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20   a command line 
59b0: 6c 69 6b 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69  like the followi
59c0: 6e 67 3a 0a 0a 2e 53 74 61 72 74 20 61 6e 20 78  ng:...Start an x
59d0: 74 65 72 6d 20 75 73 69 6e 67 20 61 20 74 72 69  term using a tri
59e0: 67 67 65 72 20 66 6f 72 20 74 65 73 74 20 63 6f  gger for test co
59f0: 6d 70 6c 65 74 65 64 2e 0a 2d 2d 2d 2d 2d 2d 2d  mpleted..-------
5a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 74 72 69 67  ----------.[trig
5a10: 67 65 72 73 5d 0a 43 4f 4d 50 4c 45 54 45 44 2f  gers].COMPLETED/
5a20: 20 78 74 65 72 6d 20 2d 65 20 62 61 73 68 20 2d   xterm -e bash -
5a30: 73 20 2d 2d 20 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  s -- .----------
5a40: 2d 2d 2d 2d 2d 2d 2d 0a 0a 4e 4f 54 45 3a 20 54  -------..NOTE: T
5a50: 68 65 72 65 20 69 73 20 61 20 74 72 61 69 6c 69  here is a traili
5a60: 6e 67 20 73 70 61 63 65 20 61 66 74 65 72 20 74  ng space after t
5a70: 68 65 20 64 6f 75 62 6c 65 2d 64 61 73 68 0a 0a  he double-dash..
5a80: 54 68 65 72 65 20 61 72 65 20 61 20 6e 75 6d 62  There are a numb
5a90: 65 72 20 6f 66 20 65 6e 76 69 72 6f 6e 6d 65 6e  er of environmen
5aa0: 74 20 76 61 72 69 61 62 6c 65 73 20 61 76 61 69  t variables avai
5ab0: 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 74 72 69  lable to the tri
5ac0: 67 67 65 72 20 73 63 72 69 70 74 0a 62 75 74 20  gger script.but 
5ad0: 73 69 6e 63 65 20 74 72 69 67 67 65 72 73 20 63  since triggers c
5ae0: 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20  an be called in 
5af0: 76 61 72 69 6f 75 73 20 63 6f 6e 74 65 78 74 73  various contexts
5b00: 20 6e 6f 74 20 61 6c 6c 20 76 61 72 69 61 62 6c   not all variabl
5b10: 65 73 20 61 72 65 0a 61 76 61 69 6c 61 62 6c 65  es are.available
5b20: 20 61 74 20 61 6c 6c 20 74 69 6d 65 73 2e 20 54   at all times. T
5b30: 68 65 20 74 72 69 67 67 65 72 20 73 63 72 69 70  he trigger scrip
5b40: 74 20 73 68 6f 75 6c 64 20 63 68 65 63 6b 20 66  t should check f
5b50: 6f 72 20 74 68 65 20 76 61 72 69 61 62 6c 65 20  or the variable 
5b60: 61 6e 64 0a 66 61 69 6c 20 67 72 61 63 65 66 75  and.fail gracefu
5b70: 6c 6c 79 20 69 66 20 69 74 20 64 6f 65 73 6e 27  lly if it doesn'
5b80: 74 20 65 78 69 73 74 2e 0a 0a 2f 2f 20 2c 63 6f  t exist...// ,co
5b90: 6c 73 3d 22 5e 2c 32 6d 22 0a 0a 2e 45 6e 76 69  ls="^,2m"...Envi
5ba0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
5bb0: 73 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65  s visible to the
5bc0: 20 74 72 69 67 67 65 72 20 73 63 72 69 70 74 0a   trigger script.
5bd0: 5b 77 69 64 74 68 3d 22 39 30 25 22 2c 66 72 61  [width="90%",fra
5be0: 6d 65 3d 22 74 6f 70 62 6f 74 22 2c 6f 70 74 69  me="topbot",opti
5bf0: 6f 6e 73 3d 22 68 65 61 64 65 72 22 5d 0a 7c 3d  ons="header"].|=
5c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c10: 3d 3d 3d 3d 3d 0a 7c 20 56 61 72 69 61 62 6c 65  =====.| Variable
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 50 75              | Pu
5c30: 72 70 6f 73 65 20 20 20 20 20 20 20 20 20 20 20  rpose           
5c40: 20 0a 7c 20 4d 54 5f 54 45 53 54 5f 52 55 4e 5f   .| MT_TEST_RUN_
5c50: 44 49 52 20 20 20 20 20 7c 20 54 68 65 20 64 69  DIR     | The di
5c60: 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 4d 65  rectory where Me
5c70: 67 61 74 65 73 74 20 72 61 6e 20 74 68 69 73 20  gatest ran this 
5c80: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
5c90: 20 20 20 20 20 20 20 0a 7c 20 4d 54 5f 43 4d 44         .| MT_CMD
5ca0: 49 4e 46 4f 20 20 20 20 20 20 20 20 20 20 7c 20  INFO          | 
5cb0: 45 6e 63 6f 64 65 64 20 63 6f 6d 6d 61 6e 64 20  Encoded command 
5cc0: 64 61 74 61 20 66 6f 72 20 74 68 65 20 74 65 73  data for the tes
5cd0: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
5ce0: 20 20 20 20 0a 7c 20 4d 54 5f 44 45 42 55 47 5f      .| MT_DEBUG_
5cf0: 4d 4f 44 45 20 20 20 20 20 20 20 7c 20 55 73 65  MODE       | Use
5d00: 64 20 74 6f 20 70 61 73 73 20 74 68 65 20 64 65  d to pass the de
5d10: 62 75 67 20 6d 6f 64 65 20 74 6f 20 6e 65 73 74  bug mode to nest
5d20: 65 64 20 63 61 6c 6c 73 20 74 6f 20 4d 65 67 61  ed calls to Mega
5d30: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
5d40: 20 20 20 20 20 20 20 0a 7c 20 4d 54 5f 52 55 4e         .| MT_RUN
5d50: 5f 41 52 45 41 5f 48 4f 4d 45 20 20 20 20 7c 20  _AREA_HOME    | 
5d60: 4d 65 67 61 74 65 73 74 20 68 6f 6d 65 20 61 72  Megatest home ar
5d70: 65 61 20 0a 7c 20 4d 54 5f 54 45 53 54 53 55 49  ea .| MT_TESTSUI
5d80: 54 45 4e 41 4d 45 20 20 20 20 7c 20 54 68 65 20  TENAME    | The 
5d90: 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 74 65 73  name of this tes
5da0: 74 73 75 69 74 65 20 6f 72 20 61 72 65 61 20 20  tsuite or area  
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 0a 7c 20 4d 54 5f 54 45 53 54 5f 4e 41 4d 45   .| MT_TEST_NAME
5dd0: 20 20 20 20 20 20 20 20 7c 20 54 68 65 20 6e 61          | The na
5de0: 6d 65 20 6f 66 20 74 68 69 73 20 74 65 73 74 0a  me of this test.
5df0: 7c 20 4d 54 5f 49 54 45 4d 5f 49 4e 46 4f 20 20  | MT_ITEM_INFO  
5e00: 20 20 20 20 20 20 7c 20 54 68 65 20 76 61 72 69        | The vari
5e10: 61 62 6c 65 20 61 6e 64 20 76 61 6c 75 65 73 20  able and values 
5e20: 66 6f 72 20 74 68 65 20 74 65 73 74 20 69 74 65  for the test ite
5e30: 6d 0a 7c 20 4d 54 5f 4d 45 47 41 54 45 53 54 20  m.| MT_MEGATEST 
5e40: 20 20 20 20 20 20 20 20 7c 20 57 68 69 63 68 20          | Which 
5e50: 4d 65 67 61 74 65 73 74 20 62 69 6e 61 72 79 20  Megatest binary 
5e60: 69 73 20 62 65 69 6e 67 20 75 73 65 64 20 62 79  is being used by
5e70: 20 74 68 69 73 20 61 72 65 61 0a 7c 20 4d 54 5f   this area.| MT_
5e80: 54 41 52 47 45 54 20 20 20 20 20 20 20 20 20 20  TARGET          
5e90: 20 7c 20 54 68 65 20 74 61 72 67 65 74 20 76 61   | The target va
5ea0: 72 69 61 62 6c 65 20 76 61 6c 75 65 73 2c 20 73  riable values, s
5eb0: 65 70 61 72 61 74 65 64 20 62 79 20 27 2f 27 0a  eparated by '/'.
5ec0: 7c 20 4d 54 5f 4c 49 4e 4b 54 52 45 45 20 20 20  | MT_LINKTREE   
5ed0: 20 20 20 20 20 20 7c 20 54 68 65 20 62 61 73 65        | The base
5ee0: 20 6f 66 20 74 68 65 20 6c 69 6e 6b 20 74 72 65   of the link tre
5ef0: 65 20 77 68 65 72 65 20 61 6c 6c 20 72 75 6e 20  e where all run 
5f00: 74 65 73 74 73 20 63 61 6e 20 62 65 20 66 6f 75  tests can be fou
5f10: 6e 64 0a 7c 20 4d 54 5f 49 54 45 4d 50 41 54 48  nd.| MT_ITEMPATH
5f20: 20 20 20 20 20 20 20 20 20 7c 20 54 68 65 20 76           | The v
5f30: 61 6c 75 65 73 20 6f 66 20 74 68 65 20 69 74 65  alues of the ite
5f40: 6d 20 70 61 74 68 20 76 61 72 69 61 62 6c 65 73  m path variables
5f50: 2c 20 73 65 70 61 72 61 74 65 64 20 62 79 20 27  , separated by '
5f60: 2f 27 0a 7c 20 4d 54 5f 52 55 4e 4e 41 4d 45 20  /'.| MT_RUNNAME 
5f70: 20 20 20 20 20 20 20 20 20 7c 20 54 68 65 20 6e           | The n
5f80: 61 6d 65 20 6f 66 20 74 68 65 20 72 75 6e 0a 7c  ame of the run.|
5f90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5fa0: 3d 3d 3d 3d 3d 3d 0a 0a 0a 4f 76 65 72 72 69 64  ======...Overrid
5fb0: 65 20 74 68 65 20 54 6f 70 6c 65 76 65 6c 20 48  e the Toplevel H
5fc0: 54 4d 4c 20 46 69 6c 65 0a 7e 7e 7e 7e 7e 7e 7e  TML File.~~~~~~~
5fd0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
5fe0: 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 4d 65 67 61 74 65  ~~~~~~~~..Megate
5ff0: 73 74 20 67 65 6e 65 72 61 74 65 73 20 61 20 73  st generates a s
6000: 69 6d 70 6c 65 20 68 74 6d 6c 20 66 69 6c 65 20  imple html file 
6010: 73 75 6d 6d 61 72 79 20 66 6f 72 20 74 6f 70 20  summary for top 
6020: 6c 65 76 65 6c 20 74 65 73 74 73 20 6f 66 0a 69  level tests of.i
6030: 74 65 72 61 74 65 64 20 74 65 73 74 73 2e 20 54  terated tests. T
6040: 68 65 20 67 65 6e 65 72 61 74 69 6f 6e 20 63 61  he generation ca
6050: 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 2e  n be overridden.
6060: 20 4e 4f 54 45 3a 20 74 68 65 20 6f 75 74 70 75   NOTE: the outpu
6070: 74 20 6f 66 0a 74 68 65 20 73 63 72 69 70 74 20  t of.the script 
6080: 69 73 20 63 61 70 74 75 72 65 64 20 66 72 6f 6d  is captured from
6090: 20 73 74 64 6f 75 74 20 74 6f 20 63 72 65 61 74   stdout to creat
60a0: 65 20 74 68 65 20 68 74 6d 6c 2e 0a 0a 0a 2e 46  e the html.....F
60b0: 6f 72 20 74 65 73 74 20 22 72 75 6e 66 69 72 73  or test "runfirs
60c0: 74 22 20 6f 76 65 72 72 69 64 65 20 74 68 65 20  t" override the 
60d0: 74 6f 70 6c 65 76 65 6c 20 67 65 6e 65 72 61 74  toplevel generat
60e0: 69 6f 6e 20 77 69 74 68 20 61 20 73 63 72 69 70  ion with a scrip
60f0: 74 20 22 6d 79 73 75 6d 6d 61 72 79 2e 73 68 22  t "mysummary.sh"
6100: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
6110: 2d 2d 0a 23 20 4f 76 65 72 72 69 64 65 20 74 68  --.# Override th
6120: 65 20 72 6f 6c 6c 75 70 20 66 6f 72 20 73 70 65  e rollup for spe
6130: 63 69 66 69 63 20 74 65 73 74 73 0a 5b 74 65 73  cific tests.[tes
6140: 74 72 6f 6c 6c 75 70 5d 0a 72 75 6e 66 69 72 73  trollup].runfirs
6150: 74 20 6d 79 73 75 6d 6d 61 72 79 2e 73 68 0a 2d  t mysummary.sh.-
6160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6170: 0a 0a 41 72 63 68 69 76 69 6e 67 20 53 65 74 75  ..Archiving Setu
6180: 70 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  p.--------------
6190: 2d 0a 0a 49 6e 20 6d 65 67 61 74 65 73 74 2e 63  -..In megatest.c
61a0: 6f 6e 66 69 67 20 61 64 64 20 74 68 65 20 66 6f  onfig add the fo
61b0: 6c 6c 6f 77 69 6e 67 20 73 65 63 74 69 6f 6e 73  llowing sections
61c0: 3a 0a 0a 2e 6d 65 67 61 74 65 73 74 2e 63 6f 6e  :...megatest.con
61d0: 66 69 67 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  fig.------------
61e0: 2d 2d 0a 5b 61 72 63 68 69 76 65 5d 0a 23 20 77  --.[archive].# w
61f0: 68 65 72 65 20 74 6f 20 67 65 74 20 62 75 70 20  here to get bup 
6200: 65 78 65 63 75 74 61 62 6c 65 0a 23 20 62 75 70  executable.# bup
6210: 20 2f 70 61 74 68 2f 74 6f 2f 62 75 70 0a 0a 5b   /path/to/bup..[
6220: 61 72 63 68 69 76 65 2d 64 69 73 6b 73 5d 0a 0a  archive-disks]..
6230: 23 20 41 72 63 68 69 76 65 73 20 77 69 6c 6c 20  # Archives will 
6240: 62 65 20 6f 72 67 61 6e 69 73 65 64 20 75 6e 64  be organised und
6250: 65 72 20 74 68 65 73 65 20 70 61 74 68 73 20 6c  er these paths l
6260: 69 6b 65 20 74 68 69 73 3a 0a 23 20 20 3c 74 65  ike this:.#  <te
6270: 73 74 73 75 69 74 65 3e 2f 3c 63 72 65 61 74 69  stsuite>/<creati
6280: 6f 6e 64 61 74 65 3e 0a 23 20 57 69 74 68 69 6e  ondate>.# Within
6290: 20 74 68 65 20 61 72 63 68 69 76 65 20 74 68 65   the archive the
62a0: 20 64 61 74 61 20 69 73 20 73 74 72 75 63 74 75   data is structu
62b0: 72 65 64 20 6c 69 6b 65 20 74 68 69 73 3a 0a 23  red like this:.#
62c0: 20 20 3c 74 61 72 67 65 74 3e 2f 3c 72 75 6e 6e    <target>/<runn
62d0: 61 6d 65 3e 2f 3c 74 65 73 74 3e 2f 0a 61 72 63  ame>/<test>/.arc
62e0: 68 69 76 65 30 20 2f 6d 66 73 2f 6d 79 61 72 63  hive0 /mfs/myarc
62f0: 68 69 76 65 2d 64 61 74 61 2f 61 64 69 73 6b 31  hive-data/adisk1
6300: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  .--------------.
6310: 0a 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 56 61 72  .Environment Var
6320: 69 61 62 6c 65 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  iables.---------
6330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 49 74  ------------..It
6340: 20 69 73 20 6f 66 74 65 6e 20 6e 65 63 65 73 73   is often necess
6350: 61 72 79 20 74 6f 20 63 61 70 74 75 72 65 20 61  ary to capture a
6360: 6e 64 20 6f 72 20 6d 61 6e 69 70 75 6c 61 74 65  nd or manipulate
6370: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 76 61 72   environment.var
6380: 69 61 62 6c 65 73 2e 20 4d 65 67 61 74 65 73 74  iables. Megatest
6390: 20 68 61 73 20 73 6f 6d 65 20 66 61 63 69 6c 69   has some facili
63a0: 74 69 65 73 20 62 75 69 6c 74 20 69 6e 20 74 6f  ties built in to
63b0: 20 68 65 6c 70 2e 0a 0a 43 61 70 74 75 72 65 20   help...Capture 
63c0: 76 61 72 69 61 62 6c 65 73 0a 7e 7e 7e 7e 7e 7e  variables.~~~~~~
63d0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 0a 2e 43 6f  ~~~~~~~~~~~...Co
63e0: 6d 6d 61 6e 64 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  mmands.---------
63f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6400: 2d 2d 2d 2d 2d 0a 23 20 63 61 70 74 75 72 65 20  -----.# capture 
6410: 74 68 65 20 63 75 72 72 65 6e 74 20 65 6e 76 69  the current envi
6420: 72 6f 6d 65 6e 74 20 69 6e 74 6f 20 61 20 64 62  roment into a db
6430: 20 63 61 6c 6c 65 64 20 65 6e 76 64 61 74 2e 64   called envdat.d
6440: 62 20 75 6e 64 65 72 0a 23 20 74 68 65 20 63 6f  b under.# the co
6450: 6e 74 65 78 74 20 22 62 65 66 6f 72 65 22 0a 6d  ntext "before".m
6460: 65 67 61 74 65 73 74 20 2d 65 6e 76 63 61 70 20  egatest -envcap 
6470: 62 65 66 6f 72 65 0a 0a 23 20 63 61 70 74 75 72  before..# captur
6480: 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 65 6e  e the current en
6490: 76 69 72 6f 6e 6d 65 6e 74 20 69 6e 74 6f 20 61  vironment into a
64a0: 20 64 62 20 63 61 6c 6c 65 64 20 73 74 61 72 74   db called start
64b0: 75 70 2e 64 62 20 77 69 74 68 20 0a 23 20 63 6f  up.db with .# co
64c0: 6e 74 65 78 74 20 22 61 66 74 65 72 22 0a 6d 65  ntext "after".me
64d0: 67 61 74 65 73 74 20 2d 65 6e 76 63 61 70 20 61  gatest -envcap a
64e0: 66 74 65 72 20 73 74 61 72 74 75 70 2e 64 62 0a  fter startup.db.
64f0: 0a 23 20 77 72 69 74 65 20 74 68 65 20 64 69 66  .# write the dif
6500: 66 20 66 72 6f 6d 20 62 65 66 6f 72 65 20 74 6f  f from before to
6510: 20 61 66 74 65 72 0a 6d 65 67 61 74 65 73 74 20   after.megatest 
6520: 2d 65 6e 76 64 65 6c 74 61 20 62 65 66 6f 72 65  -envdelta before
6530: 2d 61 66 74 65 72 20 2d 64 75 6d 70 6d 6f 64 65  -after -dumpmode
6540: 20 62 61 73 68 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   bash.----------
6550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6560: 2d 2d 2d 2d 0a 0a 44 75 6d 70 20 6d 6f 64 65 73  ----..Dump modes
6570: 20 69 6e 63 6c 75 64 65 20 62 61 73 68 2c 20 63   include bash, c
6580: 73 68 20 61 6e 64 20 63 6f 6e 66 69 67 2e 20 59  sh and config. Y
6590: 6f 75 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 63  ou can include c
65a0: 6f 6e 66 69 67 20 64 61 74 61 0a 69 6e 74 6f 20  onfig data.into 
65b0: 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 2c  megatest.config,
65c0: 20 72 75 6e 63 6f 6e 66 69 67 73 2e 63 6f 6e 66   runconfigs.conf
65d0: 69 67 20 61 6e 64 20 74 65 73 74 63 6f 6e 66 69  ig and testconfi
65e0: 67 20 66 69 6c 65 73 2e 20 54 68 69 73 20 69 73  g files. This is
65f0: 0a 75 73 65 66 75 6c 20 66 6f 72 20 63 61 70 74  .useful for capt
6600: 75 72 69 6e 67 20 61 20 63 6f 6d 70 6c 65 78 20  uring a complex 
6610: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 69 6e 20 61  environment in a
6620: 20 73 70 65 63 69 61 6c 2d 70 75 72 70 6f 73 65   special-purpose
6630: 20 74 65 73 74 0a 61 6e 64 20 74 68 65 6e 20 75   test.and then u
6640: 74 69 6c 69 7a 69 6e 67 20 74 68 61 74 20 65 6e  tilizing that en
6650: 76 69 72 6f 6e 6d 65 6e 74 20 69 6e 20 64 6f 77  vironment in dow
6660: 6e 73 74 72 65 61 6d 20 74 65 73 74 73 2e 0a 0a  nstream tests...
6670: 2e 45 78 61 6d 70 6c 65 20 6f 66 20 67 65 6e 65  .Example of gene
6680: 72 61 74 69 6e 67 20 61 6e 64 20 75 73 69 6e 67  rating and using
6690: 20 63 6f 6e 66 69 67 20 64 61 74 61 0a 2d 2d 2d   config data.---
66a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
66b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 6d 65 67 61  -----------.mega
66c0: 74 65 73 74 20 2d 65 6e 76 63 61 70 20 6f 72 69  test -envcap ori
66d0: 67 69 6e 61 6c 0a 23 20 64 6f 20 73 6f 6d 65 20  ginal.# do some 
66e0: 73 74 75 66 66 20 68 65 72 65 0a 6d 65 67 61 74  stuff here.megat
66f0: 65 73 74 20 2d 65 6e 76 63 61 70 20 6d 75 6e 67  est -envcap mung
6700: 65 64 0a 6d 65 67 61 74 65 73 74 20 2d 65 6e 76  ed.megatest -env
6710: 64 65 6c 74 61 20 6f 72 69 67 69 6e 61 6c 2d 6d  delta original-m
6720: 75 6e 67 65 64 20 2d 64 75 6d 70 6d 6f 64 65 20  unged -dumpmode 
6730: 69 6e 69 20 2d 6f 20 6d 6f 64 69 66 69 65 64 2e  ini -o modified.
6740: 63 6f 6e 66 69 67 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  config.---------
6750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6760: 2d 2d 2d 2d 2d 0a 0a 54 68 65 6e 20 69 6e 20 72  -----..Then in r
6770: 75 6e 63 6f 6e 66 69 67 73 2e 63 6f 6e 66 69 67  unconfigs.config
6780: 0a 0a 2e 45 78 61 6d 70 6c 65 20 6f 66 20 75 73  ...Example of us
6790: 69 6e 67 20 6d 6f 64 69 66 69 65 64 2e 63 6f 6e  ing modified.con
67a0: 66 69 67 20 69 6e 20 61 20 74 65 73 74 63 6f 6e  fig in a testcon
67b0: 66 69 67 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  fig.------------
67c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
67d0: 2d 2d 0a 5b 70 72 65 2d 6c 61 75 6e 63 68 2d 65  --.[pre-launch-e
67e0: 6e 76 2d 76 61 72 73 5d 0a 5b 69 6e 63 6c 75 64  nv-vars].[includ
67f0: 65 20 6d 6f 64 69 66 69 65 64 2e 63 6f 6e 66 69  e modified.confi
6800: 67 5d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  g].-------------
6810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6820: 2d 0a 0a 4d 61 6e 61 67 69 6e 67 20 4f 6c 64 20  -..Managing Old 
6830: 52 75 6e 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  Runs.-----------
6840: 2d 2d 2d 2d 2d 2d 0a 0a 49 74 20 69 73 20 6f 66  ------..It is of
6850: 74 65 6e 20 64 65 73 69 72 65 64 20 74 6f 20 6b  ten desired to k
6860: 65 65 70 20 73 6f 6d 65 20 6f 6c 64 65 72 20 72  eep some older r
6870: 75 6e 73 20 61 72 6f 75 6e 64 20 62 75 74 20 74  uns around but t
6880: 68 69 73 20 6d 75 73 74 20 62 65 20 62 61 6c 61  his must be bala
6890: 6e 63 65 64 20 77 69 74 68 20 74 68 65 20 63 6f  nced with the co
68a0: 73 74 73 20 6f 66 20 64 69 73 6b 20 73 70 61 63  sts of disk spac
68b0: 65 2e 0a 0a 2e 20 55 73 65 20 2d 72 65 6d 6f 76  e.... Use -remov
68c0: 65 2d 6b 65 65 70 0a 2e 20 55 73 65 20 2d 61 72  e-keep.. Use -ar
68d0: 63 68 69 76 65 20 28 63 61 6e 20 61 6c 73 6f 20  chive (can also 
68e0: 62 65 20 64 6f 6e 65 20 66 72 6f 6d 20 74 68 65  be done from the
68f0: 20 2d 72 65 6d 6f 76 65 2d 6b 65 65 70 20 69 6e   -remove-keep in
6900: 74 65 72 66 61 63 65 29 0a 2e 20 75 73 65 20 2d  terface).. use -
6910: 72 65 6d 6f 76 65 2d 72 75 6e 73 20 77 69 74 68  remove-runs with
6920: 20 2d 6b 65 65 70 2d 72 65 63 6f 72 64 73 0a 0a   -keep-records..
6930: 2e 46 6f 72 20 65 61 63 68 20 74 61 72 67 65 74  .For each target
6940: 2c 20 72 65 6d 6f 76 65 20 61 6c 6c 20 72 75 6e  , remove all run
6950: 73 20 62 75 74 20 74 68 65 20 6d 6f 73 74 20 72  s but the most r
6960: 65 63 65 6e 74 20 33 20 69 66 20 74 68 65 79 20  ecent 3 if they 
6970: 61 72 65 20 6f 76 65 72 20 31 20 77 65 65 6b 20  are over 1 week 
6980: 6f 6c 64 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  old.------------
6990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 75 73 65 20  ---------.# use 
69a0: 2d 70 72 65 63 6d 64 20 27 73 6c 65 65 70 20 35  -precmd 'sleep 5
69b0: 3b 6e 62 66 61 6b 65 27 20 74 6f 20 6c 69 6d 69  ;nbfake' to limi
69c0: 74 20 6f 76 65 72 6c 6f 61 64 69 6e 67 20 74 68  t overloading th
69d0: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20  e host computer 
69e0: 62 75 74 20 74 6f 20 61 6c 6c 6f 77 20 74 68 65  but to allow the
69f0: 20 72 65 6d 6f 76 65 73 20 74 6f 20 72 75 6e 20   removes to run 
6a00: 69 6e 20 70 61 72 61 6c 6c 65 6c 2e 0a 6d 65 67  in parallel..meg
6a10: 61 74 65 73 74 20 2d 61 63 74 69 6f 6e 73 20 70  atest -actions p
6a20: 72 69 6e 74 2c 72 65 6d 6f 76 65 2d 72 75 6e 73  rint,remove-runs
6a30: 20 2d 72 65 6d 6f 76 65 2d 6b 65 65 70 20 33 20   -remove-keep 3 
6a40: 2d 74 61 72 67 65 74 20 25 2f 25 2f 25 2f 25 20  -target %/%/%/% 
6a50: 2d 72 75 6e 6e 61 6d 65 20 25 20 2d 61 67 65 20  -runname % -age 
6a60: 31 77 20 2d 70 72 65 63 6d 64 20 27 73 6c 65 65  1w -precmd 'slee
6a70: 70 20 35 3b 6e 62 66 61 6b 65 27 22 0a 2d 2d 2d  p 5;nbfake'".---
6a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6a90: 2d 2d 0a 0a 4e 65 73 74 65 64 20 52 75 6e 73 0a  --..Nested Runs.
6aa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 41 20 4d  -----------..A M
6ab0: 65 67 61 74 65 73 74 20 74 65 73 74 20 63 61 6e  egatest test can
6ac0: 20 72 75 6e 20 61 20 66 75 6c 6c 20 4d 65 67 61   run a full Mega
6ad0: 74 65 73 74 20 72 75 6e 20 69 6e 20 65 69 74 68  test run in eith
6ae0: 65 72 20 74 68 65 20 73 61 6d 65 0a 4d 65 67 61  er the same.Mega
6af0: 74 65 73 74 20 61 72 65 61 20 6f 72 20 69 6e 20  test area or in 
6b00: 61 6e 6f 74 68 65 72 20 61 72 65 61 2e 20 54 68  another area. Th
6b10: 69 73 20 69 73 20 61 20 70 6f 77 65 72 66 75 6c  is is a powerful
6b20: 20 77 61 79 20 6f 66 20 63 68 61 69 6e 69 6e 67   way of chaining
6b30: 0a 63 6f 6d 70 6c 65 78 20 73 75 69 74 65 73 20  .complex suites 
6b40: 6f 66 20 74 65 73 74 73 20 61 6e 64 20 6f 72 20  of tests and or 
6b50: 61 63 74 69 6f 6e 73 2e 0a 0a 49 66 20 79 6f 75  actions...If you
6b60: 20 61 72 65 20 6e 6f 74 20 75 73 69 6e 67 20 74   are not using t
6b70: 68 65 20 63 75 72 72 65 6e 74 20 61 72 65 61 20  he current area 
6b80: 79 6f 75 20 63 61 6e 20 75 73 65 20 65 7a 73 74  you can use ezst
6b90: 65 70 73 20 74 6f 20 72 65 74 72 69 65 76 65 0a  eps to retrieve.
6ba0: 61 6e 64 20 73 65 74 75 70 20 74 68 65 20 73 75  and setup the su
6bb0: 62 2d 4d 65 67 61 74 65 73 74 20 72 75 6e 20 61  b-Megatest run a
6bc0: 72 65 61 2e 0a 0a 49 6e 20 74 68 65 20 74 65 73  rea...In the tes
6bd0: 74 63 6f 6e 66 69 67 3a 0a 2d 2d 2d 2d 2d 2d 2d  tconfig:.-------
6be0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 5b 73 75 62 72 75 6e  --------.[subrun
6bf0: 5d 0a 0a 23 20 52 65 71 75 69 72 65 64 3a 20 77  ]..# Required: w
6c00: 61 69 74 20 66 6f 72 20 74 68 65 20 72 75 6e 20  ait for the run 
6c10: 6f 72 20 6a 75 73 74 20 6c 61 75 6e 63 68 20 69  or just launch i
6c20: 74 0a 23 20 20 20 20 20 20 20 20 20 20 20 69 66  t.#           if
6c30: 20 6e 6f 20 74 68 65 6e 20 74 68 65 20 72 75 6e   no then the run
6c40: 20 77 69 6c 6c 20 62 65 20 61 6e 20 61 75 74 6f   will be an auto
6c50: 6d 61 74 69 63 20 50 41 53 53 20 69 72 72 65 73  matic PASS irres
6c60: 70 65 63 74 69 76 65 20 6f 66 20 74 68 65 20 61  pective of the a
6c70: 63 74 75 61 6c 20 72 65 73 75 6c 74 0a 72 75 6e  ctual result.run
6c80: 2d 77 61 69 74 20 79 65 73 7c 6e 6f 0a 0a 23 20  -wait yes|no..# 
6c90: 4f 70 74 69 6f 6e 61 6c 3a 20 77 68 65 72 65 20  Optional: where 
6ca0: 74 6f 20 65 78 65 63 75 74 65 20 74 68 65 20 72  to execute the r
6cb0: 75 6e 2e 20 44 65 66 61 75 6c 74 20 69 73 20 74  un. Default is t
6cc0: 68 65 20 63 75 72 72 65 6e 74 20 72 75 6e 61 72  he current runar
6cd0: 65 61 0a 72 75 6e 2d 61 72 65 61 20 2f 73 6f 6d  ea.run-area /som
6ce0: 65 2f 70 61 74 68 2f 74 6f 2f 6d 65 67 61 74 65  e/path/to/megate
6cf0: 73 74 2f 61 72 65 61 0a 0a 23 20 4f 70 74 69 6f  st/area..# Optio
6d00: 6e 61 6c 3a 20 6d 65 74 68 6f 64 20 74 6f 20 75  nal: method to u
6d10: 73 65 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  se to determine 
6d20: 70 61 73 73 2f 66 61 69 6c 20 73 74 61 74 75 73  pass/fail status
6d30: 20 6f 66 20 74 68 65 20 72 75 6e 0a 23 20 20 20   of the run.#   
6d40: 61 75 74 6f 20 28 64 65 66 61 75 6c 74 29 20 2d  auto (default) -
6d50: 20 72 6f 6c 6c 20 75 70 20 74 68 65 20 6e 65 74   roll up the net
6d60: 20 73 74 61 74 65 2f 73 74 61 74 75 73 20 6f 66   state/status of
6d70: 20 74 68 65 20 73 75 62 2d 72 75 6e 0a 23 20 20   the sub-run.#  
6d80: 20 6c 6f 67 70 72 6f 20 20 20 20 20 20 20 20 20   logpro         
6d90: 2d 20 75 73 65 20 74 68 65 20 70 72 6f 76 69 64  - use the provid
6da0: 65 64 20 6c 6f 67 70 72 6f 20 72 75 6c 65 73 2c  ed logpro rules,
6db0: 20 68 61 70 70 65 6e 73 20 61 75 74 6f 6d 61 74   happens automat
6dc0: 69 63 61 6c 6c 79 20 69 66 20 74 68 65 72 65 20  ically if there 
6dd0: 69 73 20 61 20 6c 6f 67 70 72 6f 20 73 65 63 74  is a logpro sect
6de0: 69 6f 6e 0a 23 20 70 61 73 73 66 61 69 6c 20 61  ion.# passfail a
6df0: 75 74 6f 7c 6c 6f 67 70 72 6f 0a 23 20 45 78 61  uto|logpro.# Exa
6e00: 6d 70 6c 65 20 6f 66 20 6c 6f 67 70 72 6f 3a 0a  mple of logpro:.
6e10: 70 61 73 73 66 61 69 6c 20 6c 6f 67 70 72 6f 0a  passfail logpro.
6e20: 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 0a 6c 6f  .# Optional: .lo
6e30: 67 70 72 6f 20 3b 3b 20 69 66 20 74 68 69 73 20  gpro ;; if this 
6e40: 73 65 63 74 69 6f 6e 20 65 78 69 73 74 73 20 74  section exists t
6e50: 68 65 6e 20 6c 6f 67 70 72 6f 20 69 73 20 75 73  hen logpro is us
6e60: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
6e70: 70 61 73 73 2f 66 61 69 6c 0a 20 20 28 65 78 70  pass/fail.  (exp
6e80: 65 63 74 3a 72 65 71 75 69 72 65 64 20 69 6e 20  ect:required in 
6e90: 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 3e 3d  "LogFileBody" >=
6ea0: 20 31 20 22 41 74 20 6c 65 61 73 74 20 6f 6e 65   1 "At least one
6eb0: 20 70 61 73 73 22 20 23 2f 50 41 53 53 2f 29 0a   pass" #/PASS/).
6ec0: 20 20 28 65 78 70 65 63 74 3a 65 72 72 6f 72 20    (expect:error 
6ed0: 20 20 20 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42      in "LogFileB
6ee0: 6f 64 79 22 20 20 3d 20 30 20 22 4e 6f 20 46 41  ody"  = 0 "No FA
6ef0: 49 4c 73 20 61 6c 6c 6f 77 65 64 22 20 20 23 2f  ILs allowed"  #/
6f00: 46 41 49 4c 2f 29 0a 0a 23 20 4f 70 74 69 6f 6e  FAIL/)..# Option
6f10: 61 6c 3a 20 74 61 72 67 65 74 20 74 72 61 6e 73  al: target trans
6f20: 6c 61 74 6f 72 2c 20 64 65 66 61 75 6c 74 20 69  lator, default i
6f30: 73 20 74 6f 20 75 73 65 20 74 68 65 20 70 61 72  s to use the par
6f40: 65 6e 74 20 74 61 72 67 65 74 0a 74 61 72 67 65  ent target.targe
6f50: 74 20 23 7b 73 68 65 6c 6c 20 73 6f 6d 65 73 63  t #{shell somesc
6f60: 72 69 70 74 2e 73 68 7d 0a 0a 23 20 4f 70 74 69  ript.sh}..# Opti
6f70: 6f 6e 61 6c 3a 20 72 75 6e 6e 61 6d 65 20 74 72  onal: runname tr
6f80: 61 6e 73 6c 61 74 6f 72 2f 67 65 6e 65 72 61 74  anslator/generat
6f90: 6f 72 2c 20 64 65 66 61 75 6c 74 20 69 73 20 74  or, default is t
6fa0: 6f 20 75 73 65 20 74 68 65 20 70 61 72 65 6e 74  o use the parent
6fb0: 20 72 75 6e 6e 61 6d 65 0a 72 75 6e 2d 6e 61 6d   runname.run-nam
6fc0: 65 20 23 7b 73 6f 6d 65 73 63 72 69 70 74 2e 73  e #{somescript.s
6fd0: 68 7d 0a 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20  h}..# Optional: 
6fe0: 74 65 73 74 70 61 74 74 20 73 70 65 63 2c 20 64  testpatt spec, d
6ff0: 65 66 61 75 6c 74 20 69 73 20 74 6f 20 66 69 72  efault is to fir
7000: 73 74 20 6c 6f 6f 6b 20 66 6f 72 20 54 45 53 54  st look for TEST
7010: 50 41 54 54 20 73 70 65 63 20 66 72 6f 6d 20 72  PATT spec from r
7020: 75 6e 63 6f 6e 66 69 67 73 20 75 6e 6c 65 73 73  unconfigs unless
7030: 20 74 68 65 72 65 20 69 73 20 61 20 63 6f 6e 74   there is a cont
7040: 6f 75 72 20 73 70 65 63 0a 74 65 73 74 2d 70 61  our spec.test-pa
7050: 74 74 20 25 2f 69 74 65 6d 31 2c 74 65 73 74 32  tt %/item1,test2
7060: 0a 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 63 6f  ..# Optional: co
7070: 6e 74 6f 75 72 20 73 70 65 63 2c 20 75 73 65 20  ntour spec, use 
7080: 74 68 65 20 6e 61 6d 65 64 20 63 6f 6e 74 6f 75  the named contou
7090: 72 20 66 72 6f 6d 20 74 68 65 20 6d 65 67 61 74  r from the megat
70a0: 65 73 74 2e 63 6f 6e 66 69 67 20 63 6f 6e 74 6f  est.config conto
70b0: 75 72 20 73 70 65 63 0a 63 6f 6e 74 6f 75 72 20  ur spec.contour 
70c0: 63 6f 6e 74 6f 75 72 6e 61 6d 65 20 23 23 23 20  contourname ### 
70d0: 4e 4f 54 45 3a 20 4e 6f 74 20 69 6d 70 6c 65 6d  NOTE: Not implem
70e0: 65 6e 74 65 64 20 79 65 74 21 20 4c 65 74 20 75  ented yet! Let u
70f0: 73 20 6b 6e 6f 77 20 69 66 20 79 6f 75 20 6e 65  s know if you ne
7100: 65 64 20 74 68 69 73 20 66 65 61 74 75 72 65 2e  ed this feature.
7110: 0a 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 6d 6f  ..# Optional: mo
7120: 64 65 2d 70 61 74 74 2c 20 75 73 65 20 74 68 69  de-patt, use thi
7130: 73 20 73 70 65 63 20 66 6f 72 20 74 65 73 74 70  s spec for testp
7140: 61 74 74 20 66 72 6f 6d 20 72 75 6e 63 6f 6e 66  att from runconf
7150: 69 67 73 0a 6d 6f 64 65 2d 70 61 74 74 20 54 45  igs.mode-patt TE
7160: 53 54 50 41 54 54 0a 0a 23 20 4f 70 74 69 6f 6e  STPATT..# Option
7170: 61 6c 3a 20 74 61 67 2d 65 78 70 72 2c 20 75 73  al: tag-expr, us
7180: 65 20 74 68 69 73 20 74 61 67 2d 65 78 70 72 20  e this tag-expr 
7190: 74 6f 20 73 65 6c 65 63 74 20 74 65 73 74 73 0a  to select tests.
71a0: 74 61 67 2d 65 78 70 72 20 71 75 69 63 6b 0a 0a  tag-expr quick..
71b0: 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 28 6e 6f 74  # Optional: (not
71c0: 20 79 65 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64   yet implemented
71d0: 2c 20 72 65 6d 6f 76 65 2d 72 75 6e 73 20 69 73  , remove-runs is
71e0: 20 61 6c 77 61 79 73 20 70 72 6f 70 61 67 61 74   always propagat
71f0: 65 64 20 61 74 20 74 68 69 73 20 74 69 6d 65 29  ed at this time)
7200: 2c 20 70 72 6f 70 61 67 61 74 65 20 74 68 65 73  , propagate thes
7210: 65 20 61 63 74 69 6f 6e 73 20 66 72 6f 6d 20 74  e actions from t
7220: 68 65 20 70 61 72 65 6e 74 0a 23 20 20 20 20 20  he parent.#     
7230: 20 20 20 20 20 20 74 65 73 74 0a 23 20 20 20 4e        test.#   N
7240: 6f 74 65 2f 2f 20 64 65 66 61 75 6c 74 20 69 73  ote// default is
7250: 20 25 20 66 6f 72 20 61 6c 6c 0a 70 72 6f 70 61   % for all.propa
7260: 67 61 74 65 20 72 65 6d 6f 76 65 2d 72 75 6e 73  gate remove-runs
7270: 20 61 72 63 68 69 76 65 20 2e 2e 2e 0a 0a 2d 2d   archive .....--
7280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 50  -------------..P
7290: 72 6f 67 72 61 6d 6d 69 6e 67 20 41 50 49 0a 2d  rogramming API.-
72a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a  --------------..
72b0: 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 63  These routines c
72c0: 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 66 72 6f  an be called fro
72d0: 6d 20 74 68 65 20 6d 65 67 61 74 65 73 74 20 72  m the megatest r
72e0: 65 70 6c 2e 20 0a 0a 2e 41 50 49 20 4b 65 79 73  epl. ...API Keys
72f0: 20 52 65 6c 61 74 65 64 20 43 61 6c 6c 73 0a 5b   Related Calls.[
7300: 77 69 64 74 68 3d 22 37 30 25 22 2c 63 6f 6c 73  width="70%",cols
7310: 3d 22 5e 2c 32 6d 2c 32 6d 2c 32 6d 22 2c 66 72  ="^,2m,2m,2m",fr
7320: 61 6d 65 3d 22 74 6f 70 62 6f 74 22 2c 6f 70 74  ame="topbot",opt
7330: 69 6f 6e 73 3d 22 68 65 61 64 65 72 2c 66 6f 6f  ions="header,foo
7340: 74 65 72 22 5d 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d  ter"].|=========
7350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 7c 41  =============.|A
7360: 50 49 20 43 61 6c 6c 20 20 20 20 20 20 20 20 20  PI Call         
7370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c                 |
7380: 20 50 75 72 70 6f 73 65 20 63 6f 6d 6d 65 6e 74   Purpose comment
7390: 73 20 20 20 7c 20 52 65 74 75 72 6e 73 20 20 20  s   | Returns   
73a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20                | 
73b0: 43 6f 6d 6d 65 6e 74 73 0a 7c 28 72 6d 74 3a 67  Comments.|(rmt:g
73c0: 65 74 2d 6b 65 79 73 20 72 75 6e 2d 69 64 29 20  et-keys run-id) 
73d0: 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20            |     
73e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c                 |
73f0: 20 28 20 6b 65 79 31 20 6b 65 79 32 20 2e 2e 2e   ( key1 key2 ...
7400: 20 29 20 20 20 20 20 20 20 7c 20 0a 7c 20 28 72   )       | .| (r
7410: 6d 74 3a 67 65 74 2d 6b 65 79 2d 76 61 6c 2d 70  mt:get-key-val-p
7420: 61 69 72 73 20 72 75 6e 2d 69 64 29 20 7c 20 20  airs run-id) |  
7430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7440: 20 20 7c 20 23 74 3d 73 75 63 63 65 73 73 2f 23    | #t=success/#
7450: 66 3d 66 61 69 6c 20 20 20 20 20 20 7c 20 57 6f  f=fail      | Wo
7460: 72 6b 73 20 6f 6e 6c 79 20 69 66 20 74 68 65 20  rks only if the 
7470: 73 65 72 76 65 72 20 69 73 20 73 74 69 6c 6c 20  server is still 
7480: 72 65 61 63 68 61 62 6c 65 0a 7c 3d 3d 3d 3d 3d  reachable.|=====
7490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
74a0: 3d 0a 0a 0a 3a 6e 75 6d 62 65 72 65 64 21 3a 0a  =...:numbered!:.