Megatest

Hex Artifact Content
Login

Artifact fdffcfb115b19eacaec7092f9742f720fa9ddddb:


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 0d 0a 2f 2f 20 0d 0a 2f 2f 20 20 20 20 20 4d  ...// ..//     M
0030: 65 67 61 74 65 73 74 20 69 73 20 66 72 65 65 20  egatest is free 
0040: 73 6f 66 74 77 61 72 65 3a 20 79 6f 75 20 63 61  software: you ca
0050: 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69  n redistribute i
0060: 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0d  t and/or modify.
0070: 0a 2f 2f 20 20 20 20 20 69 74 20 75 6e 64 65 72  .//     it under
0080: 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68   the terms of th
0090: 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75  e GNU General Pu
00a0: 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20  blic License as 
00b0: 70 75 62 6c 69 73 68 65 64 20 62 79 0d 0a 2f 2f  published by..//
00c0: 20 20 20 20 20 74 68 65 20 46 72 65 65 20 53 6f       the Free So
00d0: 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f  ftware Foundatio
00e0: 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f  n, either versio
00f0: 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e  n 3 of the Licen
0100: 73 65 2c 20 6f 72 0d 0a 2f 2f 20 20 20 20 20 28  se, or..//     (
0110: 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20  at your option) 
0120: 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f  any later versio
0130: 6e 2e 0d 0a 2f 2f 20 0d 0a 2f 2f 20 20 20 20 20  n...// ..//     
0140: 4d 65 67 61 74 65 73 74 20 69 73 20 64 69 73 74  Megatest is dist
0150: 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68  ributed in the h
0160: 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c  ope that it will
0170: 20 62 65 20 75 73 65 66 75 6c 2c 0d 0a 2f 2f 20   be useful,..// 
0180: 20 20 20 20 62 75 74 20 57 49 54 48 4f 55 54 20      but WITHOUT 
0190: 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69  ANY WARRANTY; wi
01a0: 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69  thout even the i
01b0: 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20  mplied warranty 
01c0: 6f 66 0d 0a 2f 2f 20 20 20 20 20 4d 45 52 43 48  of..//     MERCH
01d0: 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49  ANTABILITY or FI
01e0: 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54  TNESS FOR A PART
01f0: 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20  ICULAR PURPOSE. 
0200: 20 53 65 65 20 74 68 65 0d 0a 2f 2f 20 20 20 20   See the..//    
0210: 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62   GNU General Pub
0220: 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20  lic License for 
0230: 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0d 0a 2f  more details.../
0240: 2f 20 0d 0a 2f 2f 20 20 20 20 20 59 6f 75 20 73  / ..//     You s
0250: 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69  hould have recei
0260: 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68  ved a copy of th
0270: 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75  e GNU General Pu
0280: 62 6c 69 63 20 4c 69 63 65 6e 73 65 0d 0a 2f 2f  blic License..//
0290: 20 20 20 20 20 61 6c 6f 6e 67 20 77 69 74 68 20       along with 
02a0: 4d 65 67 61 74 65 73 74 2e 20 20 49 66 20 6e 6f  Megatest.  If no
02b0: 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77  t, see <http://w
02c0: 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e  ww.gnu.org/licen
02d0: 73 65 73 2f 3e 2e 0d 0a 0d 0a 52 65 66 65 72 65  ses/>.....Refere
02e0: 6e 63 65 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  nce..---------..
02f0: 0d 0a 4d 65 67 61 74 65 73 74 20 55 73 65 20 4d  ..Megatest Use M
0300: 6f 64 65 73 0d 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  odes..~~~~~~~~~~
0310: 7e 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 2e 42 61 73  ~~~~~~~~.....Bas
0320: 65 20 63 6f 6d 6d 61 6e 64 73 0d 0a 5b 77 69 64  e commands..[wid
0330: 74 68 3d 22 38 30 25 22 2c 63 6f 6c 73 3d 22 5e  th="80%",cols="^
0340: 2c 32 6d 2c 32 6d 22 2c 66 72 61 6d 65 3d 22 74  ,2m,2m",frame="t
0350: 6f 70 62 6f 74 22 2c 6f 70 74 69 6f 6e 73 3d 22  opbot",options="
0360: 68 65 61 64 65 72 22 5d 0d 0a 7c 3d 3d 3d 3d 3d  header"]..|=====
0370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0380: 3d 0d 0a 7c 55 73 65 20 63 61 73 65 09 20 20 20  =..|Use case.   
0390: 20 20 20 20 20 20 7c 20 4d 65 67 61 74 65 73 74        | Megatest
03a0: 20 63 6f 6d 6d 61 6e 64 09 7c 20 20 6d 74 75 74   command.|  mtut
03b0: 69 6c 0d 0a 7c 53 74 61 72 74 20 66 72 6f 6d 20  il..|Start from 
03c0: 73 63 72 61 74 63 68 20 20 20 20 20 20 20 7c 09  scratch       |.
03d0: 2d 72 65 72 75 6e 2d 61 6c 6c 09 7c 20 20 72 65  -rerun-all.|  re
03e0: 73 74 61 72 74 09 0d 0a 7c 52 65 72 75 6e 20 6e  start...|Rerun n
03f0: 6f 6e 2d 67 6f 6f 64 20 63 6f 6d 70 6c 65 74 65  on-good complete
0400: 64 20 7c 09 2d 72 65 72 75 6e 2d 63 6c 65 61 6e  d |.-rerun-clean
0410: 09 7c 20 20 72 65 72 75 6e 63 6c 65 61 6e 09 0d  .|  rerunclean..
0420: 0a 7c 52 65 72 75 6e 20 61 6c 6c 20 6e 6f 6e 2d  .|Rerun all non-
0430: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 63 6f 6d  good and not com
0440: 70 6c 65 74 65 64 20 79 65 74 20 7c 20 2d 73 65  pleted yet | -se
0450: 74 2d 73 74 61 74 65 2d 73 74 61 74 75 73 20 4b  t-state-status K
0460: 49 4c 4c 52 45 51 3b 20 2d 72 65 72 75 6e 2d 7c  ILLREQ; -rerun-|
0470: 63 6c 65 61 6e 20 7c 20 6b 69 6c 6c 72 65 72 75  clean | killreru
0480: 6e 09 0d 0a 7c 43 6f 6e 74 69 6e 75 65 20 72 75  n...|Continue ru
0490: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 09  n             |.
04a0: 2d 72 75 6e 09 20 20 20 20 20 20 20 20 7c 20 20  -run.        |  
04b0: 72 65 73 75 6d 65 09 0d 0a 7c 52 65 6d 6f 76 65  resume...|Remove
04c0: 20 72 75 6e 09 20 20 20 20 20 20 20 20 20 7c 20   run.         | 
04d0: 20 20 20 20 20 2d 72 65 6d 6f 76 65 2d 72 75 6e       -remove-run
04e0: 73 09 7c 20 20 63 6c 65 61 6e 09 0d 0a 7c 4c 6f  s.|  clean...|Lo
04f0: 63 6b 20 72 75 6e 09 20 20 20 20 20 20 20 20 20  ck run.         
0500: 7c 20 20 20 20 20 20 2d 6c 6f 63 6b 09 20 20 20  |      -lock.   
0510: 20 20 20 20 20 7c 20 20 6c 6f 63 6b 09 0d 0a 7c       |  lock...|
0520: 55 6e 6c 6f 63 6b 20 72 75 6e 09 20 20 20 20 20  Unlock run.     
0530: 20 20 20 20 7c 20 20 20 20 20 20 2d 75 6e 6c 6f      |      -unlo
0540: 63 6b 09 20 20 20 20 20 20 20 20 7c 20 20 75 6e  ck.        |  un
0550: 6c 6f 63 6b 09 0d 0a 7c 6b 69 6c 6c 72 75 6e 09  lock...|killrun.
0560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0570: 20 7c 20 2d 73 65 74 2d 73 74 61 74 65 2d 73 74   | -set-state-st
0580: 61 74 75 73 20 4b 49 4c 4c 52 45 51 3b 20 2d 6b  atus KILLREQ; -k
0590: 69 6c 6c 2d 72 75 6e 09 7c 20 6b 69 6c 6c 72 75  ill-run.| killru
05a0: 6e 09 0d 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  n...|===========
05b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 43  ===========....C
05c0: 6f 6e 66 69 67 20 46 69 6c 65 20 48 65 6c 70 65  onfig File Helpe
05d0: 72 73 0d 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  rs..~~~~~~~~~~~~
05e0: 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 56 61 72 69 6f  ~~~~~~~....Vario
05f0: 75 73 20 68 65 6c 70 65 72 73 20 66 6f 72 20 6d  us helpers for m
0600: 6f 72 65 20 61 64 76 61 6e 63 65 64 20 63 6f 6e  ore advanced con
0610: 66 69 67 20 66 69 6c 65 73 2e 0d 0a 0d 0a 2e 48  fig files......H
0620: 65 6c 70 65 72 73 0d 0a 5b 77 69 64 74 68 3d 22  elpers..[width="
0630: 38 30 25 22 2c 63 6f 6c 73 3d 22 5e 2c 32 6d 2c  80%",cols="^,2m,
0640: 32 6d 2c 32 6d 22 2c 66 72 61 6d 65 3d 22 74 6f  2m,2m",frame="to
0650: 70 62 6f 74 22 2c 6f 70 74 69 6f 6e 73 3d 22 68  pbot",options="h
0660: 65 61 64 65 72 22 5d 0d 0a 7c 3d 3d 3d 3d 3d 3d  eader"]..|======
0670: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0680: 0d 0a 7c 48 65 6c 70 65 72 20 20 20 20 20 20 20  ..|Helper       
0690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c                 |
06a0: 20 50 75 72 70 6f 73 65 20 20 20 20 20 20 20 20   Purpose        
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c                 |
06c0: 20 56 61 6c 69 64 20 76 61 6c 75 65 73 20 20 20   Valid values   
06d0: 20 20 20 20 20 20 20 20 20 7c 20 43 6f 6d 6d 65           | Comme
06e0: 6e 74 73 0d 0a 7c 20 23 7b 73 63 68 65 6d 65 20  nts..| #{scheme 
06f0: 28 73 63 68 65 6d 65 20 63 6f 64 65 2e 2e 2e 29  (scheme code...)
0700: 7d 20 7c 20 45 78 65 63 75 74 65 20 61 72 62 69  } | Execute arbi
0710: 74 72 61 72 79 20 73 63 68 65 6d 65 20 63 6f 64  trary scheme cod
0720: 65 20 7c 20 41 6e 79 20 76 61 6c 69 64 20 73 63  e | Any valid sc
0730: 68 65 6d 65 20 20 20 20 20 20 20 20 7c 20 56 61  heme        | Va
0740: 6c 75 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f  lue returned fro
0750: 6d 20 74 68 65 20 63 61 6c 6c 20 69 73 20 63 6f  m the call is co
0760: 6e 76 65 72 74 65 64 20 74 6f 20 61 20 73 74 72  nverted to a str
0770: 69 6e 67 20 61 6e 64 20 70 72 6f 63 65 73 73 65  ing and processe
0780: 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65  d as part of the
0790: 20 63 6f 6e 66 69 67 20 66 69 6c 65 0d 0a 7c 20   config file..| 
07a0: 23 7b 73 79 73 74 65 6d 20 63 6f 6d 6d 61 6e 64  #{system command
07b0: 7d 20 20 20 20 20 20 20 20 20 20 7c 20 45 78 65  }          | Exe
07c0: 63 75 74 65 20 70 72 6f 67 72 61 6d 2c 20 69 6e  cute program, in
07d0: 73 65 72 74 73 20 65 78 69 74 20 63 6f 64 65 20  serts exit code 
07e0: 20 7c 20 41 6e 79 20 76 61 6c 69 64 20 55 6e 69   | Any valid Uni
07f0: 78 20 63 6f 6d 6d 61 6e 64 20 20 7c 20 44 69 73  x command  | Dis
0800: 63 61 72 64 73 20 74 68 65 20 6f 75 74 70 75 74  cards the output
0810: 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 67 72 61   from the progra
0820: 6d 0d 0a 7c 20 23 7b 73 68 65 6c 6c 20 20 63 6f  m..| #{shell  co
0830: 6d 6d 61 6e 64 7d 20 6f 72 20 23 7b 73 68 20 2e  mmand} or #{sh .
0840: 2e 2e 7d 20 20 7c 20 45 78 65 63 75 74 65 20 70  ..}  | Execute p
0850: 72 6f 67 72 61 6d 2c 20 69 6e 73 65 72 74 73 20  rogram, inserts 
0860: 72 65 73 75 6c 74 20 66 72 6f 6d 20 73 74 64 6f  result from stdo
0870: 75 74 20 7c 20 41 6e 79 20 76 61 6c 69 64 20 55  ut | Any valid U
0880: 6e 69 78 20 63 6f 6d 6d 61 6e 64 20 7c 20 56 61  nix command | Va
0890: 6c 75 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f  lue returned fro
08a0: 6d 20 74 68 65 20 63 61 6c 6c 20 69 73 20 63 6f  m the call is co
08b0: 6e 76 65 72 74 65 64 20 74 6f 20 61 20 73 74 72  nverted to a str
08c0: 69 6e 67 20 61 6e 64 20 70 72 6f 63 65 73 73 65  ing and processe
08d0: 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65  d as part of the
08e0: 20 63 6f 6e 66 69 67 20 66 69 6c 65 0d 0a 7c 20   config file..| 
08f0: 23 7b 72 65 61 6c 70 61 74 68 20 70 61 74 68 7d  #{realpath path}
0900: 20 6f 72 20 23 7b 72 70 20 2e 2e 2e 7d 20 20 20   or #{rp ...}   
0910: 7c 20 52 65 70 6c 61 63 65 20 77 69 74 68 20 6e  | Replace with n
0920: 6f 72 6d 61 6c 69 7a 65 64 20 70 61 74 68 20 7c  ormalized path |
0930: 20 4d 75 73 74 20 62 65 20 61 20 76 61 6c 69 64   Must be a valid
0940: 20 70 61 74 68 20 7c 0d 0a 7c 20 23 7b 67 65 74   path |..| #{get
0950: 65 6e 76 20 56 41 52 7d 20 6f 72 20 23 7b 67 76  env VAR} or #{gv
0960: 20 56 41 52 7d 20 20 20 20 20 20 7c 20 52 65 70   VAR}      | Rep
0970: 6c 61 63 65 20 77 69 74 68 20 63 6f 6e 74 65 6e  lace with conten
0980: 74 20 6f 66 20 65 6e 76 20 76 61 72 69 61 62 6c  t of env variabl
0990: 65 20 7c 20 4d 75 73 74 20 62 65 20 61 20 76 61  e | Must be a va
09a0: 6c 69 64 20 76 61 72 20 7c 0d 0a 7c 20 23 7b 67  lid var |..| #{g
09b0: 65 74 20 73 20 76 7d 20 6f 72 20 23 7b 67 20 73  et s v} or #{g s
09c0: 20 76 7d 20 20 20 20 20 7c 20 52 65 70 6c 61 63   v}     | Replac
09d0: 65 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 20  e with variable 
09e0: 76 20 66 72 6f 6d 20 73 65 63 74 69 6f 6e 20 73  v from section s
09f0: 20 7c 20 56 61 72 69 61 62 6c 65 20 6d 75 73 74   | Variable must
0a00: 20 62 65 20 64 65 66 69 6e 65 64 20 62 65 66 6f   be defined befo
0a10: 72 65 20 75 73 65 20 7c 0d 0a 7c 20 23 7b 72 67  re use |..| #{rg
0a20: 65 74 20 76 7d 20 20 20 20 20 20 20 20 20 20 20  et v}           
0a30: 20 20 20 20 20 20 20 7c 20 52 65 70 6c 61 63 65         | Replace
0a40: 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 20 76   with variable v
0a50: 20 66 72 6f 6d 20 74 61 72 67 65 74 20 6f 72 20   from target or 
0a60: 64 65 66 61 75 6c 74 20 6f 66 20 72 75 6e 63 6f  default of runco
0a70: 6e 66 69 67 73 20 66 69 6c 65 20 7c 20 7c 0d 0a  nfigs file | |..
0a80: 7c 20 23 7b 6d 74 72 61 68 7d 20 20 20 20 20 20  | #{mtrah}      
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 52               | R
0aa0: 65 70 6c 61 63 65 20 77 69 74 68 20 74 68 65 20  eplace with the 
0ab0: 70 61 74 68 20 74 6f 20 74 68 65 20 6d 65 67 61  path to the mega
0ac0: 74 65 73 74 20 74 65 73 74 73 75 69 74 65 20 61  test testsuite a
0ad0: 72 65 61 20 7c 20 7c 20 0d 0a 7c 3d 3d 3d 3d 3d  rea | | ..|=====
0ae0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0af0: 3d 0d 0a 0d 0a 43 6f 6e 66 69 67 20 46 69 6c 65  =....Config File
0b00: 20 53 65 74 74 69 6e 67 73 0d 0a 7e 7e 7e 7e 7e   Settings..~~~~~
0b10: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0d  ~~~~~~~~~~~~~~~.
0b20: 0a 0d 0a 53 65 74 74 69 6e 67 73 20 69 6e 20 6d  ...Settings in m
0b30: 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 0d 0a  egatest.config..
0b40: 0d 0a 43 6f 6e 66 69 67 20 46 69 6c 65 20 41 64  ..Config File Ad
0b50: 64 69 74 69 6f 6e 61 6c 20 46 65 61 74 75 72 65  ditional Feature
0b60: 73 0d 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  s..~~~~~~~~~~~~~
0b70: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
0b80: 7e 7e 0d 0a 0d 0a 49 6e 63 6c 75 64 69 6e 67 20  ~~....Including 
0b90: 6f 75 74 70 75 74 20 66 72 6f 6d 20 61 20 73 63  output from a sc
0ba0: 72 69 70 74 20 61 73 20 69 66 20 69 74 20 77 61  ript as if it wa
0bb0: 73 20 69 6e 6c 69 6e 65 20 74 6f 20 74 68 65 20  s inline to the 
0bc0: 63 6f 6e 66 69 67 20 66 69 6c 65 3a 0d 0a 0d 0a  config file:....
0bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 73 63 72 69  ---------..[scri
0bf0: 70 74 69 6e 63 20 6d 79 73 63 72 69 70 74 2e 73  ptinc myscript.s
0c00: 68 5d 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  h]..------------
0c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d  -------------...
0c20: 0a 49 66 20 74 68 65 20 73 63 72 69 70 74 20 6f  .If the script o
0c30: 75 74 70 75 74 73 3a 0d 0a 0d 0a 2d 2d 2d 2d 2d  utputs:....-----
0c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c50: 2d 2d 2d 2d 0d 0a 5b 69 74 65 6d 73 5d 0d 0a 41  ----..[items]..A
0c60: 20 61 20 62 20 63 0d 0a 42 20 64 20 65 20 66 0d   a b c..B d e f.
0c70: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
0c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 54 68  ----------....Th
0c90: 65 6e 20 74 68 65 20 63 6f 6e 66 69 67 20 66 69  en the config fi
0ca0: 6c 65 20 77 6f 75 6c 64 20 65 66 66 65 63 74 69  le would effecti
0cb0: 76 65 6c 79 20 61 70 70 65 61 72 20 74 6f 20 63  vely appear to c
0cc0: 6f 6e 74 61 69 6e 20 61 6e 20 69 74 65 6d 73 20  ontain an items 
0cd0: 73 65 63 74 69 6f 6e 0d 0a 65 78 61 63 74 6c 79  section..exactly
0ce0: 20 6c 69 6b 65 20 74 68 65 20 6f 75 74 70 75 74   like the output
0cf0: 20 66 72 6f 6d 20 74 68 65 20 73 63 72 69 70 74   from the script
0d00: 2e 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c  . This is useful
0d10: 20 77 68 65 6e 20 64 79 6e 61 6d 69 63 61 6c 6c   when dynamicall
0d20: 79 0d 0a 63 72 65 61 74 69 6e 67 20 69 74 65 6d  y..creating item
0d30: 73 2c 20 69 74 65 6d 73 74 61 62 6c 65 73 20 61  s, itemstables a
0d40: 6e 64 20 6f 74 68 65 72 20 63 6f 6e 66 69 67 20  nd other config 
0d50: 73 74 72 75 63 74 75 72 65 73 2e 20 59 6f 75 20  structures. You 
0d60: 63 61 6e 20 73 65 65 20 74 68 65 0d 0a 65 78 70  can see the..exp
0d70: 61 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 63 61  ansion of the ca
0d80: 6c 6c 20 62 79 20 6c 6f 6f 6b 69 6e 67 20 69 6e  ll by looking in
0d90: 20 74 68 65 20 63 61 63 68 65 64 20 66 69 6c 65   the cached file
0da0: 73 20 28 6c 6f 6f 6b 20 69 6e 20 79 6f 75 72 20  s (look in your 
0db0: 6c 69 6e 6b 74 72 65 65 0d 0a 66 6f 72 20 6d 65  linktree..for me
0dc0: 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 20 61 6e  gatest.config an
0dd0: 64 20 72 75 6e 63 6f 6e 66 69 67 73 2e 63 6f 6e  d runconfigs.con
0de0: 66 69 67 20 63 61 63 68 65 20 66 69 6c 65 73 20  fig cache files 
0df0: 61 6e 64 20 69 6e 20 79 6f 75 72 20 74 65 73 74  and in your test
0e00: 20 72 75 6e 0d 0a 61 72 65 61 73 20 66 6f 72 20   run..areas for 
0e10: 74 68 65 20 65 78 70 61 6e 64 65 64 20 61 6e 64  the expanded and
0e20: 20 63 61 63 68 65 64 20 74 65 73 74 63 6f 6e 66   cached testconf
0e30: 69 67 29 2e 0d 0a 0d 0a 57 69 6c 64 63 61 72 64  ig).....Wildcard
0e40: 73 20 61 6e 64 20 72 65 67 65 78 65 73 20 69 6e  s and regexes in
0e50: 20 54 61 72 67 65 74 73 0d 0a 0d 0a 2d 2d 2d 2d   Targets....----
0e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e70: 2d 2d 2d 2d 2d 0d 0a 5b 61 2f 32 2f 62 5d 0d 0a  -----..[a/2/b]..
0e80: 56 41 52 31 20 56 41 4c 31 0d 0a 0d 0a 5b 61 2f  VAR1 VAL1....[a/
0e90: 25 2f 62 5d 0d 0a 56 41 52 31 20 56 41 4c 32 0d  %/b]..VAR1 VAL2.
0ea0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
0eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 57 69  ----------....Wi
0ec0: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 3a 0d 0a 0d  ll result in:...
0ed0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
0ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 61 2f 32  ----------..[a/2
0ef0: 2f 62 5d 0d 0a 56 41 52 31 20 56 41 4c 32 0d 0a  /b]..VAR1 VAL2..
0f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 43 61 6e  ---------....Can
0f20: 20 75 73 65 20 65 69 74 68 65 72 20 77 69 6c 64   use either wild
0f30: 63 61 72 64 20 6f 66 20 22 25 22 20 6f 72 20 61  card of "%" or a
0f40: 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73   regular express
0f50: 69 6f 6e 3a 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d  ion:....--------
0f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0f70: 2d 0d 0a 5b 2f 61 62 63 2e 2a 64 65 66 2f 5d 0d  -..[/abc.*def/].
0f80: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
0f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 44 69  ----------....Di
0fa0: 73 6b 20 53 70 61 63 65 20 43 68 65 63 6b 73 0d  sk Space Checks.
0fb0: 0a 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  .^^^^^^^^^^^^^^^
0fc0: 5e 5e 0d 0a 0d 0a 53 6f 6d 65 20 70 61 72 61 6d  ^^....Some param
0fd0: 65 74 65 72 73 20 79 6f 75 20 63 61 6e 20 70 75  eters you can pu
0fe0: 74 20 69 6e 20 74 68 65 20 5b 73 65 74 75 70 5d  t in the [setup]
0ff0: 20 73 65 63 74 69 6f 6e 20 6f 66 20 6d 65 67 61   section of mega
1000: 74 65 73 74 2e 63 6f 6e 66 69 67 3a 0d 0a 0d 0a  test.config:....
1010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1020: 2d 2d 2d 0d 0a 23 20 6d 69 6e 69 6d 75 6d 20 73  ---..# minimum s
1030: 70 61 63 65 20 72 65 71 75 69 72 65 64 20 69 6e  pace required in
1040: 20 61 20 72 75 6e 20 64 69 73 6b 20 0d 0a 6d 69   a run disk ..mi
1050: 6e 73 70 61 63 65 20 31 30 30 30 30 30 30 30 0d  nspace 10000000.
1060: 0a 0d 0a 23 20 6d 69 6e 69 6d 75 6d 20 73 70 61  ...# minimum spa
1070: 63 65 20 72 65 71 75 69 72 65 64 20 69 6e 20 64  ce required in d
1080: 62 64 69 72 3a 0d 0a 64 62 64 69 72 2d 73 70 61  bdir:..dbdir-spa
1090: 63 65 2d 72 65 71 75 69 72 65 64 20 31 30 30 30  ce-required 1000
10a0: 30 30 0d 0a 0d 0a 23 20 73 63 72 69 70 74 20 74  00....# script t
10b0: 68 61 74 20 74 61 6b 65 73 20 70 61 74 68 20 61  hat takes path a
10c0: 73 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20  s parameter and 
10d0: 72 65 74 75 72 6e 73 20 6e 75 6d 62 65 72 20 6f  returns number o
10e0: 66 20 62 79 74 65 73 20 61 76 61 69 6c 61 62 6c  f bytes availabl
10f0: 65 3a 0d 0a 66 72 65 65 2d 73 70 61 63 65 2d 73  e:..free-space-s
1100: 63 72 69 70 74 20 63 68 65 63 6b 2d 73 70 61 63  cript check-spac
1110: 65 2e 73 68 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  e.sh..----------
1120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 54 72 69  ---------....Tri
1130: 6d 20 74 72 61 69 6c 69 6e 67 20 73 70 61 63 65  m trailing space
1140: 73 0d 0a 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  s..^^^^^^^^^^^^^
1150: 5e 5e 5e 5e 5e 5e 5e 0d 0a 0d 0a 2d 2d 2d 2d 2d  ^^^^^^^....-----
1160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b  -------------..[
1170: 63 6f 6e 66 69 67 66 3a 73 65 74 74 69 6e 67 73  configf:settings
1180: 20 74 72 69 6d 2d 74 72 61 69 6c 69 6e 67 2d 73   trim-trailing-s
1190: 70 61 63 65 73 20 79 65 73 5d 0d 0a 2d 2d 2d 2d  paces yes]..----
11a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
11b0: 0d 0a 4a 6f 62 20 53 75 62 6d 69 73 73 69 6f 6e  ..Job Submission
11c0: 20 43 6f 6e 74 72 6f 6c 0d 0a 5e 5e 5e 5e 5e 5e   Control..^^^^^^
11d0: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
11e0: 0d 0a 0d 0a 53 75 62 6d 69 74 20 6a 6f 62 73 20  ....Submit jobs 
11f0: 74 6f 20 48 6f 73 74 20 54 79 70 65 73 20 62 61  to Host Types ba
1200: 73 65 64 20 6f 6e 20 54 65 73 74 20 4e 61 6d 65  sed on Test Name
1210: 0d 0a 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b  ..++++++++++++++
1220: 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b  ++++++++++++++++
1230: 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 0d 0a  ++++++++++++++..
1240: 0d 0a 2e 49 6e 20 6d 65 67 61 74 65 73 74 2e 63  ...In megatest.c
1250: 6f 6e 66 69 67 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  onfig..---------
1260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
1270: 0a 5b 68 6f 73 74 2d 74 79 70 65 73 5d 0d 0a 67  .[host-types]..g
1280: 65 6e 65 72 61 6c 20 20 20 6e 62 66 61 6b 65 0d  eneral   nbfake.
1290: 0a 72 65 6d 6f 74 65 20 20 20 20 62 73 75 62 0d  .remote    bsub.
12a0: 0a 0d 0a 5b 6c 61 75 6e 63 68 65 72 73 5d 0d 0a  ...[launchers]..
12b0: 72 75 6e 66 69 72 73 74 2f 73 75 6d 25 20 72 65  runfirst/sum% re
12c0: 6d 6f 74 65 0d 0a 25 20 67 65 6e 65 72 61 6c 0d  mote..% general.
12d0: 0a 0d 0a 5b 6a 6f 62 74 6f 6f 6c 73 5d 0d 0a 6c  ...[jobtools]..l
12e0: 61 75 6e 63 68 65 72 20 62 73 75 62 0d 0a 23 20  auncher bsub..# 
12f0: 69 66 20 64 65 66 69 6e 65 64 20 61 6e 64 20 6e  if defined and n
1300: 6f 74 20 22 6e 6f 22 20 66 6c 65 78 69 2d 6c 61  ot "no" flexi-la
1310: 75 6e 63 68 65 72 20 77 69 6c 6c 20 62 79 70 61  uncher will bypa
1320: 73 73 20 6c 61 75 6e 63 68 65 72 20 75 6e 6c 65  ss launcher unle
1330: 73 73 20 0d 0a 23 20 74 68 65 72 65 20 69 73 20  ss ..# there is 
1340: 6e 6f 20 68 6f 73 74 2d 74 79 70 65 20 6d 61 74  no host-type mat
1350: 63 68 2e 0d 0a 66 6c 65 78 69 2d 6c 61 75 6e 63  ch...flexi-launc
1360: 68 65 72 20 79 65 73 0d 0a 2d 2d 2d 2d 2d 2d 2d  her yes..-------
1370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1380: 2d 0d 0a 0d 0a 68 6f 73 74 2d 74 79 70 65 73 0d  -....host-types.
1390: 0a 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 0d 0a 0d 0a 4c  .++++++++++....L
13a0: 69 73 74 20 6f 66 20 68 6f 73 74 20 74 79 70 65  ist of host type
13b0: 73 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e  s and the comman
13c0: 64 6c 69 6e 65 20 74 6f 20 72 75 6e 20 61 20 6a  dline to run a j
13d0: 6f 62 20 6f 6e 20 74 68 61 74 20 68 6f 73 74 20  ob on that host 
13e0: 74 79 70 65 2e 0d 0a 0d 0a 2e 68 6f 73 74 2d 74  type......host-t
13f0: 79 70 65 20 3d 3e 20 6c 61 75 6e 63 68 20 63 6f  ype => launch co
1400: 6d 6d 61 6e 64 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  mmand..---------
1410: 2d 2d 2d 0d 0a 67 65 6e 65 72 61 6c 20 6e 62 66  ---..general nbf
1420: 61 6b 65 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ake..-----------
1430: 2d 0d 0a 0d 0a 6c 61 75 6e 63 68 65 72 73 0d 0a  -....launchers..
1440: 2b 2b 2b 2b 2b 2b 2b 2b 2b 0d 0a 0d 0a 2e 74 65  +++++++++.....te
1450: 73 74 2f 69 74 65 6d 70 61 74 68 20 3d 3e 20 68  st/itempath => h
1460: 6f 73 74 2d 74 79 70 65 0d 0a 2d 2d 2d 2d 2d 2d  ost-type..------
1470: 2d 2d 2d 2d 2d 2d 0d 0a 72 75 6e 66 69 72 73 74  ------..runfirst
1480: 2f 73 75 6d 25 20 72 65 6d 6f 74 65 0d 0a 2d 2d  /sum% remote..--
1490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 4d 69  ----------....Mi
14a0: 73 63 65 6c 6c 61 6e 65 6f 75 73 20 53 65 74 75  scellaneous Setu
14b0: 70 20 49 74 65 6d 73 0d 0a 2b 2b 2b 2b 2b 2b 2b  p Items..+++++++
14c0: 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b  ++++++++++++++++
14d0: 2b 2b 0d 0a 0d 0a 41 74 74 65 6d 70 74 20 74 6f  ++....Attempt to
14e0: 20 72 65 72 75 6e 20 74 65 73 74 73 20 69 6e 20   rerun tests in 
14f0: 22 53 54 55 43 4b 2f 44 45 41 44 22 2c 20 22 6e  "STUCK/DEAD", "n
1500: 2f 61 22 2c 20 22 5a 45 52 4f 5f 49 54 45 4d 53  /a", "ZERO_ITEMS
1510: 22 20 73 74 61 74 65 73 2e 0d 0a 0d 0a 2e 49 6e  " states......In
1520: 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67   megatest.config
1530: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
1540: 2d 2d 2d 2d 0d 0a 5b 73 65 74 75 70 5d 0d 0a 72  ----..[setup]..r
1550: 65 72 75 6e 73 20 35 0d 0a 2d 2d 2d 2d 2d 2d 2d  eruns 5..-------
1560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 52  -----------....R
1570: 65 70 6c 61 63 65 20 74 68 65 20 64 65 66 61 75  eplace the defau
1580: 6c 74 20 62 6c 61 63 6b 6c 69 73 74 65 64 20 65  lt blacklisted e
1590: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
15a0: 62 6c 65 73 20 77 69 74 68 20 75 73 65 72 20 73  bles with user s
15b0: 75 70 70 6c 69 65 64 0d 0a 6c 69 73 74 2e 0d 0a  upplied..list...
15c0: 0d 0a 44 65 66 61 75 6c 74 20 6c 69 73 74 3a 20  ..Default list: 
15d0: 55 53 45 52 20 48 4f 4d 45 20 44 49 53 50 4c 41  USER HOME DISPLA
15e0: 59 20 4c 53 5f 43 4f 4c 4f 52 53 20 58 4b 45 59  Y LS_COLORS XKEY
15f0: 53 59 4d 44 42 20 45 44 49 54 4f 52 20 4d 41 4b  SYMDB EDITOR MAK
1600: 45 46 4c 41 47 53 20 4d 41 4b 45 46 20 4d 41 4b  EFLAGS MAKEF MAK
1610: 45 4f 56 45 52 52 49 44 45 53 0d 0a 0d 0a 2e 41  EOVERRIDES.....A
1620: 64 64 20 61 20 22 62 61 64 22 20 76 61 72 69 61  dd a "bad" varia
1630: 62 6c 65 20 22 50 52 4f 4d 50 54 22 20 74 6f 20  ble "PROMPT" to 
1640: 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 74 68  the variables th
1650: 61 74 20 77 69 6c 6c 20 62 65 20 63 6f 6d 6d 65  at will be comme
1660: 6e 74 65 64 20 6f 75 74 0d 0a 69 6e 20 74 68 65  nted out..in the
1670: 20 6d 65 67 61 74 65 73 74 2e 73 68 20 61 6e 64   megatest.sh and
1680: 20 6d 65 67 61 74 65 73 74 2e 63 73 68 20 66 69   megatest.csh fi
1690: 6c 65 73 3a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  les:..----------
16a0: 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 73 65 74 75 70 5d  -------..[setup]
16b0: 0d 0a 62 6c 61 63 6b 6c 69 73 74 76 61 72 73 20  ..blacklistvars 
16c0: 55 53 45 52 20 48 4f 4d 45 20 44 49 53 50 4c 41  USER HOME DISPLA
16d0: 59 20 4c 53 5f 43 4f 4c 4f 52 53 20 58 4b 45 59  Y LS_COLORS XKEY
16e0: 53 59 4d 44 42 20 45 44 49 54 4f 52 20 4d 41 4b  SYMDB EDITOR MAK
16f0: 45 46 4c 41 47 53 20 50 52 4f 4d 50 54 0d 0a 2d  EFLAGS PROMPT..-
1700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1710: 0d 0a 0d 0a 52 75 6e 20 74 69 6d 65 20 6c 69 6d  ....Run time lim
1720: 69 74 0d 0a 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b  it..++++++++++++
1730: 2b 2b 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ++....----------
1740: 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 73 65 74 75 70 5d  -------..[setup]
1750: 0d 0a 23 20 74 68 69 73 20 77 69 6c 6c 20 61 75  ..# this will au
1760: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6b 69 6c 6c  tomatically kill
1770: 20 74 68 65 20 74 65 73 74 20 69 66 20 69 74 20   the test if it 
1780: 72 75 6e 73 20 66 6f 72 20 6d 6f 72 65 20 74 68  runs for more th
1790: 61 6e 20 31 68 20 32 6d 20 61 6e 64 20 33 73 0d  an 1h 2m and 3s.
17a0: 0a 72 75 6e 74 69 6d 65 6c 69 6d 20 31 68 20 32  .runtimelim 1h 2
17b0: 6d 20 33 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  m 3s..----------
17c0: 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 54 65 73 74 73  -------....Tests
17d0: 20 62 72 6f 77 73 65 72 20 76 69 65 77 0d 0a 7e   browser view..~
17e0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
17f0: 7e 0d 0a 0d 0a 54 68 65 20 74 65 73 74 73 20 62  ~....The tests b
1800: 72 6f 77 73 65 72 20 28 73 65 65 20 74 68 65 20  rowser (see the 
1810: 52 75 6e 20 43 6f 6e 74 72 6f 6c 20 74 61 62 20  Run Control tab 
1820: 6f 6e 20 74 68 65 20 64 61 73 68 62 6f 61 72 64  on the dashboard
1830: 29 20 68 61 73 20 74 77 6f 20 76 69 65 77 73 20  ) has two views 
1840: 66 6f 72 20 64 69 73 70 6c 61 79 69 6e 67 20 74  for displaying t
1850: 68 65 20 74 65 73 74 73 2e 20 0d 0a 0d 0a 2e 20  he tests. ..... 
1860: 44 6f 74 20 28 67 72 61 70 68 76 69 7a 29 20 62  Dot (graphviz) b
1870: 61 73 65 64 20 74 72 65 65 0d 0a 2e 20 4e 6f 20  ased tree... No 
1880: 64 6f 74 2c 20 70 6c 61 69 6e 20 6c 69 73 74 69  dot, plain listi
1890: 6e 67 0d 0a 0d 0a 54 68 65 20 64 65 66 61 75 6c  ng....The defaul
18a0: 74 20 69 73 20 74 68 65 20 67 72 61 70 68 76 69  t is the graphvi
18b0: 7a 20 62 61 73 65 64 20 74 72 65 65 20 62 75 74  z based tree but
18c0: 20 69 66 20 79 6f 75 72 20 74 65 73 74 73 20 64   if your tests d
18d0: 6f 6e 27 74 20 76 69 65 77 0d 0a 77 65 6c 6c 20  on't view..well 
18e0: 69 6e 20 74 68 61 74 20 6d 6f 64 65 20 74 68 65  in that mode the
18f0: 6e 20 75 73 65 20 22 6e 6f 64 6f 74 22 20 74 6f  n use "nodot" to
1900: 20 74 75 72 6e 20 69 74 20 6f 66 66 2e 0d 0a 0d   turn it off....
1910: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
1920: 2d 2d 0d 0a 5b 73 65 74 75 70 5d 0d 0a 6e 6f 64  --..[setup]..nod
1930: 6f 74 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ot..------------
1940: 2d 2d 2d 2d 2d 0d 0a 0d 0a 43 61 70 74 75 72 69  -----....Capturi
1950: 6e 67 20 54 65 73 74 20 44 61 74 61 0d 0a 7e 7e  ng Test Data..~~
1960: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
1970: 7e 0d 0a 0d 0a 49 6e 20 61 20 74 65 73 74 20 79  ~....In a test y
1980: 6f 75 20 63 61 6e 20 63 61 70 74 75 72 65 20 61  ou can capture a
1990: 72 62 69 74 72 61 72 79 20 76 61 72 69 61 62 6c  rbitrary variabl
19a0: 65 73 20 61 6e 64 20 72 6f 6c 6c 20 74 68 65 6d  es and roll them
19b0: 20 75 70 20 69 6e 20 74 68 65 0d 0a 6d 65 67 61   up in the..mega
19c0: 74 65 73 74 20 64 61 74 61 62 61 73 65 20 66 6f  test database fo
19d0: 72 20 76 69 65 77 69 6e 67 20 6f 6e 20 74 68 65  r viewing on the
19e0: 20 64 61 73 68 62 6f 61 72 64 20 6f 72 20 77 65   dashboard or we
19f0: 62 20 61 70 70 2e 0d 0a 0d 0a 2e 49 6e 20 61 20  b app......In a 
1a00: 74 65 73 74 20 61 73 20 61 20 73 63 72 69 70 74  test as a script
1a10: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
1a20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 4d 54 5f  ----------..$MT_
1a30: 4d 45 47 41 54 45 53 54 20 2d 6c 6f 61 64 2d 74  MEGATEST -load-t
1a40: 65 73 74 2d 64 61 74 61 20 3c 3c 20 45 4f 46 0d  est-data << EOF.
1a50: 0a 66 6f 6f 2c 62 61 72 2c 20 20 20 31 2e 32 2c  .foo,bar,   1.2,
1a60: 20 20 31 2e 39 2c 20 3e 0d 0a 66 6f 6f 2c 72 61    1.9, >..foo,ra
1a70: 62 2c 20 31 2e 30 65 39 2c 20 31 30 65 39 2c 20  b, 1.0e9, 10e9, 
1a80: 31 65 39 0d 0a 66 6f 6f 2c 62 6c 61 2c 20 20 20  1e9..foo,bla,   
1a90: 31 2e 32 2c 20 20 31 2e 39 2c 20 3c 0d 0a 66 6f  1.2,  1.9, <..fo
1aa0: 6f 2c 62 61 6c 2c 20 20 20 31 2e 32 2c 20 20 31  o,bal,   1.2,  1
1ab0: 2e 32 2c 20 3c 20 20 20 2c 20 20 20 20 20 2c 43  .2, <   ,     ,C
1ac0: 68 65 63 6b 20 66 6f 72 20 6f 76 65 72 6c 6f 61  heck for overloa
1ad0: 64 0d 0a 66 6f 6f 2c 61 6c 62 2c 20 20 20 31 2e  d..foo,alb,   1.
1ae0: 32 2c 20 20 31 2e 32 2c 20 3c 3d 20 20 2c 20 41  2,  1.2, <=  , A
1af0: 6d 70 73 2c 54 68 69 73 20 69 73 20 74 68 65 20  mps,This is the 
1b00: 68 69 67 68 20 70 6f 77 65 72 20 63 69 72 63 75  high power circu
1b10: 69 74 20 74 65 73 74 0d 0a 66 6f 6f 2c 61 62 6c  it test..foo,abl
1b20: 2c 20 20 20 31 2e 32 2c 20 20 31 2e 33 2c 20 30  ,   1.2,  1.3, 0
1b30: 2e 31 0d 0a 66 6f 6f 2c 62 72 61 2c 20 20 20 31  .1..foo,bra,   1
1b40: 2e 32 2c 20 70 61 73 73 2c 20 73 69 6c 6c 79 20  .2, pass, silly 
1b50: 73 74 75 66 66 0d 0a 66 61 7a 2c 62 61 72 2c 20  stuff..faz,bar, 
1b60: 20 20 20 31 30 2c 20 20 38 6d 41 2c 20 20 20 20     10,  8mA,    
1b70: 20 2c 20 20 20 20 20 2c 22 74 68 69 73 20 69 73   ,     ,"this is
1b80: 20 61 20 63 6f 6d 6d 65 6e 74 22 0d 0a 45 4f 46   a comment"..EOF
1b90: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
1ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 41 6c  ----------....Al
1bb0: 74 65 72 6e 61 74 69 76 65 6c 79 20 79 6f 75 20  ternatively you 
1bc0: 63 61 6e 20 75 73 65 20 6c 6f 67 70 72 6f 20 74  can use logpro t
1bd0: 72 69 67 67 65 72 73 20 74 6f 20 63 61 70 74 75  riggers to captu
1be0: 72 65 20 76 61 6c 75 65 73 20 61 6e 64 20 69 6e  re values and in
1bf0: 6a 65 63 74 20 74 68 65 6d 0d 0a 69 6e 74 6f 20  ject them..into 
1c00: 6d 65 67 61 74 65 73 74 20 75 73 69 6e 67 20 74  megatest using t
1c10: 68 65 20 2d 73 65 74 2d 76 61 6c 75 65 73 20 6d  he -set-values m
1c20: 65 63 68 61 6e 69 73 6d 3a 0d 0a 0d 0a 2e 4d 65  echanism:.....Me
1c30: 67 61 74 65 73 74 20 68 65 6c 70 20 72 65 6c 61  gatest help rela
1c40: 74 65 64 20 74 6f 20 2d 73 65 74 2d 76 61 6c 75  ted to -set-valu
1c50: 65 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  es..------------
1c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 54 65  ------------..Te
1c70: 73 74 20 64 61 74 61 20 63 61 70 74 75 72 65 0d  st data capture.
1c80: 0a 20 20 2d 73 65 74 2d 76 61 6c 75 65 73 20 20  .  -set-values  
1c90: 20 20 20 20 20 20 20 20 20 20 20 3a 20 75 70 64             : upd
1ca0: 61 74 65 20 6f 72 20 73 65 74 20 76 61 6c 75 65  ate or set value
1cb0: 73 20 69 6e 20 74 68 65 20 74 65 73 74 64 61 74  s in the testdat
1cc0: 61 20 74 61 62 6c 65 0d 0a 20 20 3a 63 61 74 65  a table..  :cate
1cd0: 67 6f 72 79 20 20 20 20 20 20 20 20 20 20 20 20  gory            
1ce0: 20 20 20 3a 20 73 65 74 20 74 68 65 20 63 61 74     : set the cat
1cf0: 65 67 6f 72 79 20 66 69 65 6c 64 20 28 6f 70 74  egory field (opt
1d00: 69 6f 6e 61 6c 29 0d 0a 20 20 3a 76 61 72 69 61  ional)..  :varia
1d10: 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20  ble             
1d20: 20 20 3a 20 73 65 74 20 74 68 65 20 76 61 72 69    : set the vari
1d30: 61 62 6c 65 20 6e 61 6d 65 20 28 6f 70 74 69 6f  able name (optio
1d40: 6e 61 6c 29 0d 0a 20 20 3a 76 61 6c 75 65 20 20  nal)..  :value  
1d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d60: 3a 20 76 61 6c 75 65 20 6d 65 61 73 75 72 65 64  : value measured
1d70: 20 28 72 65 71 75 69 72 65 64 29 0d 0a 20 20 3a   (required)..  :
1d80: 65 78 70 65 63 74 65 64 20 20 20 20 20 20 20 20  expected        
1d90: 20 20 20 20 20 20 20 3a 20 76 61 6c 75 65 20 65         : value e
1da0: 78 70 65 63 74 65 64 20 28 72 65 71 75 69 72 65  xpected (require
1db0: 64 29 0d 0a 20 20 3a 74 6f 6c 20 20 20 20 20 20  d)..  :tol      
1dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
1dd0: 7c 76 61 6c 75 65 2d 65 78 70 65 63 74 7c 20 3c  |value-expect| <
1de0: 3d 20 74 6f 6c 20 28 72 65 71 75 69 72 65 64 2c  = tol (required,
1df0: 20 63 61 6e 20 62 65 20 3c 2c 20 3e 2c 20 3e 3d   can be <, >, >=
1e00: 2c 20 3c 3d 20 6f 72 20 6e 75 6d 62 65 72 29 0d  , <= or number).
1e10: 0a 20 20 3a 75 6e 69 74 73 20 20 20 20 20 20 20  .  :units       
1e20: 20 20 20 20 20 20 20 20 20 20 20 3a 20 6e 61 6d             : nam
1e30: 65 20 6f 66 20 74 68 65 20 75 6e 69 74 73 20 66  e of the units f
1e40: 6f 72 20 76 61 6c 75 65 2c 20 65 78 70 65 63 74  or value, expect
1e50: 65 64 5f 76 61 6c 75 65 20 65 74 63 2e 20 28 6f  ed_value etc. (o
1e60: 70 74 69 6f 6e 61 6c 29 0d 0a 2d 2d 2d 2d 2d 2d  ptional)..------
1e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1e80: 2d 2d 0d 0a 0d 0a 44 61 73 68 62 6f 61 72 64 20  --....Dashboard 
1e90: 73 65 74 74 69 6e 67 73 0d 0a 7e 7e 7e 7e 7e 7e  settings..~~~~~~
1ea0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a  ~~~~~~~~~~~~....
1eb0: 2e 52 75 6e 73 20 74 61 62 20 62 75 74 74 6f 6e  .Runs tab button
1ec0: 73 2c 20 66 6f 6e 74 20 61 6e 64 20 73 69 7a 65  s, font and size
1ed0: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
1ee0: 2d 2d 2d 2d 0d 0a 5b 64 61 73 68 62 6f 61 72 64  ----..[dashboard
1ef0: 5d 0d 0a 62 74 6e 2d 68 65 69 67 68 74 20 78 31  ]..btn-height x1
1f00: 34 0d 0a 62 74 6e 2d 66 6f 6e 74 73 7a 20 31 30  4..btn-fontsz 10
1f10: 0d 0a 63 65 6c 6c 2d 77 69 64 74 68 20 36 30 0d  ..cell-width 60.
1f20: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
1f30: 2d 2d 2d 0d 0a 0d 0a 44 61 74 61 62 61 73 65 20  ---....Database 
1f40: 73 65 74 74 69 6e 67 73 0d 0a 7e 7e 7e 7e 7e 7e  settings..~~~~~~
1f50: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 2e  ~~~~~~~~~~~.....
1f60: 44 61 74 61 62 61 73 65 20 63 6f 6e 66 69 67 20  Database config 
1f70: 73 65 74 74 69 6e 67 73 20 69 6e 20 5b 73 65 74  settings in [set
1f80: 75 70 5d 20 73 65 63 74 69 6f 6e 20 6f 66 20 6d  up] section of m
1f90: 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 0d 0a  egatest.config..
1fa0: 5b 77 69 64 74 68 3d 22 37 30 25 22 2c 63 6f 6c  [width="70%",col
1fb0: 73 3d 22 5e 2c 32 6d 2c 32 6d 2c 32 6d 22 2c 66  s="^,2m,2m,2m",f
1fc0: 72 61 6d 65 3d 22 74 6f 70 62 6f 74 22 2c 6f 70  rame="topbot",op
1fd0: 74 69 6f 6e 73 3d 22 68 65 61 64 65 72 22 5d 0d  tions="header"].
1fe0: 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .|==============
1ff0: 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 7c 56 61 72 20 20  ========..|Var  
2000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2010: 20 20 20 20 20 7c 20 50 75 72 70 6f 73 65 20 20       | Purpose  
2020: 20 20 20 20 20 20 20 20 20 20 7c 20 56 61 6c 69            | Vali
2030: 64 20 76 61 6c 75 65 73 20 20 20 20 20 20 20 20  d values        
2040: 20 20 20 20 7c 20 43 6f 6d 6d 65 6e 74 73 0d 0a      | Comments..
2050: 7c 64 65 6c 61 79 2d 6f 6e 2d 62 75 73 79 20 20  |delay-on-busy  
2060: 20 20 20 20 20 20 20 20 20 20 20 7c 20 50 72 65             | Pre
2070: 76 65 6e 74 20 63 6f 6e 63 75 72 72 65 6e 74 20  vent concurrent 
2080: 61 63 63 65 73 73 20 69 73 73 75 65 73 20 7c 20  access issues | 
2090: 79 65 73 5c 7c 6e 6f 20 6f 72 20 6e 6f 74 20 64  yes\|no or not d
20a0: 65 66 69 6e 65 64 20 7c 20 44 65 66 61 75 6c 74  efined | Default
20b0: 3d 6e 6f 2c 20 6d 61 79 20 68 65 6c 70 20 6f 6e  =no, may help on
20c0: 20 73 6f 6d 65 20 6e 65 74 77 6f 72 6b 20 66 69   some network fi
20d0: 6c 65 20 73 79 73 74 65 6d 73 2c 20 6d 61 79 20  le systems, may 
20e0: 73 6c 6f 77 20 74 68 69 6e 67 73 20 64 6f 77 6e  slow things down
20f0: 20 61 6c 73 6f 2e 0d 0a 7c 66 61 73 74 73 74 61   also...|faststa
2100: 72 74 09 09 20 20 20 7c 20 41 6c 6c 20 64 69 72  rt..   | All dir
2110: 65 63 74 20 66 69 6c 65 20 61 63 63 65 73 73 20  ect file access 
2120: 74 6f 20 73 71 6c 69 74 65 20 64 62 20 66 69 6c  to sqlite db fil
2130: 65 73 20 7c 20 79 65 73 5c 7c 6e 6f 20 6f 72 20  es | yes\|no or 
2140: 6e 6f 74 20 64 65 66 69 6e 65 64 20 7c 20 44 65  not defined | De
2150: 66 61 75 6c 74 3d 79 65 73 2c 20 73 75 67 67 65  fault=yes, sugge
2160: 73 74 20 6e 6f 20 66 6f 72 20 63 65 6e 74 72 61  st no for centra
2170: 6c 20 61 75 74 6f 6d 61 74 65 64 20 73 79 73 74  l automated syst
2180: 65 6d 73 20 61 6e 64 20 79 65 73 20 66 6f 72 20  ems and yes for 
2190: 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 0d  interactive use.
21a0: 0a 7c 68 6f 6d 65 68 6f 73 74 20 09 09 20 20 20  .|homehost ..   
21b0: 7c 20 53 74 61 72 74 20 73 65 72 76 65 72 73 20  | Start servers 
21c0: 6f 6e 20 74 68 69 73 20 68 6f 73 74 20 7c 20 3c  on this host | <
21d0: 68 6f 73 74 6e 61 6d 65 3e 20 7c 20 44 65 66 61  hostname> | Defa
21e0: 75 6c 74 73 20 74 6f 20 6c 6f 63 61 6c 20 68 6f  ults to local ho
21f0: 73 74 0d 0a 7c 68 6f 73 74 6e 61 6d 65 09 09 20  st..|hostname.. 
2200: 20 20 7c 20 48 6f 73 74 6e 61 6d 65 20 74 6f 20    | Hostname to 
2210: 62 69 6e 64 20 74 6f 20 7c 20 3c 68 6f 73 74 6e  bind to | <hostn
2220: 61 6d 65 3e 5c 7c 2d 09 20 20 7c 20 4f 6e 20 6d  ame>\|-.  | On m
2230: 75 6c 74 69 2d 68 6f 6d 65 64 20 68 6f 73 74 73  ulti-homed hosts
2240: 20 61 6c 6c 6f 77 73 20 62 69 6e 64 69 6e 67 20   allows binding 
2250: 74 6f 20 73 70 65 63 69 66 69 63 20 68 6f 73 74  to specific host
2260: 6e 61 6d 65 0d 0a 7c 6c 6f 77 70 6f 72 74 09 09  name..|lowport..
2270: 20 20 20 7c 20 53 74 61 72 74 20 73 65 61 72 63     | Start searc
2280: 68 69 6e 67 20 66 6f 72 20 61 20 70 6f 72 74 20  hing for a port 
2290: 61 74 20 74 68 69 73 20 70 6f 72 74 6e 75 6d 7c  at this portnum|
22a0: 20 33 32 37 36 38 20 7c 20 0d 0a 7c 72 65 71 75   32768 | ..|requ
22b0: 69 72 65 64 09 09 20 20 20 7c 20 53 65 72 76 65  ired..   | Serve
22c0: 72 20 72 65 71 75 69 72 65 64 20 20 20 20 7c 20  r required    | 
22d0: 79 65 73 5c 7c 6e 6f 20 6f 72 20 6e 6f 74 20 64  yes\|no or not d
22e0: 65 66 69 6e 65 64 20 20 7c 20 44 65 66 61 75 6c  efined  | Defaul
22f0: 74 3d 6e 6f 2c 20 66 6f 72 63 65 20 73 74 61 72  t=no, force star
2300: 74 20 6f 66 20 73 65 72 76 65 72 20 61 6c 77 61  t of server alwa
2310: 79 73 0d 0a 7c 73 65 72 76 65 72 2d 71 75 65 72  ys..|server-quer
2320: 79 2d 74 68 72 65 73 68 6f 6c 64 09 20 20 20 7c  y-threshold.   |
2330: 20 53 74 61 72 74 20 73 65 72 76 65 72 20 77 68   Start server wh
2340: 65 6e 20 71 75 65 72 69 65 73 20 74 61 6b 65 20  en queries take 
2350: 6c 6f 6e 67 65 72 20 74 68 61 6e 20 74 68 69 73  longer than this
2360: 20 7c 20 6e 75 6d 62 65 72 20 69 6e 20 6d 69 6c   | number in mil
2370: 6c 69 73 65 63 6f 6e 64 73 20 7c 20 44 65 66 61  liseconds | Defa
2380: 75 6c 74 3d 33 30 30 0d 0a 7c 74 69 6d 65 6f 75  ult=300..|timeou
2390: 74 09 09 20 20 20 7c 20 68 74 74 70 20 61 70 69  t..   | http api
23a0: 20 74 69 6d 65 6f 75 74 20 09 7c 20 6e 75 6d 62   timeout .| numb
23b0: 65 72 20 69 6e 20 68 6f 75 72 73 09 20 20 7c 20  er in hours.  | 
23c0: 44 65 66 61 75 6c 74 20 69 73 20 31 20 6d 69 6e  Default is 1 min
23d0: 75 74 65 2c 20 64 6f 20 6e 6f 74 20 63 68 61 6e  ute, do not chan
23e0: 67 65 0d 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ge..|===========
23f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 54  ===========....T
2400: 68 65 20 74 65 73 74 63 6f 6e 66 69 67 20 46 69  he testconfig Fi
2410: 6c 65 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  le..------------
2420: 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 53 65 74 75 70  -------....Setup
2430: 20 73 65 63 74 69 6f 6e 0d 0a 7e 7e 7e 7e 7e 7e   section..~~~~~~
2440: 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 48 65 61 64 65  ~~~~~~~....Heade
2450: 72 0d 0a 5e 5e 5e 5e 5e 5e 0d 0a 0d 0a 2d 2d 2d  r..^^^^^^....---
2460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2470: 0d 0a 5b 73 65 74 75 70 5d 0d 0a 2d 2d 2d 2d 2d  ..[setup]..-----
2480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
2490: 0d 0a 54 68 65 20 72 75 6e 73 63 72 69 70 74 20  ..The runscript 
24a0: 6d 65 74 68 6f 64 20 69 73 20 61 20 62 72 75 74  method is a brut
24b0: 65 20 66 6f 72 63 65 20 77 61 79 20 74 6f 20 72  e force way to r
24c0: 75 6e 20 73 63 72 69 70 74 73 20 77 68 65 72 65  un scripts where
24d0: 20 74 68 65 0d 0a 75 73 65 72 20 69 73 20 72 65   the..user is re
24e0: 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 73 65  sponsible for se
24f0: 74 74 69 6e 67 20 53 54 41 54 45 20 61 6e 64 20  tting STATE and 
2500: 53 54 41 54 55 53 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d  STATUS....------
2510: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 72  -------------..r
2520: 75 6e 73 63 72 69 70 74 20 6d 61 69 6e 2e 63 73  unscript main.cs
2530: 68 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  h..-------------
2540: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 52 65 71 75 69 72  ------....Requir
2550: 65 6d 65 6e 74 73 20 73 65 63 74 69 6f 6e 0d 0a  ements section..
2560: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
2570: 7e 7e 7e 7e 0d 0a 0d 0a 2e 48 65 61 64 65 72 0d  ~~~~.....Header.
2580: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
2590: 2d 2d 2d 2d 0d 0a 5b 72 65 71 75 69 72 65 6d 65  ----..[requireme
25a0: 6e 74 73 5d 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  nts]..----------
25b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 57 61 69  ---------....Wai
25c0: 74 20 6f 6e 20 4f 74 68 65 72 20 54 65 73 74 73  t on Other Tests
25d0: 0d 0a 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ..^^^^^^^^^^^^^^
25e0: 5e 5e 5e 5e 5e 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d  ^^^^^....-------
25f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20  ------------..# 
2600: 41 20 6e 6f 72 6d 61 6c 20 77 61 69 74 6f 6e 20  A normal waiton 
2610: 77 61 69 74 73 20 66 6f 72 20 74 68 65 20 70 72  waits for the pr
2620: 69 6f 72 20 74 65 73 74 73 20 74 6f 20 62 65 20  ior tests to be 
2630: 43 4f 4d 50 4c 45 54 45 44 20 0d 0a 23 20 61 6e  COMPLETED ..# an
2640: 64 20 50 41 53 53 2c 20 43 48 45 43 4b 20 6f 72  d PASS, CHECK or
2650: 20 57 41 49 56 45 44 0d 0a 77 61 69 74 6f 6e 20   WAIVED..waiton 
2660: 74 65 73 74 31 20 74 65 73 74 32 0d 0a 2d 2d 2d  test1 test2..---
2670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2680: 0d 0a 0d 0a 4d 6f 64 65 0d 0a 5e 5e 5e 5e 0d 0a  ....Mode..^^^^..
2690: 0d 0a 54 68 65 20 64 65 66 61 75 6c 74 20 28 69  ..The default (i
26a0: 2e 65 2e 20 69 66 20 6d 6f 64 65 20 69 73 20 6e  .e. if mode is n
26b0: 6f 74 20 73 70 65 63 69 66 69 65 64 29 20 69 73  ot specified) is
26c0: 20 6e 6f 72 6d 61 6c 2e 20 41 6c 6c 20 70 72 65   normal. All pre
26d0: 2d 64 65 70 65 6e 64 65 6e 74 20 74 65 73 74 73  -dependent tests
26e0: 0d 0a 6d 75 73 74 20 62 65 20 43 4f 4d 50 4c 45  ..must be COMPLE
26f0: 54 45 44 20 61 6e 64 20 50 41 53 53 2c 20 43 48  TED and PASS, CH
2700: 45 43 4b 20 6f 72 20 57 41 49 56 45 44 20 62 65  ECK or WAIVED be
2710: 66 6f 72 65 20 74 68 65 20 74 65 73 74 20 77 69  fore the test wi
2720: 6c 6c 20 73 74 61 72 74 0d 0a 0d 0a 2d 2d 2d 2d  ll start....----
2730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
2740: 0a 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d  .[requirements].
2750: 0a 6d 6f 64 65 20 20 20 6e 6f 72 6d 61 6c 0d 0a  .mode   normal..
2760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2770: 2d 2d 2d 0d 0a 0d 0a 54 68 65 20 74 6f 70 6c 65  ---....The tople
2780: 76 65 6c 20 6d 6f 64 65 20 72 65 71 75 69 72 65  vel mode require
2790: 73 20 6f 6e 6c 79 20 74 68 61 74 20 74 68 65 20  s only that the 
27a0: 70 72 69 6f 72 20 74 65 73 74 73 20 61 72 65 20  prior tests are 
27b0: 43 4f 4d 50 4c 45 54 45 44 2e 0d 0a 0d 0a 2d 2d  COMPLETED.....--
27c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
27d0: 2d 0d 0a 5b 72 65 71 75 69 72 65 6d 65 6e 74 73  -..[requirements
27e0: 5d 0d 0a 6d 6f 64 65 20 74 6f 70 6c 65 76 65 6c  ]..mode toplevel
27f0: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
2800: 2d 2d 2d 2d 2d 0d 0a 0d 0a 41 20 69 74 65 6d 20  -----....A item 
2810: 62 61 73 65 64 20 77 61 69 74 6f 6e 20 77 69 6c  based waiton wil
2820: 6c 20 73 74 61 72 74 20 69 74 65 6d 73 20 69 6e  l start items in
2830: 20 61 20 74 65 73 74 20 77 68 65 6e 20 74 68 65   a test when the
2840: 20 73 61 6d 65 2d 6e 61 6d 65 64 0d 0a 69 74 65   same-named..ite
2850: 6d 20 69 73 20 43 4f 4d 50 4c 45 54 45 44 20 61  m is COMPLETED a
2860: 6e 64 20 50 41 53 53 2c 20 43 48 45 43 4b 20 6f  nd PASS, CHECK o
2870: 72 20 57 41 49 56 45 44 20 69 6e 20 74 68 65 20  r WAIVED in the 
2880: 70 72 69 6f 72 20 74 65 73 74 2e 20 54 68 69 73  prior test. This
2890: 0d 0a 77 61 73 20 68 69 73 74 6f 72 69 63 61 6c  ..was historical
28a0: 6c 79 20 63 61 6c 6c 65 64 20 22 69 74 65 6d 77  ly called "itemw
28b0: 61 69 74 22 20 6d 6f 64 65 2e 20 54 68 65 20 74  ait" mode. The t
28c0: 65 72 6d 73 20 22 69 74 65 6d 77 61 69 74 22 20  erms "itemwait" 
28d0: 61 6e 64 0d 0a 22 69 74 65 6d 6d 61 74 63 68 22  and.."itemmatch"
28e0: 20 61 72 65 20 73 79 6e 6f 6e 79 6d 73 2e 0d 0a   are synonyms...
28f0: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
2900: 2d 2d 2d 2d 2d 0d 0a 5b 72 65 71 75 69 72 65 6d  -----..[requirem
2910: 65 6e 74 73 5d 0d 0a 6d 6f 64 65 20 69 74 65 6d  ents]..mode item
2920: 6d 61 74 63 68 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  match..---------
2930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 4f 76  ----------....Ov
2940: 65 72 72 69 64 69 6e 67 20 45 6e 76 69 72 6f 6d  erriding Envirom
2950: 65 6e 74 20 56 61 72 69 61 62 6c 65 73 0d 0a 7e  ent Variables..~
2960: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
2970: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 0d 0a  ~~~~~~~~~~~~~~..
2980: 0d 0a 4f 76 65 72 72 69 64 65 20 76 61 72 69 61  ..Override varia
2990: 62 6c 65 73 20 62 65 66 6f 72 65 20 73 74 61 72  bles before star
29a0: 74 69 6e 67 20 74 68 65 20 74 65 73 74 2e 20 43  ting the test. C
29b0: 61 6e 20 69 6e 63 6c 75 64 65 20 66 69 6c 65 73  an include files
29c0: 20 28 70 65 72 68 61 70 73 20 67 65 6e 65 72 61   (perhaps genera
29d0: 74 65 64 20 62 79 20 6d 65 67 61 74 65 73 74 20  ted by megatest 
29e0: 2d 65 6e 76 64 65 6c 74 61 20 6f 72 20 73 69 6d  -envdelta or sim
29f0: 69 6c 61 72 29 2e 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d  ilar).....------
2a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
2a10: 5b 70 72 65 2d 6c 61 75 6e 63 68 2d 65 6e 76 2d  [pre-launch-env-
2a20: 76 61 72 73 5d 0d 0a 56 41 52 31 20 76 61 6c 75  vars]..VAR1 valu
2a30: 65 31 0d 0a 0d 0a 23 20 47 65 74 20 73 6f 6d 65  e1....# Get some
2a40: 20 67 65 6e 65 72 61 74 65 64 20 73 65 74 74 69   generated setti
2a50: 6e 67 73 0d 0a 5b 69 6e 63 6c 75 64 65 20 2e 2e  ngs..[include ..
2a60: 2f 67 65 6e 65 72 61 74 65 64 2d 76 61 72 73 2e  /generated-vars.
2a70: 63 6f 6e 66 69 67 5d 0d 0a 0d 0a 23 20 55 73 65  config]....# Use
2a80: 20 74 68 69 73 20 74 72 69 63 6b 20 74 6f 20 75   this trick to u
2a90: 6e 73 65 74 20 76 61 72 69 61 62 6c 65 73 0d 0a  nset variables..
2aa0: 23 7b 73 63 68 65 6d 65 20 28 75 6e 73 65 74 65  #{scheme (unsete
2ab0: 6e 76 20 22 46 4f 4f 42 41 52 22 29 7d 0d 0a 2d  nv "FOOBAR")}..-
2ac0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2ad0: 2d 2d 2d 0d 0a 0d 0a 49 74 65 6d 6d 61 70 20 48  ---....Itemmap H
2ae0: 61 6e 64 6c 69 6e 67 0d 0a 7e 7e 7e 7e 7e 7e 7e  andling..~~~~~~~
2af0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 46 6f 72  ~~~~~~~~~....For
2b00: 20 63 61 73 65 73 20 77 65 72 65 20 74 68 65 20   cases were the 
2b10: 64 65 70 65 6e 64 65 6e 74 20 74 65 73 74 20 68  dependent test h
2b20: 61 73 20 61 20 73 69 6d 69 6c 61 72 20 62 75 74  as a similar but
2b30: 20 6e 6f 74 20 69 64 65 6e 74 69 63 61 6c 0d 0a   not identical..
2b40: 69 74 65 6d 70 61 74 68 20 74 6f 20 74 68 65 20  itempath to the 
2b50: 64 6f 77 6e 73 74 72 65 61 6d 20 74 65 73 74 20  downstream test 
2b60: 61 6e 20 69 74 65 6d 6d 61 70 20 63 61 6e 20 61  an itemmap can a
2b70: 6c 6c 6f 77 20 66 6f 72 20 69 74 65 6d 6d 61 74  llow for itemmat
2b80: 63 68 0d 0a 6d 6f 64 65 0d 0a 0d 0a 2e 65 78 61  ch..mode.....exa
2b90: 6d 70 6c 65 20 66 6f 72 20 72 65 6d 6f 76 69 6e  mple for removin
2ba0: 67 20 70 61 72 74 20 6f 66 20 69 74 65 6d 6d 61  g part of itemma
2bb0: 70 20 66 6f 72 20 77 61 69 74 6f 6e 20 74 65 73  p for waiton tes
2bc0: 74 20 28 65 67 3a 20 69 74 65 6d 20 2b 66 6f 6f  t (eg: item +foo
2bd0: 2d 78 2f 62 61 72 2b 20 64 65 70 65 6e 64 73 20  -x/bar+ depends 
2be0: 6f 6e 20 77 61 69 74 6f 6e 27 73 20 69 74 65 6d  on waiton's item
2bf0: 20 2b 79 2f 62 61 72 2b 29 0d 0a 2d 2d 2d 2d 2d   +y/bar+)..-----
2c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
2c10: 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d 0a  [requirements]..
2c20: 6d 6f 64 65 20 69 74 65 6d 77 61 69 74 0d 0a 23  mode itemwait..#
2c30: 20 69 74 65 6d 6d 61 70 20 3c 69 74 65 6d 20 70   itemmap <item p
2c40: 61 74 74 65 72 6e 20 66 6f 72 20 74 68 69 73 20  attern for this 
2c50: 74 65 73 74 3e 20 20 3c 69 74 65 6d 20 72 65 70  test>  <item rep
2c60: 6c 61 63 65 6d 65 6e 74 20 70 61 74 74 65 72 6e  lacement pattern
2c70: 20 66 6f 72 20 77 61 69 74 6f 6e 20 74 65 73 74   for waiton test
2c80: 3e 0d 0a 69 74 65 6d 6d 61 70 20 2e 2a 78 2f 20  >..itemmap .*x/ 
2c90: 79 2f 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  y/....----------
2ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 2e 65 78  ---------.....ex
2cb0: 61 6d 70 6c 65 20 66 6f 72 20 72 65 6d 6f 76 69  ample for removi
2cc0: 6e 67 20 70 61 72 74 20 6f 66 20 69 74 65 6d 6d  ng part of itemm
2cd0: 61 70 20 66 6f 72 20 77 61 69 74 6f 6e 20 74 65  ap for waiton te
2ce0: 73 74 20 28 65 67 3a 20 69 74 65 6d 20 2b 66 6f  st (eg: item +fo
2cf0: 6f 2f 62 61 72 2f 62 61 7a 2b 20 69 6e 20 74 68  o/bar/baz+ in th
2d00: 69 73 20 74 65 73 74 20 64 65 70 65 6e 64 73 20  is test depends 
2d10: 6f 6e 20 77 61 69 74 6f 6e 27 73 20 69 74 65 6d  on waiton's item
2d20: 20 2b 62 61 7a 2b 29 0d 0a 2d 2d 2d 2d 2d 2d 2d   +baz+)..-------
2d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a  ------------....
2d40: 23 20 23 23 20 70 61 74 74 65 72 6e 20 72 65 70  # ## pattern rep
2d50: 6c 61 63 65 6d 65 6e 74 20 6e 6f 74 65 73 0d 0a  lacement notes..
2d60: 23 0d 0a 23 20 23 23 20 45 78 61 6d 70 6c 65 0d  #..# ## Example.
2d70: 0a 23 20 23 23 20 52 65 6d 6f 76 65 20 65 76 65  .# ## Remove eve
2d80: 72 79 74 68 69 6e 67 20 75 70 20 74 6f 20 74 68  rything up to th
2d90: 65 20 6c 61 73 74 20 2f 0d 0a 5b 72 65 71 75 69  e last /..[requi
2da0: 72 65 6d 65 6e 74 73 5d 0d 0a 6d 6f 64 65 20 69  rements]..mode i
2db0: 74 65 6d 77 61 69 74 0d 0a 23 20 69 74 65 6d 6d  temwait..# itemm
2dc0: 61 70 20 3c 69 74 65 6d 20 70 61 74 74 65 72 6e  ap <item pattern
2dd0: 20 66 6f 72 20 74 68 69 73 20 74 65 73 74 3e 20   for this test> 
2de0: 3c 6e 6f 74 68 69 6e 67 20 68 65 72 65 20 69 6e  <nothing here in
2df0: 64 69 63 61 74 65 73 20 72 65 6d 6f 76 61 6c 3e  dicates removal>
2e00: 0d 0a 69 74 65 6d 6d 61 70 20 2e 2a 2f 0d 0a 2d  ..itemmap .*/..-
2e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2e20: 2d 2d 0d 0a 0d 0a 2e 65 78 61 6d 70 6c 65 20 72  --.....example r
2e30: 65 70 6c 61 63 69 6e 67 20 70 61 72 74 20 6f 66  eplacing part of
2e40: 20 69 74 65 6d 6d 61 70 20 66 6f 72 20 28 65 67   itemmap for (eg
2e50: 3a 20 69 74 65 6d 20 2b 66 6f 6f 2f 31 32 33 34  : item +foo/1234
2e60: 2b 20 77 69 6c 6c 20 69 6d 70 6c 79 20 77 61 69  + will imply wai
2e70: 74 6f 6e 27 73 20 69 74 65 6d 20 2b 62 61 72 2f  ton's item +bar/
2e80: 31 32 33 34 2b 29 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d  1234+)..--------
2e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23  -----------....#
2ea0: 0d 0a 23 20 23 23 20 45 78 61 6d 70 6c 65 0d 0a  ..# ## Example..
2eb0: 23 20 23 23 20 52 65 70 6c 61 63 65 20 66 6f 6f  # ## Replace foo
2ec0: 2f 20 77 69 74 68 20 62 61 72 2f 0d 0a 5b 72 65  / with bar/..[re
2ed0: 71 75 69 72 65 6d 65 6e 74 73 5d 0d 0a 6d 6f 64  quirements]..mod
2ee0: 65 20 69 74 65 6d 77 61 69 74 0d 0a 23 20 69 74  e itemwait..# it
2ef0: 65 6d 6d 61 70 20 3c 69 74 65 6d 20 70 61 74 74  emmap <item patt
2f00: 65 72 6e 20 66 6f 72 20 74 68 69 73 20 74 65 73  ern for this tes
2f10: 74 3e 20 20 3c 69 74 65 6d 20 72 65 70 6c 61 63  t>  <item replac
2f20: 65 6d 65 6e 74 20 70 61 74 74 65 72 6e 20 66 6f  ement pattern fo
2f30: 72 20 77 61 69 74 6f 6e 20 74 65 73 74 3e 0d 0a  r waiton test>..
2f40: 69 74 65 6d 6d 61 70 20 66 6f 6f 2f 20 62 61 72  itemmap foo/ bar
2f50: 2f 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /....-----------
2f60: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 2e 65 78 61  --------.....exa
2f70: 6d 70 6c 65 20 66 6f 72 20 62 61 63 6b 72 65 66  mple for backref
2f80: 65 72 65 6e 63 65 20 28 65 67 3a 20 69 74 65 6d  erence (eg: item
2f90: 20 2b 66 6f 6f 32 33 2f 74 68 75 64 2b 20 77 69   +foo23/thud+ wi
2fa0: 6c 6c 20 69 6d 70 6c 79 20 77 61 69 74 6f 6e 27  ll imply waiton'
2fb0: 73 20 69 74 65 6d 20 2b 6e 75 6d 2d 32 33 2f 62  s item +num-23/b
2fc0: 61 72 2f 74 68 75 64 2b 0d 0a 2d 2d 2d 2d 2d 2d  ar/thud+..------
2fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23  -------------..#
2fe0: 0d 0a 23 20 23 23 20 45 78 61 6d 70 6c 65 0d 0a  ..# ## Example..
2ff0: 23 20 23 23 20 63 61 6e 20 75 73 65 20 5c 7b 6e  # ## can use \{n
3000: 75 6d 62 65 72 7d 20 69 6e 20 72 65 70 6c 61 63  umber} in replac
3010: 65 6d 65 6e 74 20 70 61 74 74 65 72 6e 20 74 6f  ement pattern to
3020: 20 62 61 63 6b 72 65 66 65 72 65 6e 63 65 20 61   backreference a
3030: 20 28 63 61 70 74 75 72 65 29 20 66 72 6f 6d 20   (capture) from 
3040: 6d 61 74 63 68 69 6e 67 20 70 61 74 74 65 72 6e  matching pattern
3050: 20 73 69 6d 69 6c 61 72 20 74 6f 20 73 65 64 20   similar to sed 
3060: 6f 72 20 70 65 72 6c 0d 0a 5b 72 65 71 75 69 72  or perl..[requir
3070: 65 6d 65 6e 74 73 5d 0d 0a 6d 6f 64 65 20 69 74  ements]..mode it
3080: 65 6d 77 61 69 74 0d 0a 23 20 69 74 65 6d 6d 61  emwait..# itemma
3090: 70 20 3c 69 74 65 6d 20 70 61 74 74 65 72 6e 20  p <item pattern 
30a0: 66 6f 72 20 74 68 69 73 20 74 65 73 74 3e 20 20  for this test>  
30b0: 3c 69 74 65 6d 20 72 65 70 6c 61 63 65 6d 65 6e  <item replacemen
30c0: 74 20 70 61 74 74 65 72 6e 20 66 6f 72 20 77 61  t pattern for wa
30d0: 69 74 6f 6e 20 74 65 73 74 3e 0d 0a 69 74 65 6d  iton test>..item
30e0: 6d 61 70 20 66 6f 6f 28 5c 64 2b 29 2f 20 6e 75  map foo(\d+)/ nu
30f0: 6d 2d 5c 31 2f 62 61 72 2f 0d 0a 0d 0a 2d 2d 2d  m-\1/bar/....---
3100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3110: 0d 0a 0d 0a 2e 65 78 61 6d 70 6c 65 20 6d 75 6c  .....example mul
3120: 74 69 70 6c 65 20 69 74 65 6d 6d 61 70 73 0d 0a  tiple itemmaps..
3130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3140: 2d 2d 2d 0d 0a 0d 0a 23 20 6d 75 6c 74 69 2d 6c  ---....# multi-l
3150: 69 6e 65 3b 20 6d 61 74 63 68 65 73 20 61 72 65  ine; matches are
3160: 20 61 70 70 6c 69 65 64 20 69 6e 20 74 68 65 20   applied in the 
3170: 6c 69 73 74 65 64 20 6f 72 64 65 72 0d 0a 23 20  listed order..# 
3180: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 77 6f  The following wo
3190: 75 6c 64 20 6d 61 70 3a 0d 0a 23 20 20 20 61 31  uld map:..#   a1
31a0: 32 33 62 33 32 31 20 74 6f 20 62 33 32 31 66 6f  23b321 to b321fo
31b0: 6f 61 31 32 33 20 74 68 65 6e 20 74 6f 20 33 32  oa123 then to 32
31c0: 31 66 6f 6f 61 31 32 33 70 0d 0a 23 0d 0a 5b 72  1fooa123p..#..[r
31d0: 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d 0a 69 74  equirements]..it
31e0: 65 6d 6d 61 70 20 28 61 5c 64 2b 29 28 62 5c 64  emmap (a\d+)(b\d
31f0: 2b 29 20 5c 32 66 6f 6f 5c 31 0d 0a 20 20 62 28  +) \2foo\1..  b(
3200: 2e 2a 29 20 5c 31 70 0d 0a 2d 2d 2d 2d 2d 2d 2d  .*) \1p..-------
3210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a  ------------....
3220: 0d 0a 43 6f 6d 70 6c 65 78 20 6d 61 70 70 69 6e  ..Complex mappin
3230: 67 0d 0a 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  g..^^^^^^^^^^^^^
3240: 5e 5e 0d 0a 43 6f 6d 70 6c 65 78 20 6d 61 70 70  ^^..Complex mapp
3250: 69 6e 67 73 20 63 61 6e 20 62 65 20 68 61 6e 64  ings can be hand
3260: 6c 65 64 20 77 69 74 68 20 61 20 73 65 70 61 72  led with a separ
3270: 61 74 65 20 5b 69 74 65 6d 6d 61 70 5d 20 73 65  ate [itemmap] se
3280: 63 74 69 6f 6e 20 28 69 6e 73 74 65 61 64 20 69  ction (instead i
3290: 66 20 61 6e 20 69 74 65 6d 6d 61 70 20 6c 69 6e  f an itemmap lin
32a0: 65 20 69 6e 20 74 68 65 20 5b 72 65 71 75 69 72  e in the [requir
32b0: 65 6d 65 6e 74 73 5d 20 73 65 63 74 69 6f 6e 29  ements] section)
32c0: 0d 0a 0d 0a 45 61 63 68 20 6c 69 6e 65 20 69 6e  ....Each line in
32d0: 20 61 6e 20 69 74 65 6d 6d 61 70 20 73 65 63 74   an itemmap sect
32e0: 69 6f 6e 20 73 74 61 72 74 73 20 77 69 74 68 20  ion starts with 
32f0: 61 20 77 61 69 74 6f 6e 20 74 65 73 74 20 6e 61  a waiton test na
3300: 6d 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  me followed by a
3310: 6e 20 69 74 65 6d 6d 61 70 20 65 78 70 72 65 73  n itemmap expres
3320: 73 69 6f 6e 0d 0a 0d 0a 2e 65 67 3a 20 54 68 65  sion.....eg: The
3330: 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 61 75 73 65   following cause
3340: 73 20 77 61 69 74 6f 6e 20 74 65 73 74 20 41 20  s waiton test A 
3350: 69 74 65 6d 20 2b 62 61 72 2f 31 32 33 34 2b 20  item +bar/1234+ 
3360: 74 6f 20 72 75 6e 20 77 68 65 6e 20 6f 75 72 20  to run when our 
3370: 74 65 73 74 27 73 20 2b 66 6f 6f 2f 31 32 33 34  test's +foo/1234
3380: 2b 20 69 74 65 6d 20 69 73 20 72 65 71 75 65 73  + item is reques
3390: 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 63  ted as well as c
33a0: 61 75 73 69 6e 67 20 77 61 69 74 6f 6e 20 74 65  ausing waiton te
33b0: 73 74 20 42 27 73 20 2b 62 6c 61 68 2b 20 69 74  st B's +blah+ it
33c0: 65 6d 20 74 6f 20 72 75 6e 20 77 68 65 6e 20 6f  em to run when o
33d0: 75 72 20 74 65 73 74 27 73 20 2b 73 74 75 66 66  ur test's +stuff
33e0: 2f 62 6c 61 68 2b 20 69 74 65 6d 20 69 73 20 72  /blah+ item is r
33f0: 65 71 75 65 73 74 65 64 0d 0a 2d 2d 2d 2d 2d 2d  equested..------
3400: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 69 74 65 6d 6d  --------..[itemm
3410: 61 70 5d 0d 0a 41 20 66 6f 6f 2f 20 62 61 72 2f  ap]..A foo/ bar/
3420: 0d 0a 42 20 73 74 75 66 66 2f 0d 0a 2d 2d 2d 2d  ..B stuff/..----
3430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a  ----------......
3440: 43 6f 6d 70 6c 65 78 20 6d 61 70 70 69 6e 67 20  Complex mapping 
3450: 65 78 61 6d 70 6c 65 0d 0a 5e 5e 5e 5e 5e 5e 5e  example..^^^^^^^
3460: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
3470: 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 20 69 6d 61 67 65  ........// image
3480: 3a 3a 69 74 65 6d 6d 61 70 2e 70 6e 67 5b 5d 0d  ::itemmap.png[].
3490: 0a 69 6d 61 67 65 3a 3a 63 6f 6d 70 6c 65 78 2d  .image::complex-
34a0: 69 74 65 6d 6d 61 70 2e 70 6e 67 5b 5d 0d 0a 0d  itemmap.png[]...
34b0: 0a 0d 0a 57 65 20 61 63 63 6f 6d 70 6c 69 73 68  ...We accomplish
34c0: 20 74 68 69 73 20 62 79 20 63 6f 6e 66 69 67 75   this by configu
34d0: 72 69 6e 67 20 74 68 65 20 74 65 73 74 63 6f 6e  ring the testcon
34e0: 66 69 67 73 20 6f 66 20 6f 75 72 20 74 65 73 74  figs of our test
34f0: 73 20 43 20 44 20 61 6e 64 20 45 20 61 73 20 66  s C D and E as f
3500: 6f 6c 6c 6f 77 73 3a 0d 0a 0d 0a 2e 54 65 73 74  ollows:.....Test
3510: 63 6f 6e 66 69 67 20 66 6f 72 20 54 65 73 74 20  config for Test 
3520: 45 20 68 61 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  E has..---------
3530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b  -------------..[
3540: 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d 0a 77  requirements]..w
3550: 61 69 74 6f 6e 20 43 0d 0a 69 74 65 6d 6d 61 70  aiton C..itemmap
3560: 20 28 5c 64 2b 29 2f 72 65 73 20 5c 31 2f 62 62   (\d+)/res \1/bb
3570: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
3580: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 2e 54 65 73  --------.....Tes
3590: 74 63 6f 6e 66 69 67 20 66 6f 72 20 54 65 73 74  tconfig for Test
35a0: 20 44 20 68 61 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d   D has..--------
35b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
35c0: 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d 0a  [requirements]..
35d0: 77 61 69 74 6f 6e 20 43 0d 0a 69 74 65 6d 6d 61  waiton C..itemma
35e0: 70 20 28 5c 64 2b 29 2f 72 65 73 20 5c 31 2f 61  p (\d+)/res \1/a
35f0: 61 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  a..-------------
3600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 2e 54 65  ---------.....Te
3610: 73 74 63 6f 6e 66 69 67 20 66 6f 72 20 54 65 73  stconfig for Tes
3620: 74 20 43 20 68 61 73 0d 0a 2d 2d 2d 2d 2d 2d 2d  t C has..-------
3630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
3640: 0a 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d  .[requirements].
3650: 0a 77 61 69 74 6f 6e 20 41 20 42 0d 0a 0d 0a 5b  .waiton A B....[
3660: 69 74 65 6d 6d 61 70 5d 0d 0a 41 20 28 5c 64 2b  itemmap]..A (\d+
3670: 29 2f 61 61 20 61 61 2f 5c 31 0d 0a 42 20 28 5c  )/aa aa/\1..B (\
3680: 64 2b 29 2f 62 62 20 62 62 2f 5c 31 0d 0a 2d 2d  d+)/bb bb/\1..--
3690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36a0: 2d 2d 2d 2d 0d 0a 0d 0a 2e 54 65 73 74 63 6f 6e  ----.....Testcon
36b0: 66 69 67 73 20 66 6f 72 20 54 65 73 74 20 42 20  figs for Test B 
36c0: 61 6e 64 20 54 65 73 74 20 41 20 68 61 76 65 20  and Test A have 
36d0: 6e 6f 20 77 61 69 74 6f 6e 20 6f 72 20 69 74 65  no waiton or ite
36e0: 6d 6d 61 70 20 63 6f 6e 66 69 67 75 72 65 64 0d  mmap configured.
36f0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
3700: 2d 2d 2d 2d 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----..----------
3710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 2e 57 61  ---------.....Wa
3720: 6c 6b 20 74 68 72 6f 75 67 68 20 6f 6e 65 20 69  lk through one i
3730: 74 65 6d 20 2d 2d 20 77 65 20 77 61 6e 74 20 74  tem -- we want t
3740: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20  he following to 
3750: 68 61 70 70 65 6e 20 66 6f 72 20 74 65 73 74 70  happen for testp
3760: 61 74 74 20 2b 44 2f 31 2f 72 65 73 2b 20 28 73  att +D/1/res+ (s
3770: 65 65 20 62 6c 75 65 20 62 6f 78 65 73 20 69 6e  ee blue boxes in
3780: 20 63 6f 6d 70 6c 65 78 20 69 74 65 6d 6d 61 70   complex itemmap
3790: 69 6e 67 20 66 69 67 75 72 65 20 61 62 6f 76 65  ing figure above
37a0: 29 3a 0d 0a 0d 0a 2e 20 65 67 20 66 72 6f 6d 20  ):..... eg from 
37b0: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 2b 6d 65  command line +me
37c0: 67 61 74 65 73 74 20 2d 72 75 6e 20 2d 74 65 73  gatest -run -tes
37d0: 74 70 61 74 74 20 44 2f 31 2f 72 65 73 20 2d 74  tpatt D/1/res -t
37e0: 61 72 67 65 74 20 6d 79 74 61 72 67 65 74 20 2d  arget mytarget -
37f0: 72 75 6e 6e 61 6d 65 20 6d 79 72 75 6e 6e 61 6d  runname myrunnam
3800: 65 2b 0d 0a 2e 20 46 75 6c 6c 20 6c 69 73 74 20  e+... Full list 
3810: 74 6f 20 62 65 20 72 75 6e 20 69 73 20 6e 6f 77  to be run is now
3820: 3a 20 2b 44 2f 31 2f 72 65 73 2b 0d 0a 2e 20 54  : +D/1/res+... T
3830: 65 73 74 20 44 20 68 61 73 20 61 20 77 61 69 74  est D has a wait
3840: 6f 6e 20 2d 20 74 65 73 74 20 43 2e 20 20 54 65  on - test C.  Te
3850: 73 74 20 44 27 73 20 69 74 65 6d 6d 61 70 20 72  st D's itemmap r
3860: 75 6c 65 20 2b 69 74 65 6d 6d 61 70 20 28 5c 64  ule +itemmap (\d
3870: 26 70 6c 75 73 3b 29 2f 72 65 73 20 5c 31 2f 61  &plus;)/res \1/a
3880: 61 2b 20 2d 3e 20 20 63 61 75 73 65 73 20 2b 43  a+ ->  causes +C
3890: 2f 31 2f 61 61 2b 20 74 6f 20 72 75 6e 20 62 65  /1/aa+ to run be
38a0: 66 6f 72 65 20 2b 44 2f 31 2f 72 65 73 2b 0d 0a  fore +D/1/res+..
38b0: 2e 20 46 75 6c 6c 20 6c 69 73 74 20 74 6f 20 62  . Full list to b
38c0: 65 20 72 75 6e 20 69 73 20 6e 6f 77 3a 20 2b 44  e run is now: +D
38d0: 2f 31 2f 72 65 73 2b 2c 20 2b 43 2f 31 2f 61 61  /1/res+, +C/1/aa
38e0: 2b 0d 0a 2e 20 54 65 73 74 20 43 20 77 61 73 20  +... Test C was 
38f0: 61 20 77 61 69 74 6f 6e 20 2d 20 74 65 73 74 20  a waiton - test 
3900: 41 2e 20 54 65 73 74 20 43 27 73 20 72 75 6c 65  A. Test C's rule
3910: 20 2b 41 20 28 5c 64 26 70 6c 75 73 3b 29 2f 61   +A (\d&plus;)/a
3920: 61 20 61 61 2f 5c 31 2b 20 2d 3e 20 63 61 75 73  a aa/\1+ -> caus
3930: 65 73 20 2b 41 2f 61 61 2f 31 2b 20 74 6f 20 72  es +A/aa/1+ to r
3940: 75 6e 20 62 65 66 6f 72 65 20 2b 43 2f 31 2f 61  un before +C/1/a
3950: 61 2b 0d 0a 2e 20 46 75 6c 6c 20 6c 69 73 74 20  a+... Full list 
3960: 74 6f 20 62 65 20 72 75 6e 20 69 73 20 6e 6f 77  to be run is now
3970: 3a 20 2b 44 2f 31 2f 72 65 73 2b 2c 20 2b 43 2f  : +D/1/res+, +C/
3980: 31 2f 61 61 2b 2c 20 2b 41 2f 61 61 2f 31 2b 0d  1/aa+, +A/aa/1+.
3990: 0a 2e 20 54 65 73 74 20 41 20 68 61 73 20 6e 6f  .. Test A has no
39a0: 20 77 61 69 74 6f 6e 73 2e 20 20 41 6c 6c 20 77   waitons.  All w
39b0: 61 69 74 6f 6e 73 20 6f 66 20 61 6c 6c 20 74 65  aitons of all te
39c0: 73 74 73 20 69 6e 20 66 75 6c 6c 20 6c 69 73 74  sts in full list
39d0: 20 68 61 76 65 20 62 65 65 6e 20 70 72 6f 63 65   have been proce
39e0: 73 73 65 64 2e 20 20 46 75 6c 6c 20 6c 69 73 74  ssed.  Full list
39f0: 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 2e 0d 0a   is finalized...
3a00: 0d 0a 0d 0a 0d 0a 69 74 65 6d 73 74 61 62 6c 65  ......itemstable
3a10: 0d 0a 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 0d 0a 41 6e  ..^^^^^^^^^^..An
3a20: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20   alternative to 
3a30: 64 65 66 69 6e 69 6e 67 20 69 74 65 6d 73 20 69  defining items i
3a40: 73 20 74 68 65 20 69 74 65 6d 73 74 61 62 6c 65  s the itemstable
3a50: 20 73 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 20   section.  This 
3a60: 6c 65 74 73 20 79 6f 75 20 64 65 66 69 6e 65 20  lets you define 
3a70: 74 68 65 20 69 74 65 6d 70 61 74 68 20 69 6e 20  the itempath in 
3a80: 61 20 74 61 62 6c 65 20 66 6f 72 6d 61 74 20 72  a table format r
3a90: 61 74 68 65 72 20 74 68 61 6e 20 73 70 65 63 69  ather than speci
3aa0: 66 79 69 6e 67 20 63 6f 6d 70 6f 6e 65 6e 74 73  fying components
3ab0: 20 61 6e 64 20 72 65 6c 79 69 6e 67 20 6f 6e 20   and relying on 
3ac0: 67 65 74 74 69 6e 67 20 61 6c 6c 20 70 65 72 6d  getting all perm
3ad0: 75 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 6f 73  utations of thos
3ae0: 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 0d  e components....
3af0: 0a 0d 0a 0d 0a 0d 0a 0d 0a 44 79 6e 61 6d 69 63  .........Dynamic
3b00: 20 46 6c 6f 77 20 44 65 70 65 6e 64 65 6e 63 79   Flow Dependency
3b10: 20 54 72 65 65 0d 0a 5e 5e 5e 5e 5e 5e 5e 5e 5e   Tree..^^^^^^^^^
3b20: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
3b30: 5e 5e 5e 0d 0a 0d 0a 2e 41 75 74 6f 67 65 6e 65  ^^^.....Autogene
3b40: 72 61 74 69 6f 6e 20 77 61 69 74 6f 6e 20 6c 69  ration waiton li
3b50: 73 74 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 66  st for dynamic f
3b60: 6c 6f 77 20 64 65 70 65 6e 64 65 6e 63 79 20 74  low dependency t
3b70: 72 65 65 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  rees..----------
3b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 72 65 71 75  ---------..[requ
3b90: 69 72 65 6d 65 6e 74 73 5d 0d 0a 23 20 57 69 74  irements]..# Wit
3ba0: 68 20 61 20 74 6f 70 6c 65 76 65 6c 20 74 65 73  h a toplevel tes
3bb0: 74 20 79 6f 75 20 6d 61 79 20 77 69 73 68 20 74  t you may wish t
3bc0: 6f 20 67 65 6e 65 72 61 74 65 20 79 6f 75 72 20  o generate your 
3bd0: 6c 69 73 74 20 0d 0a 23 20 6f 66 20 74 65 73 74  list ..# of test
3be0: 73 20 74 6f 20 72 75 6e 20 64 79 6e 61 6d 69 63  s to run dynamic
3bf0: 61 6c 6c 79 0d 0a 23 0d 0a 77 61 69 74 6f 6e 20  ally..#..waiton 
3c00: 23 7b 73 68 65 6c 6c 20 67 65 74 2d 76 61 6c 69  #{shell get-vali
3c10: 64 2d 74 65 73 74 73 2d 74 6f 2d 72 75 6e 2e 73  d-tests-to-run.s
3c20: 68 7d 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  h}..------------
3c30: 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 52 75 6e 20 74  -------....Run t
3c40: 69 6d 65 20 6c 69 6d 69 74 0d 0a 5e 5e 5e 5e 5e  ime limit..^^^^^
3c50: 5e 5e 5e 5e 5e 5e 5e 5e 5e 0d 0a 0d 0a 2d 2d 2d  ^^^^^^^^^....---
3c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
3c70: 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 0d 0a  [requirements]..
3c80: 72 75 6e 74 69 6d 65 6c 69 6d 20 31 68 20 32 6d  runtimelim 1h 2m
3c90: 20 33 73 20 20 23 20 74 68 69 73 20 77 69 6c 6c   3s  # this will
3ca0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6b   automatically k
3cb0: 69 6c 6c 20 74 68 65 20 74 65 73 74 20 69 66 20  ill the test if 
3cc0: 69 74 20 72 75 6e 73 20 66 6f 72 20 6d 6f 72 65  it runs for more
3cd0: 20 74 68 61 6e 20 31 68 20 32 6d 20 61 6e 64 20   than 1h 2m and 
3ce0: 33 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  3s..------------
3cf0: 2d 2d 2d 2d 2d 0d 0a 0d 0a 53 6b 69 70 0d 0a 5e  -----....Skip..^
3d00: 5e 5e 5e 0d 0a 0d 0a 41 20 74 65 73 74 20 77 69  ^^^....A test wi
3d10: 74 68 20 61 20 73 6b 69 70 20 73 65 63 74 69 6f  th a skip sectio
3d20: 6e 20 77 69 6c 6c 20 63 6f 6e 64 69 74 69 6f 6e  n will condition
3d30: 61 6c 20 73 6b 69 70 20 72 75 6e 6e 69 6e 67 2e  al skip running.
3d40: 0d 0a 0d 0a 2e 53 6b 69 70 20 73 65 63 74 69 6f  .....Skip sectio
3d50: 6e 20 65 78 61 6d 70 6c 65 0d 0a 2d 2d 2d 2d 2d  n example..-----
3d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 73  ------------..[s
3d70: 6b 69 70 5d 0d 0a 70 72 65 76 72 75 6e 6e 69 6e  kip]..prevrunnin
3d80: 67 20 78 0d 0a 23 20 72 75 6e 64 65 6c 61 79 20  g x..# rundelay 
3d90: 33 30 6d 20 31 35 73 0d 0a 2d 2d 2d 2d 2d 2d 2d  30m 15s..-------
3da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 53 6b  ----------....Sk
3db0: 69 70 20 6f 6e 20 53 74 69 6c 6c 2d 72 75 6e 6e  ip on Still-runn
3dc0: 69 6e 67 20 54 65 73 74 73 0d 0a 5e 5e 5e 5e 5e  ing Tests..^^^^^
3dd0: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
3de0: 5e 5e 5e 5e 5e 5e 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d  ^^^^^^....------
3df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 4e  -----------..# N
3e00: 42 2f 2f 20 49 66 20 74 68 65 20 70 72 65 76 72  B// If the prevr
3e10: 75 6e 6e 69 6e 67 20 6c 69 6e 65 20 65 78 69 73  unning line exis
3e20: 74 73 20 77 69 74 68 20 2a 61 6e 79 2a 20 76 61  ts with *any* va
3e30: 6c 75 65 20 74 68 65 20 74 65 73 74 20 77 69 6c  lue the test wil
3e40: 6c 0d 0a 23 20 61 75 74 6f 6d 61 74 69 63 61 6c  l..# automatical
3e50: 6c 79 20 53 4b 49 50 20 69 66 20 74 68 65 20 73  ly SKIP if the s
3e60: 61 6d 65 2d 6e 61 6d 65 64 20 74 65 73 74 20 69  ame-named test i
3e70: 73 20 63 75 72 72 65 6e 74 6c 79 20 52 55 4e 4e  s currently RUNN
3e80: 49 4e 47 2e 20 54 68 65 0d 0a 23 20 22 78 22 20  ING. The..# "x" 
3e90: 63 61 6e 20 62 65 20 61 6e 79 20 73 74 72 69 6e  can be any strin
3ea0: 67 2e 20 43 6f 6d 6d 65 6e 74 20 6f 75 74 20 74  g. Comment out t
3eb0: 68 65 20 70 72 65 76 72 75 6e 6e 69 6e 67 20 6c  he prevrunning l
3ec0: 69 6e 65 20 74 6f 20 74 75 72 6e 20 6f 66 66 0d  ine to turn off.
3ed0: 0a 23 20 73 6b 69 70 2e 0d 0a 0d 0a 5b 73 6b 69  .# skip.....[ski
3ee0: 70 5d 0d 0a 70 72 65 76 72 75 6e 6e 69 6e 67 20  p]..prevrunning 
3ef0: 78 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  x..-------------
3f00: 2d 2d 2d 2d 0d 0a 0d 0a 53 6b 69 70 20 69 66 20  ----....Skip if 
3f10: 61 20 46 69 6c 65 20 45 78 69 73 74 73 0d 0a 5e  a File Exists..^
3f20: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
3f30: 5e 5e 5e 5e 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d  ^^^^....--------
3f40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 73 6b 69 70  ---------..[skip
3f50: 5d 0d 0a 66 69 6c 65 65 78 69 73 74 73 20 2f 70  ]..fileexists /p
3f60: 61 74 68 2f 74 6f 2f 61 2f 66 69 6c 65 20 23 20  ath/to/a/file # 
3f70: 73 6b 69 70 20 69 66 20 2f 70 61 74 68 2f 74 6f  skip if /path/to
3f80: 2f 61 2f 66 69 6c 65 20 65 78 69 73 74 73 0d 0a  /a/file exists..
3f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fa0: 2d 0d 0a 0d 0a 53 6b 69 70 20 69 66 20 74 65 73  -....Skip if tes
3fb0: 74 20 72 61 6e 20 6d 6f 72 65 20 72 65 63 65 6e  t ran more recen
3fc0: 74 6c 79 20 74 68 61 6e 20 73 70 65 63 69 66 69  tly than specifi
3fd0: 65 64 20 74 69 6d 65 0d 0a 5e 5e 5e 5e 5e 5e 5e  ed time..^^^^^^^
3fe0: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
3ff0: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
4000: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 0d 0a 0d 0a 2e  ^^^^^^^^^^^.....
4010: 53 6b 69 70 20 69 66 20 74 68 69 73 20 74 65 73  Skip if this tes
4020: 74 20 68 61 73 20 62 65 65 6e 20 72 75 6e 20 69  t has been run i
4030: 6e 20 74 68 65 20 70 61 73 74 20 66 69 66 74 65  n the past fifte
4040: 65 6e 20 6d 69 6e 75 74 65 73 20 61 6e 64 20 31  en minutes and 1
4050: 35 20 73 65 63 6f 6e 64 73 2e 0d 0a 2d 2d 2d 2d  5 seconds...----
4060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b  -------------..[
4070: 73 6b 69 70 5d 0d 0a 72 75 6e 64 65 6c 61 79 20  skip]..rundelay 
4080: 31 35 6d 20 31 35 73 0d 0a 2d 2d 2d 2d 2d 2d 2d  15m 15s..-------
4090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 44 69  ----------....Di
40a0: 73 6b 73 0d 0a 5e 5e 5e 5e 5e 0d 0a 0d 0a 41 20  sks..^^^^^....A 
40b0: 64 69 73 6b 73 20 73 65 63 74 69 6f 6e 20 69 6e  disks section in
40c0: 20 74 65 73 74 63 6f 6e 66 69 67 20 77 69 6c 6c   testconfig will
40d0: 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 64 69   override the di
40e0: 73 6b 73 20 73 65 63 74 69 6f 6e 20 69 6e 0d 0a  sks section in..
40f0: 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 2e  megatest.config.
4100: 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65   This can be use
4110: 64 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 64 69  d to allocate di
4120: 73 6b 73 20 6f 6e 20 61 20 70 65 72 2d 74 65 73  sks on a per-tes
4130: 74 20 6f 72 20 70 65 72 20 69 74 65 6d 0d 0a 62  t or per item..b
4140: 61 73 69 73 2e 0d 0a 0d 0a 43 6f 6e 74 72 6f 6c  asis.....Control
4150: 6c 65 64 20 77 61 69 76 65 72 20 70 72 6f 70 61  led waiver propa
4160: 67 61 74 69 6f 6e 0d 0a 5e 5e 5e 5e 5e 5e 5e 5e  gation..^^^^^^^^
4170: 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e 5e  ^^^^^^^^^^^^^^^^
4180: 5e 5e 5e 5e 5e 0d 0a 0d 0a 49 66 20 74 65 73 74  ^^^^^....If test
4190: 20 69 73 20 46 41 49 4c 20 61 6e 64 20 70 72 65   is FAIL and pre
41a0: 76 69 6f 75 73 20 74 65 73 74 20 69 6e 20 72 75  vious test in ru
41b0: 6e 20 77 69 74 68 20 73 61 6d 65 20 4d 54 5f 54  n with same MT_T
41c0: 41 52 47 45 54 20 69 73 20 57 41 49 56 45 44 20  ARGET is WAIVED 
41d0: 74 68 65 6e 20 61 70 70 6c 79 20 74 68 65 20 66  then apply the f
41e0: 6f 6c 6c 6f 77 69 6e 67 20 72 75 6c 65 73 20 66  ollowing rules f
41f0: 72 6f 6d 20 74 68 65 20 74 65 73 74 63 6f 6e 66  rom the testconf
4200: 69 67 3a 0d 0a 49 66 20 61 20 77 61 69 76 65 72  ig:..If a waiver
4210: 20 63 68 65 63 6b 20 69 73 20 73 70 65 63 69 66   check is specif
4220: 69 65 64 20 69 6e 20 74 68 65 20 74 65 73 74 63  ied in the testc
4230: 6f 6e 66 69 67 20 61 70 70 6c 79 20 74 68 65 20  onfig apply the 
4240: 63 68 65 63 6b 20 61 6e 64 20 69 66 20 69 74 20  check and if it 
4250: 70 61 73 73 65 73 20 74 68 65 6e 20 73 65 74 20  passes then set 
4260: 74 68 69 73 20 46 41 49 4c 20 74 6f 20 57 41 49  this FAIL to WAI
4270: 56 45 44 0d 0a 0d 0a 57 61 69 76 65 72 20 63 68  VED....Waiver ch
4280: 65 63 6b 20 68 61 73 20 74 77 6f 20 70 61 72 74  eck has two part
4290: 73 2c 20 31 29 20 61 20 6c 69 73 74 20 6f 66 20  s, 1) a list of 
42a0: 77 61 69 76 65 72 2c 20 72 75 6c 65 6e 61 6d 65  waiver, rulename
42b0: 2c 20 66 69 6c 65 70 61 74 74 65 72 6e 73 20 61  , filepatterns a
42c0: 6e 64 20 32 29 20 74 68 65 20 72 75 6c 65 6e 61  nd 2) the rulena
42d0: 6d 65 20 73 63 72 69 70 74 20 73 70 65 63 20 28  me script spec (
42e0: 6e 6f 74 65 20 74 68 61 74 20 22 64 69 66 66 22  note that "diff"
42f0: 20 61 6e 64 20 22 6c 6f 67 70 72 6f 22 20 61 72   and "logpro" ar
4300: 65 20 70 72 65 64 65 66 69 6e 65 64 29 0d 0a 0d  e predefined)...
4310: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
4320: 2d 2d 0d 0a 23 23 23 23 23 23 20 45 58 41 4d 50  --..###### EXAMP
4330: 4c 45 20 46 52 4f 4d 20 74 65 73 74 63 6f 6e 66  LE FROM testconf
4340: 69 67 20 23 23 23 23 23 23 23 23 23 0d 0a 23 20  ig #########..# 
4350: 6d 61 74 63 68 69 6e 67 20 66 69 6c 65 28 73 29  matching file(s)
4360: 20 77 69 6c 6c 20 62 65 20 64 69 66 66 27 64 20   will be diff'd 
4370: 77 69 74 68 20 70 72 65 76 69 6f 75 73 20 72 75  with previous ru
4380: 6e 20 61 6e 64 20 6c 6f 67 70 72 6f 20 61 70 70  n and logpro app
4390: 6c 69 65 64 0d 0a 23 20 69 66 20 50 41 53 53 20  lied..# if PASS 
43a0: 6f 72 20 57 41 52 4e 20 72 65 73 75 6c 74 20 66  or WARN result f
43b0: 72 6f 6d 20 6c 6f 67 70 72 6f 20 74 68 65 6e 20  rom logpro then 
43c0: 57 41 49 56 45 52 20 73 74 61 74 65 20 69 73 20  WAIVER state is 
43d0: 73 65 74 0d 0a 23 0d 0a 5b 77 61 69 76 65 72 73  set..#..[waivers
43e0: 5d 0d 0a 23 20 6c 6f 67 70 72 6f 5f 66 69 6c 65  ]..# logpro_file
43f0: 20 20 20 20 72 75 6c 65 6e 61 6d 65 20 20 20 20      rulename    
4400: 20 20 69 6e 70 75 74 5f 67 6c 6f 62 0d 0a 77 61    input_glob..wa
4410: 69 76 65 72 5f 31 20 20 20 20 20 20 20 20 20 6c  iver_1         l
4420: 6f 67 70 72 6f 20 20 20 20 20 20 20 20 6c 6f 6f  ogpro        loo
4430: 6b 69 74 74 6d 70 2e 6c 6f 67 0d 0a 0d 0a 5b 77  kittmp.log....[w
4440: 61 69 76 65 72 5f 72 75 6c 65 73 5d 0d 0a 0d 0a  aiver_rules]....
4450: 23 20 54 68 69 73 20 62 75 69 6c 74 69 6e 20 72  # This builtin r
4460: 75 6c 65 20 69 73 20 74 68 65 20 64 65 66 61 75  ule is the defau
4470: 6c 74 20 69 66 20 74 68 65 72 65 20 69 73 20 6e  lt if there is n
4480: 6f 20 3c 77 61 69 76 65 72 6e 61 6d 65 3e 2e 6c  o <waivername>.l
4490: 6f 67 70 72 6f 20 66 69 6c 65 0d 0a 23 20 64 69  ogpro file..# di
44a0: 66 66 20 20 20 64 69 66 66 20 25 66 69 6c 65 31  ff   diff %file1
44b0: 25 20 25 66 69 6c 65 32 25 0d 0a 0d 0a 23 20 54  % %file2%....# T
44c0: 68 69 73 20 62 75 69 6c 74 69 6e 20 72 75 6c 65  his builtin rule
44d0: 20 69 73 20 61 70 70 6c 69 65 64 20 69 66 20 61   is applied if a
44e0: 20 3c 77 61 69 76 65 72 6e 61 6d 65 3e 2e 6c 6f   <waivername>.lo
44f0: 67 70 72 6f 20 66 69 6c 65 20 65 78 69 73 74 73  gpro file exists
4500: 0d 0a 23 20 6c 6f 67 70 72 6f 20 64 69 66 66 20  ..# logpro diff 
4510: 25 66 69 6c 65 31 25 20 25 66 69 6c 65 32 25 20  %file1% %file2% 
4520: 7c 20 6c 6f 67 70 72 6f 20 25 77 61 69 76 65 72  | logpro %waiver
4530: 6e 61 6d 65 25 2e 6c 6f 67 70 72 6f 20 25 77 61  name%.logpro %wa
4540: 69 76 65 72 6e 61 6d 65 25 2e 68 74 6d 6c 0d 0a  ivername%.html..
4550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4560: 2d 0d 0a 0d 0a 45 7a 73 74 65 70 73 0d 0a 7e 7e  -....Ezsteps..~~
4570: 7e 7e 7e 7e 7e 0d 0a 0d 0a 2e 45 78 61 6d 70 6c  ~~~~~.....Exampl
4580: 65 20 65 7a 73 74 65 70 73 20 77 69 74 68 20 6c  e ezsteps with l
4590: 6f 67 70 72 6f 20 72 75 6c 65 73 0d 0a 2d 2d 2d  ogpro rules..---
45a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
45b0: 5b 65 7a 73 74 65 70 73 5d 0d 0a 6c 6f 6f 6b 69  [ezsteps]..looki
45c0: 74 74 6d 70 20 20 20 6c 73 20 2f 74 6d 70 0d 0a  ttmp   ls /tmp..
45d0: 0d 0a 5b 6c 6f 67 70 72 6f 5d 0d 0a 6c 6f 6f 6b  ..[logpro]..look
45e0: 69 74 74 6d 70 20 3b 3b 20 4e 6f 74 65 3a 20 63  ittmp ;; Note: c
45f0: 6f 6e 66 69 67 20 66 69 6c 65 20 66 6f 72 6d 61  onfig file forma
4600: 74 20 73 75 70 70 6f 72 74 73 20 6d 75 6c 74 69  t supports multi
4610: 2d 6c 69 6e 65 20 65 6e 74 72 69 65 73 20 77 68  -line entries wh
4620: 65 72 65 20 6c 65 61 64 69 6e 67 20 77 68 69 74  ere leading whit
4630: 65 73 70 61 63 65 20 69 73 20 72 65 6d 6f 76 65  espace is remove
4640: 64 20 66 72 6f 6d 20 65 61 63 68 20 6c 69 6e 65  d from each line
4650: 0d 0a 20 20 3b 3b 20 20 20 20 20 61 20 62 6c 61  ..  ;;     a bla
4660: 6e 6b 20 6c 69 6e 65 20 69 6e 64 69 63 61 74 65  nk line indicate
4670: 73 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  s the end of the
4680: 20 62 6c 6f 63 6b 20 6f 66 20 74 65 78 74 20 0d   block of text .
4690: 0a 20 20 28 65 78 70 65 63 74 3a 72 65 71 75 69  .  (expect:requi
46a0: 72 65 64 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42  red in "LogFileB
46b0: 6f 64 79 22 20 3e 20 30 20 22 41 20 66 69 6c 65  ody" > 0 "A file
46c0: 20 6e 61 6d 65 20 74 68 61 74 20 73 68 6f 75 6c   name that shoul
46d0: 64 20 6e 65 76 65 72 20 65 78 69 73 74 21 22 20  d never exist!" 
46e0: 23 2f 54 68 69 73 20 69 73 20 61 20 61 77 66 75  #/This is a awfu
46f0: 6c 6c 79 20 73 74 75 70 69 64 20 66 69 6c 65 20  lly stupid file 
4700: 6e 61 6d 65 20 74 68 61 74 20 73 68 6f 75 6c 64  name that should
4710: 20 6e 65 76 65 72 20 62 65 20 66 6f 75 6e 64 20   never be found 
4720: 69 6e 20 74 68 65 20 74 65 6d 70 20 64 69 72 2f  in the temp dir/
4730: 29 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  )....-----------
4740: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 54 6f 20 74 72 61  ------....To tra
4750: 6e 73 66 65 72 20 74 68 65 20 65 6e 76 69 72 6f  nsfer the enviro
4760: 6e 6d 65 6e 74 20 74 6f 20 74 68 65 20 6e 65 78  nment to the nex
4770: 74 20 73 74 65 70 20 79 6f 75 20 63 61 6e 20 64  t step you can d
4780: 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a  o the following:
4790: 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....------------
47a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
47b0: 0d 0a 24 4d 54 5f 4d 45 47 41 54 45 53 54 20 2d  ..$MT_MEGATEST -
47c0: 65 6e 76 32 66 69 6c 65 20 2e 65 7a 73 74 65 70  env2file .ezstep
47d0: 73 2f 24 7b 73 74 65 70 6e 61 6d 65 7d 09 20 20  s/${stepname}.  
47e0: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
47f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
4800: 0d 0a 54 72 69 67 67 65 72 73 0d 0a 7e 7e 7e 7e  ..Triggers..~~~~
4810: 7e 7e 7e 7e 0d 0a 0d 0a 49 6e 20 79 6f 75 72 20  ~~~~....In your 
4820: 74 65 73 74 63 6f 6e 66 69 67 20 6f 72 20 6d 65  testconfig or me
4830: 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 20 74 72  gatest.config tr
4840: 69 67 67 65 72 73 20 63 61 6e 20 62 65 20 73 70  iggers can be sp
4850: 65 63 69 66 69 65 64 20 0d 0a 0d 0a 2d 2d 2d 2d  ecified ....----
4860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b  -------------..[
4870: 74 72 69 67 67 65 72 73 5d 0d 0a 0d 0a 23 20 43  triggers]....# C
4880: 61 6c 6c 20 73 63 72 69 70 74 20 72 75 6e 6e 69  all script runni
4890: 6e 67 2e 73 68 20 77 68 65 6e 20 74 65 73 74 20  ng.sh when test 
48a0: 67 6f 65 73 20 74 6f 20 73 74 61 74 65 3d 52 55  goes to state=RU
48b0: 4e 4e 49 4e 47 2c 20 73 74 61 74 75 73 3d 50 41  NNING, status=PA
48c0: 53 53 0d 0a 52 55 4e 4e 49 4e 47 2f 50 41 53 53  SS..RUNNING/PASS
48d0: 20 72 75 6e 6e 69 6e 67 2e 73 68 0d 0a 0d 0a 23   running.sh....#
48e0: 20 43 61 6c 6c 20 73 63 72 69 70 74 20 72 75 6e   Call script run
48f0: 6e 69 6e 67 2e 73 68 20 61 6e 79 20 74 69 6d 65  ning.sh any time
4900: 20 73 74 61 74 65 20 67 6f 65 73 20 74 6f 20 52   state goes to R
4910: 55 4e 4e 49 4e 47 0d 0a 52 55 4e 4e 49 4e 47 2f  UNNING..RUNNING/
4920: 20 72 75 6e 6e 69 6e 67 2e 73 68 0d 0a 0d 0a 23   running.sh....#
4930: 20 43 61 6c 6c 20 73 63 72 69 70 74 20 6f 6e 70   Call script onp
4940: 61 73 73 2e 73 68 20 61 6e 79 20 74 69 6d 65 20  ass.sh any time 
4950: 73 74 61 74 75 73 20 67 6f 65 73 20 74 6f 20 50  status goes to P
4960: 41 53 53 0d 0a 50 41 53 53 2f 20 6f 6e 70 61 73  ASS..PASS/ onpas
4970: 73 2e 73 68 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  s.sh..----------
4980: 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 53 63 72 69 70  -------....Scrip
4990: 74 73 20 63 61 6c 6c 65 64 20 77 69 6c 6c 20 68  ts called will h
49a0: 61 76 65 3b 20 74 65 73 74 2d 69 64 20 74 65 73  ave; test-id tes
49b0: 74 2d 72 75 6e 64 69 72 20 74 72 69 67 67 65 72  t-rundir trigger
49c0: 20 74 65 73 74 2d 6e 61 6d 65 20 69 74 65 6d 2d   test-name item-
49d0: 70 61 74 68 20 73 74 61 74 65 20 73 74 61 74 75  path state statu
49e0: 73 20 65 76 65 6e 74 2d 74 69 6d 65 2c 20 61 64  s event-time, ad
49f0: 64 65 64 20 74 6f 20 74 68 65 20 63 6f 6d 6d 61  ded to the comma
4a00: 6e 64 6c 69 6e 65 2e 0d 0a 0d 0a 48 49 4e 54 0d  ndline.....HINT.
4a10: 0a 0d 0a 54 6f 20 73 74 61 72 74 20 61 6e 20 78  ...To start an x
4a20: 74 65 72 6d 20 28 75 73 65 66 75 6c 20 66 6f 72  term (useful for
4a30: 20 64 65 62 75 67 67 69 6e 67 29 2c 20 75 73 65   debugging), use
4a40: 20 61 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20   a command line 
4a50: 6c 69 6b 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69  like the followi
4a60: 6e 67 3a 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  ng:....---------
4a70: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 74 72 69 67 67  --------..[trigg
4a80: 65 72 73 5d 0d 0a 43 4f 4d 50 4c 45 54 45 44 2f  ers]..COMPLETED/
4a90: 20 78 74 65 72 6d 20 2d 65 20 62 61 73 68 20 2d   xterm -e bash -
4aa0: 73 20 2d 2d 20 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d  s -- ..---------
4ab0: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 4e 4f 54 45  --------....NOTE
4ac0: 3a 20 54 68 65 72 65 20 69 73 20 61 20 74 72 61  : There is a tra
4ad0: 69 6c 69 6e 67 20 73 70 61 63 65 20 61 66 74 65  iling space afte
4ae0: 72 20 74 68 65 20 2d 2d 0d 0a 0d 0a 54 68 65 72  r the --....Ther
4af0: 65 20 61 72 65 20 61 20 6e 75 6d 62 65 72 20 6f  e are a number o
4b00: 66 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  f environment va
4b10: 72 69 61 62 6c 65 73 20 61 76 61 69 6c 61 62 6c  riables availabl
4b20: 65 20 74 6f 20 74 68 65 20 74 72 69 67 67 65 72  e to the trigger
4b30: 20 73 63 72 69 70 74 0d 0a 62 75 74 20 73 69 6e   script..but sin
4b40: 63 65 20 74 72 69 67 67 65 72 73 20 63 61 6e 20  ce triggers can 
4b50: 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 76 61 72  be called in var
4b60: 69 6f 75 73 20 63 6f 6e 74 65 78 74 73 20 6e 6f  ious contexts no
4b70: 74 20 61 6c 6c 20 76 61 72 69 61 62 6c 65 73 20  t all variables 
4b80: 61 72 65 0d 0a 61 76 61 69 6c 61 62 6c 65 20 61  are..available a
4b90: 74 20 61 6c 6c 20 74 69 6d 65 73 2e 20 54 68 65  t all times. The
4ba0: 20 74 72 69 67 67 65 72 20 73 63 72 69 70 74 20   trigger script 
4bb0: 73 68 6f 75 6c 64 20 63 68 65 63 6b 20 66 6f 72  should check for
4bc0: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 61 6e   the variable an
4bd0: 64 0d 0a 66 61 69 6c 20 67 72 61 63 65 66 75 6c  d..fail graceful
4be0: 6c 79 20 69 66 20 69 74 20 64 6f 65 73 6e 27 74  ly if it doesn't
4bf0: 20 65 78 69 73 74 2e 0d 0a 0d 0a 2e 45 6e 76 69   exist......Envi
4c00: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
4c10: 73 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65  s visible to the
4c20: 20 74 72 69 67 67 65 72 20 73 63 72 69 70 74 0d   trigger script.
4c30: 0a 5b 77 69 64 74 68 3d 22 39 30 25 22 2c 63 6f  .[width="90%",co
4c40: 6c 73 3d 22 5e 2c 32 6d 22 2c 66 72 61 6d 65 3d  ls="^,2m",frame=
4c50: 22 74 6f 70 62 6f 74 22 2c 6f 70 74 69 6f 6e 73  "topbot",options
4c60: 3d 22 68 65 61 64 65 72 22 5d 0d 0a 7c 3d 3d 3d  ="header"]..|===
4c70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4c80: 3d 3d 3d 0d 0a 7c 56 61 72 69 61 62 6c 65 20 20  ===..|Variable  
4c90: 20 20 20 20 20 20 20 20 20 20 20 7c 20 50 75 72             | Pur
4ca0: 70 6f 73 65 20 20 20 20 20 20 20 20 20 20 20 20  pose            
4cb0: 0d 0a 7c 20 4d 54 5f 54 45 53 54 5f 52 55 4e 5f  ..| MT_TEST_RUN_
4cc0: 44 49 52 20 20 20 20 20 7c 20 54 68 65 20 64 69  DIR     | The di
4cd0: 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 4d 65  rectory where Me
4ce0: 67 61 74 65 73 74 20 72 61 6e 20 74 68 69 73 20  gatest ran this 
4cf0: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
4d00: 20 20 20 20 20 20 20 0d 0a 7c 20 4d 54 5f 43 4d         ..| MT_CM
4d10: 44 49 4e 46 4f 20 20 20 20 20 20 20 20 20 20 7c  DINFO          |
4d20: 20 45 6e 63 6f 64 65 64 20 63 6f 6d 6d 61 6e 64   Encoded command
4d30: 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 74 65   data for the te
4d40: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
4d50: 20 20 20 20 20 0d 0a 7c 20 4d 54 5f 44 45 42 55       ..| MT_DEBU
4d60: 47 5f 4d 4f 44 45 20 20 20 20 20 20 20 7c 20 55  G_MODE       | U
4d70: 73 65 64 20 74 6f 20 70 61 73 73 20 74 68 65 20  sed to pass the 
4d80: 64 65 62 75 67 20 6d 6f 64 65 20 74 6f 20 6e 65  debug mode to ne
4d90: 73 74 65 64 20 63 61 6c 6c 73 20 74 6f 20 4d 65  sted calls to Me
4da0: 67 61 74 65 73 74 20 20 20 20 20 20 20 20 20 20  gatest          
4db0: 20 20 20 20 20 20 20 20 20 0d 0a 7c 20 4d 54 5f           ..| MT_
4dc0: 52 55 4e 5f 41 52 45 41 5f 48 4f 4d 45 20 20 20  RUN_AREA_HOME   
4dd0: 20 7c 20 4d 65 67 61 74 65 73 74 20 68 6f 6d 65   | Megatest home
4de0: 20 61 72 65 61 20 0d 0a 7c 20 4d 54 5f 54 45 53   area ..| MT_TES
4df0: 54 53 55 49 54 45 4e 41 4d 45 20 20 20 20 7c 20  TSUITENAME    | 
4e00: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 69 73  The name of this
4e10: 20 74 65 73 74 73 75 69 74 65 20 6f 72 20 61 72   testsuite or ar
4e20: 65 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ea              
4e30: 20 20 20 20 20 0d 0a 7c 20 4d 54 5f 54 45 53 54       ..| MT_TEST
4e40: 5f 4e 41 4d 45 20 20 20 20 20 20 20 20 7c 20 54  _NAME        | T
4e50: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 69 73 20  he name of this 
4e60: 74 65 73 74 0d 0a 7c 20 4d 54 5f 49 54 45 4d 5f  test..| MT_ITEM_
4e70: 49 4e 46 4f 20 20 20 20 20 20 20 20 7c 20 54 68  INFO        | Th
4e80: 65 20 76 61 72 69 61 62 6c 65 20 61 6e 64 20 76  e variable and v
4e90: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 74 65  alues for the te
4ea0: 73 74 20 69 74 65 6d 0d 0a 7c 20 4d 54 5f 4d 45  st item..| MT_ME
4eb0: 47 41 54 45 53 54 20 20 20 20 20 20 20 20 20 7c  GATEST         |
4ec0: 20 57 68 69 63 68 20 4d 65 67 61 74 65 73 74 20   Which Megatest 
4ed0: 62 69 6e 61 72 79 20 69 73 20 62 65 69 6e 67 20  binary is being 
4ee0: 75 73 65 64 20 62 79 20 74 68 69 73 20 61 72 65  used by this are
4ef0: 61 0d 0a 7c 20 4d 54 5f 54 41 52 47 45 54 20 20  a..| MT_TARGET  
4f00: 20 20 20 20 20 20 20 20 20 7c 20 54 68 65 20 74           | The t
4f10: 61 72 67 65 74 20 76 61 72 69 61 62 6c 65 20 76  arget variable v
4f20: 61 6c 75 65 73 2c 20 73 65 70 61 72 61 74 65 64  alues, separated
4f30: 20 62 79 20 27 2f 27 0d 0a 7c 20 4d 54 5f 4c 49   by '/'..| MT_LI
4f40: 4e 4b 54 52 45 45 20 20 20 20 20 20 20 20 20 7c  NKTREE         |
4f50: 20 54 68 65 20 62 61 73 65 20 6f 66 20 74 68 65   The base of the
4f60: 20 6c 69 6e 6b 20 74 72 65 65 20 77 68 65 72 65   link tree where
4f70: 20 61 6c 6c 20 72 75 6e 20 74 65 73 74 73 20 63   all run tests c
4f80: 61 6e 20 62 65 20 66 6f 75 6e 64 0d 0a 7c 20 4d  an be found..| M
4f90: 54 5f 49 54 45 4d 50 41 54 48 20 20 20 20 20 20  T_ITEMPATH      
4fa0: 20 20 20 7c 20 54 68 65 20 76 61 6c 75 65 73 20     | The values 
4fb0: 6f 66 20 74 68 65 20 69 74 65 6d 20 70 61 74 68  of the item path
4fc0: 20 76 61 72 69 61 62 6c 65 73 2c 20 73 65 70 61   variables, sepa
4fd0: 72 61 74 65 64 20 62 79 20 27 2f 27 0d 0a 7c 20  rated by '/'..| 
4fe0: 4d 54 5f 52 55 4e 4e 41 4d 45 20 20 20 20 20 20  MT_RUNNAME      
4ff0: 20 20 20 20 7c 20 54 68 65 20 6e 61 6d 65 20 6f      | The name o
5000: 66 20 74 68 65 20 72 75 6e 0d 0a 7c 3d 3d 3d 3d  f the run..|====
5010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5020: 3d 3d 0d 0a 0d 0a 0d 0a 4f 76 65 72 72 69 64 65  ==......Override
5030: 20 74 68 65 20 54 6f 70 6c 65 76 65 6c 20 48 54   the Toplevel HT
5040: 4d 4c 20 46 69 6c 65 0d 0a 7e 7e 7e 7e 7e 7e 7e  ML File..~~~~~~~
5050: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  ~~~~~~~~~~~~~~~~
5060: 7e 7e 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 4d 65 67 61  ~~~~~~~~....Mega
5070: 74 65 73 74 20 67 65 6e 65 72 61 74 65 73 20 61  test generates a
5080: 20 73 69 6d 70 6c 65 20 68 74 6d 6c 20 66 69 6c   simple html fil
5090: 65 20 73 75 6d 6d 61 72 79 20 66 6f 72 20 74 6f  e summary for to
50a0: 70 20 6c 65 76 65 6c 20 74 65 73 74 73 20 6f 66  p level tests of
50b0: 0d 0a 69 74 65 72 61 74 65 64 20 74 65 73 74 73  ..iterated tests
50c0: 2e 20 54 68 65 20 67 65 6e 65 72 61 74 69 6f 6e  . The generation
50d0: 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
50e0: 65 6e 2e 20 4e 4f 54 45 3a 20 74 68 65 20 6f 75  en. NOTE: the ou
50f0: 74 70 75 74 20 6f 66 0d 0a 74 68 65 20 73 63 72  tput of..the scr
5100: 69 70 74 20 69 73 20 63 61 70 74 75 72 65 64 20  ipt is captured 
5110: 66 72 6f 6d 20 73 74 64 6f 75 74 20 74 6f 20 63  from stdout to c
5120: 72 65 61 74 65 20 74 68 65 20 68 74 6d 6c 2e 0d  reate the html..
5130: 0a 0d 0a 0d 0a 2e 46 6f 72 20 74 65 73 74 20 22  ......For test "
5140: 72 75 6e 66 69 72 73 74 22 20 6f 76 65 72 72 69  runfirst" overri
5150: 64 65 20 74 68 65 20 74 6f 70 6c 65 76 65 6c 20  de the toplevel 
5160: 67 65 6e 65 72 61 74 69 6f 6e 20 77 69 74 68 20  generation with 
5170: 61 20 73 63 72 69 70 74 20 22 6d 79 73 75 6d 6d  a script "mysumm
5180: 61 72 79 2e 73 68 22 0d 0a 2d 2d 2d 2d 2d 2d 2d  ary.sh"..-------
5190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 4f 76  ----------..# Ov
51a0: 65 72 72 69 64 65 20 74 68 65 20 72 6f 6c 6c 75  erride the rollu
51b0: 70 20 66 6f 72 20 73 70 65 63 69 66 69 63 20 74  p for specific t
51c0: 65 73 74 73 0d 0a 5b 74 65 73 74 72 6f 6c 6c 75  ests..[testrollu
51d0: 70 5d 0d 0a 72 75 6e 66 69 72 73 74 20 6d 79 73  p]..runfirst mys
51e0: 75 6d 6d 61 72 79 2e 73 68 0d 0a 2d 2d 2d 2d 2d  ummary.sh..-----
51f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a  ------------....
5200: 41 72 63 68 69 76 69 6e 67 20 53 65 74 75 70 0d  Archiving Setup.
5210: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .---------------
5220: 0d 0a 0d 0a 49 6e 20 6d 65 67 61 74 65 73 74 2e  ....In megatest.
5230: 63 6f 6e 66 69 67 20 61 64 64 20 74 68 65 20 66  config add the f
5240: 6f 6c 6c 6f 77 69 6e 67 20 73 65 63 74 69 6f 6e  ollowing section
5250: 73 3a 0d 0a 0d 0a 2e 6d 65 67 61 74 65 73 74 2e  s:.....megatest.
5260: 63 6f 6e 66 69 67 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d  config..--------
5270: 2d 2d 2d 2d 2d 2d 0d 0a 5b 61 72 63 68 69 76 65  ------..[archive
5280: 5d 0d 0a 23 20 77 68 65 72 65 20 74 6f 20 67 65  ]..# where to ge
5290: 74 20 62 75 70 20 65 78 65 63 75 74 61 62 6c 65  t bup executable
52a0: 0d 0a 23 20 62 75 70 20 2f 70 61 74 68 2f 74 6f  ..# bup /path/to
52b0: 2f 62 75 70 0d 0a 0d 0a 5b 61 72 63 68 69 76 65  /bup....[archive
52c0: 2d 64 69 73 6b 73 5d 0d 0a 0d 0a 23 20 41 72 63  -disks]....# Arc
52d0: 68 69 76 65 73 20 77 69 6c 6c 20 62 65 20 6f 72  hives will be or
52e0: 67 61 6e 69 73 65 64 20 75 6e 64 65 72 20 74 68  ganised under th
52f0: 65 73 65 20 70 61 74 68 73 20 6c 69 6b 65 20 74  ese paths like t
5300: 68 69 73 3a 0d 0a 23 20 20 3c 74 65 73 74 73 75  his:..#  <testsu
5310: 69 74 65 3e 2f 3c 63 72 65 61 74 69 6f 6e 64 61  ite>/<creationda
5320: 74 65 3e 0d 0a 23 20 57 69 74 68 69 6e 20 74 68  te>..# Within th
5330: 65 20 61 72 63 68 69 76 65 20 74 68 65 20 64 61  e archive the da
5340: 74 61 20 69 73 20 73 74 72 75 63 74 75 72 65 64  ta is structured
5350: 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 23 20 20   like this:..#  
5360: 3c 74 61 72 67 65 74 3e 2f 3c 72 75 6e 6e 61 6d  <target>/<runnam
5370: 65 3e 2f 3c 74 65 73 74 3e 2f 0d 0a 61 72 63 68  e>/<test>/..arch
5380: 69 76 65 30 20 2f 6d 66 73 2f 6d 79 61 72 63 68  ive0 /mfs/myarch
5390: 69 76 65 2d 64 61 74 61 2f 61 64 69 73 6b 31 0d  ive-data/adisk1.
53a0: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  .--------------.
53b0: 0a 0d 0a 48 61 6e 64 6c 69 6e 67 20 45 6e 76 69  ...Handling Envi
53c0: 72 6f 6e 6d 65 6e 74 20 56 61 72 69 61 62 6c 65  ronment Variable
53d0: 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  s..-------------
53e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
53f0: 2d 0d 0a 0d 0a 49 74 20 69 73 20 6f 66 74 65 6e  -....It is often
5400: 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 63 61   necessary to ca
5410: 70 74 75 72 65 20 61 6e 64 20 6f 72 20 6d 61 6e  pture and or man
5420: 69 70 75 6c 61 74 65 20 65 6e 76 69 72 6f 6e 6d  ipulate environm
5430: 65 6e 74 0d 0a 76 61 72 69 61 62 6c 65 73 2e 20  ent..variables. 
5440: 4d 65 67 61 74 65 73 74 20 68 61 73 20 73 6f 6d  Megatest has som
5450: 65 20 66 61 63 69 6c 69 74 69 65 73 20 62 75 69  e facilities bui
5460: 6c 74 20 69 6e 20 74 6f 20 68 65 6c 70 2e 0d 0a  lt in to help...
5470: 0d 0a 43 61 70 74 75 72 65 20 76 61 72 69 61 62  ..Capture variab
5480: 6c 65 73 0d 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e  les..~~~~~~~~~~~
5490: 7e 7e 7e 7e 7e 7e 0d 0a 0d 0a 2e 43 6f 6d 6d 61  ~~~~~~.....Comma
54a0: 6e 64 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  nds..-----------
54b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
54c0: 2d 2d 2d 0d 0a 23 20 63 61 70 74 75 72 65 20 74  ---..# capture t
54d0: 68 65 20 63 75 72 72 65 6e 74 20 65 6e 76 69 72  he current envir
54e0: 6f 6d 65 6e 74 20 69 6e 74 6f 20 61 20 64 62 20  oment into a db 
54f0: 63 61 6c 6c 65 64 20 65 6e 76 64 61 74 2e 64 62  called envdat.db
5500: 20 75 6e 64 65 72 0d 0a 23 20 74 68 65 20 63 6f   under..# the co
5510: 6e 74 65 78 74 20 22 62 65 66 6f 72 65 22 0d 0a  ntext "before"..
5520: 6d 65 67 61 74 65 73 74 20 2d 65 6e 76 63 61 70  megatest -envcap
5530: 20 62 65 66 6f 72 65 0d 0a 0d 0a 23 20 63 61 70   before....# cap
5540: 74 75 72 65 20 74 68 65 20 63 75 72 72 65 6e 74  ture the current
5550: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 69 6e 74   environment int
5560: 6f 20 61 20 64 62 20 63 61 6c 6c 65 64 20 73 74  o a db called st
5570: 61 72 74 75 70 2e 64 62 20 77 69 74 68 20 0d 0a  artup.db with ..
5580: 23 20 63 6f 6e 74 65 78 74 20 22 61 66 74 65 72  # context "after
5590: 22 0d 0a 6d 65 67 61 74 65 73 74 20 2d 65 6e 76  "..megatest -env
55a0: 63 61 70 20 61 66 74 65 72 20 73 74 61 72 74 75  cap after startu
55b0: 70 2e 64 62 0d 0a 0d 0a 23 20 77 72 69 74 65 20  p.db....# write 
55c0: 74 68 65 20 64 69 66 66 20 66 72 6f 6d 20 62 65  the diff from be
55d0: 66 6f 72 65 20 74 6f 20 61 66 74 65 72 0d 0a 6d  fore to after..m
55e0: 65 67 61 74 65 73 74 20 2d 65 6e 76 64 65 6c 74  egatest -envdelt
55f0: 61 20 62 65 66 6f 72 65 2d 61 66 74 65 72 20 2d  a before-after -
5600: 64 75 6d 70 6d 6f 64 65 20 62 61 73 68 0d 0a 2d  dumpmode bash..-
5610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d  -------------...
5630: 0a 44 75 6d 70 20 6d 6f 64 65 73 20 69 6e 63 6c  .Dump modes incl
5640: 75 64 65 20 62 61 73 68 2c 20 63 73 68 20 61 6e  ude bash, csh an
5650: 64 20 63 6f 6e 66 69 67 2e 20 59 6f 75 20 63 61  d config. You ca
5660: 6e 20 69 6e 63 6c 75 64 65 20 63 6f 6e 66 69 67  n include config
5670: 20 64 61 74 61 0d 0a 69 6e 74 6f 20 6d 65 67 61   data..into mega
5680: 74 65 73 74 2e 63 6f 6e 66 69 67 20 6f 72 20 72  test.config or r
5690: 75 6e 63 6f 6e 66 69 67 73 2e 63 6f 6e 66 69 67  unconfigs.config
56a0: 2e 0d 0a 0d 0a 2e 45 78 61 6d 70 6c 65 20 6f 66  ......Example of
56b0: 20 67 65 6e 65 72 61 74 69 6e 67 20 61 6e 64 20   generating and 
56c0: 75 73 69 6e 67 20 63 6f 6e 66 69 67 20 64 61 74  using config dat
56d0: 61 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  a..-------------
56e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
56f0: 2d 0d 0a 6d 65 67 61 74 65 73 74 20 2d 65 6e 76  -..megatest -env
5700: 63 61 70 20 6f 72 69 67 69 6e 61 6c 0d 0a 23 20  cap original..# 
5710: 64 6f 20 73 6f 6d 65 20 73 74 75 66 66 20 68 65  do some stuff he
5720: 72 65 0d 0a 6d 65 67 61 74 65 73 74 20 2d 65 6e  re..megatest -en
5730: 76 63 61 70 20 6d 75 6e 67 65 64 0d 0a 6d 65 67  vcap munged..meg
5740: 61 74 65 73 74 20 2d 65 6e 76 64 65 6c 74 61 20  atest -envdelta 
5750: 6f 72 69 67 69 6e 61 6c 2d 6d 75 6e 67 65 64 20  original-munged 
5760: 2d 64 75 6d 70 6d 6f 64 65 20 69 6e 69 20 2d 6f  -dumpmode ini -o
5770: 20 6d 6f 64 69 66 69 65 64 2e 63 6f 6e 66 69 67   modified.config
5780: 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..--------------
5790: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
57a0: 0d 0a 0d 0a 54 68 65 6e 20 69 6e 20 72 75 6e 63  ....Then in runc
57b0: 6f 6e 66 69 67 73 2e 63 6f 6e 66 69 67 0d 0a 0d  onfigs.config...
57c0: 0a 2e 45 78 61 6d 70 6c 65 20 6f 66 20 75 73 69  ..Example of usi
57d0: 6e 67 20 6d 6f 64 69 66 69 65 64 2e 63 6f 6e 66  ng modified.conf
57e0: 69 67 20 69 6e 20 61 20 74 65 73 74 63 6f 6e 66  ig in a testconf
57f0: 69 67 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ig..------------
5800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5810: 2d 2d 0d 0a 63 61 74 20 74 65 73 74 63 6f 6e 66  --..cat testconf
5820: 69 67 0d 0a 5b 70 72 65 2d 6c 61 75 6e 63 68 2d  ig..[pre-launch-
5830: 65 6e 76 2d 76 61 72 73 5d 0d 0a 5b 69 6e 63 6c  env-vars]..[incl
5840: 75 64 65 20 6d 6f 64 69 66 69 65 64 2e 63 6f 6e  ude modified.con
5850: 66 69 67 5d 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  fig]..----------
5860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5870: 2d 2d 2d 2d 0d 0a 0d 0a 4d 61 6e 61 67 69 6e 67  ----....Managing
5880: 20 4f 6c 64 20 52 75 6e 73 0d 0a 2d 2d 2d 2d 2d   Old Runs..-----
5890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a  ------------....
58a0: 49 74 20 69 73 20 6f 66 74 65 6e 20 64 65 73 69  It is often desi
58b0: 72 65 64 20 74 6f 20 6b 65 65 70 20 73 6f 6d 65  red to keep some
58c0: 20 6f 6c 64 65 72 20 72 75 6e 73 20 61 72 6f 75   older runs arou
58d0: 6e 64 20 62 75 74 20 74 68 69 73 20 6d 75 73 74  nd but this must
58e0: 20 62 65 20 62 61 6c 61 6e 63 65 64 20 77 69 74   be balanced wit
58f0: 68 20 74 68 65 20 63 6f 73 74 73 20 6f 66 20 64  h the costs of d
5900: 69 73 6b 20 73 70 61 63 65 2e 0d 0a 0d 0a 2e 20  isk space...... 
5910: 55 73 65 20 2d 72 65 6d 6f 76 65 2d 6b 65 65 70  Use -remove-keep
5920: 0d 0a 2e 20 55 73 65 20 2d 61 72 63 68 69 76 65  ... Use -archive
5930: 20 28 63 61 6e 20 61 6c 73 6f 20 62 65 20 64 6f   (can also be do
5940: 6e 65 20 66 72 6f 6d 20 74 68 65 20 2d 72 65 6d  ne from the -rem
5950: 6f 76 65 2d 6b 65 65 70 20 69 6e 74 65 72 66 61  ove-keep interfa
5960: 63 65 29 0d 0a 2e 20 75 73 65 20 2d 72 65 6d 6f  ce)... use -remo
5970: 76 65 2d 72 75 6e 73 20 77 69 74 68 20 2d 6b 65  ve-runs with -ke
5980: 65 70 2d 72 65 63 6f 72 64 73 0d 0a 0d 0a 2e 46  ep-records.....F
5990: 6f 72 20 65 61 63 68 20 74 61 72 67 65 74 2c 20  or each target, 
59a0: 72 65 6d 6f 76 65 20 61 6c 6c 20 72 75 6e 73 20  remove all runs 
59b0: 62 75 74 20 74 68 65 20 6d 6f 73 74 20 72 65 63  but the most rec
59c0: 65 6e 74 20 33 20 69 66 20 74 68 65 79 20 61 72  ent 3 if they ar
59d0: 65 20 6f 76 65 72 20 31 20 77 65 65 6b 20 6f 6c  e over 1 week ol
59e0: 64 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  d..-------------
59f0: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 75 73 65 20  --------..# use 
5a00: 2d 70 72 65 63 6d 64 20 27 73 6c 65 65 70 20 35  -precmd 'sleep 5
5a10: 3b 6e 62 66 61 6b 65 27 20 74 6f 20 6c 69 6d 69  ;nbfake' to limi
5a20: 74 20 6f 76 65 72 6c 6f 61 64 69 6e 67 20 74 68  t overloading th
5a30: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20  e host computer 
5a40: 62 75 74 20 74 6f 20 61 6c 6c 6f 77 20 74 68 65  but to allow the
5a50: 20 72 65 6d 6f 76 65 73 20 74 6f 20 72 75 6e 20   removes to run 
5a60: 69 6e 20 70 61 72 61 6c 6c 65 6c 2e 0d 0a 6d 65  in parallel...me
5a70: 67 61 74 65 73 74 20 2d 61 63 74 69 6f 6e 73 20  gatest -actions 
5a80: 70 72 69 6e 74 2c 72 65 6d 6f 76 65 2d 72 75 6e  print,remove-run
5a90: 73 20 2d 72 65 6d 6f 76 65 2d 6b 65 65 70 20 33  s -remove-keep 3
5aa0: 20 2d 74 61 72 67 65 74 20 25 2f 25 2f 25 2f 25   -target %/%/%/%
5ab0: 20 2d 72 75 6e 6e 61 6d 65 20 25 20 2d 61 67 65   -runname % -age
5ac0: 20 31 77 20 2d 70 72 65 63 6d 64 20 27 73 6c 65   1w -precmd 'sle
5ad0: 65 70 20 35 3b 6e 62 66 61 6b 65 27 22 0d 0a 2d  ep 5;nbfake'"..-
5ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5af0: 2d 2d 2d 2d 0d 0a 0d 0a 4e 65 73 74 65 64 20 52  ----....Nested R
5b00: 75 6e 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  uns..-----------
5b10: 0d 0a 0d 0a 41 20 4d 65 67 61 74 65 73 74 20 74  ....A Megatest t
5b20: 65 73 74 20 63 61 6e 20 72 75 6e 20 61 20 66 75  est can run a fu
5b30: 6c 6c 20 4d 65 67 61 74 65 73 74 20 72 75 6e 20  ll Megatest run 
5b40: 69 6e 20 65 69 74 68 65 72 20 74 68 65 20 73 61  in either the sa
5b50: 6d 65 0d 0a 4d 65 67 61 74 65 73 74 20 61 72 65  me..Megatest are
5b60: 61 20 6f 72 20 69 6e 20 61 6e 6f 74 68 65 72 20  a or in another 
5b70: 61 72 65 61 2e 20 54 68 69 73 20 69 73 20 61 20  area. This is a 
5b80: 70 6f 77 65 72 66 75 6c 20 77 61 79 20 6f 66 20  powerful way of 
5b90: 63 68 61 69 6e 69 6e 67 0d 0a 63 6f 6d 70 6c 65  chaining..comple
5ba0: 78 20 73 75 69 74 65 73 20 6f 66 20 74 65 73 74  x suites of test
5bb0: 73 20 61 6e 64 20 6f 72 20 61 63 74 69 6f 6e 73  s and or actions
5bc0: 2e 0d 0a 0d 0a 49 66 20 79 6f 75 20 61 72 65 20  .....If you are 
5bd0: 6e 6f 74 20 75 73 69 6e 67 20 74 68 65 20 63 75  not using the cu
5be0: 72 72 65 6e 74 20 61 72 65 61 20 79 6f 75 20 63  rrent area you c
5bf0: 61 6e 20 75 73 65 20 65 7a 73 74 65 70 73 20 74  an use ezsteps t
5c00: 6f 20 72 65 74 72 69 65 76 65 0d 0a 61 6e 64 20  o retrieve..and 
5c10: 73 65 74 75 70 20 74 68 65 20 73 75 62 2d 4d 65  setup the sub-Me
5c20: 67 61 74 65 73 74 20 72 75 6e 20 61 72 65 61 2e  gatest run area.
5c30: 0d 0a 0d 0a 49 6e 20 74 68 65 20 74 65 73 74 63  ....In the testc
5c40: 6f 6e 66 69 67 3a 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d  onfig:..--------
5c50: 2d 2d 2d 2d 2d 2d 2d 0d 0a 5b 73 75 62 72 75 6e  -------..[subrun
5c60: 5d 0d 0a 0d 0a 23 20 52 65 71 75 69 72 65 64 3a  ]....# Required:
5c70: 20 77 61 69 74 20 66 6f 72 20 74 68 65 20 72 75   wait for the ru
5c80: 6e 20 6f 72 20 6a 75 73 74 20 6c 61 75 6e 63 68  n or just launch
5c90: 20 69 74 0d 0a 23 20 20 20 20 20 20 20 20 20 20   it..#          
5ca0: 20 69 66 20 6e 6f 20 74 68 65 6e 20 74 68 65 20   if no then the 
5cb0: 72 75 6e 20 77 69 6c 6c 20 62 65 20 61 6e 20 61  run will be an a
5cc0: 75 74 6f 6d 61 74 69 63 20 50 41 53 53 20 69 72  utomatic PASS ir
5cd0: 72 65 73 70 65 63 74 69 76 65 20 6f 66 20 74 68  respective of th
5ce0: 65 20 61 63 74 75 61 6c 20 72 65 73 75 6c 74 0d  e actual result.
5cf0: 0a 72 75 6e 2d 77 61 69 74 20 79 65 73 7c 6e 6f  .run-wait yes|no
5d00: 0d 0a 0d 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20  ....# Optional: 
5d10: 77 68 65 72 65 20 74 6f 20 65 78 65 63 75 74 65  where to execute
5d20: 20 74 68 65 20 72 75 6e 2e 20 44 65 66 61 75 6c   the run. Defaul
5d30: 74 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74  t is the current
5d40: 20 72 75 6e 61 72 65 61 0d 0a 72 75 6e 2d 61 72   runarea..run-ar
5d50: 65 61 20 2f 73 6f 6d 65 2f 70 61 74 68 2f 74 6f  ea /some/path/to
5d60: 2f 6d 65 67 61 74 65 73 74 2f 61 72 65 61 0d 0a  /megatest/area..
5d70: 0d 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 6d 65  ..# Optional: me
5d80: 74 68 6f 64 20 74 6f 20 75 73 65 20 74 6f 20 64  thod to use to d
5d90: 65 74 65 72 6d 69 6e 65 20 70 61 73 73 2f 66 61  etermine pass/fa
5da0: 69 6c 20 73 74 61 74 75 73 20 6f 66 20 74 68 65  il status of the
5db0: 20 72 75 6e 0d 0a 23 20 20 20 61 75 74 6f 20 28   run..#   auto (
5dc0: 64 65 66 61 75 6c 74 29 20 2d 20 72 6f 6c 6c 20  default) - roll 
5dd0: 75 70 20 74 68 65 20 6e 65 74 20 73 74 61 74 65  up the net state
5de0: 2f 73 74 61 74 75 73 20 6f 66 20 74 68 65 20 73  /status of the s
5df0: 75 62 2d 72 75 6e 0d 0a 23 20 20 20 6c 6f 67 70  ub-run..#   logp
5e00: 72 6f 20 20 20 20 20 20 20 20 20 2d 20 75 73 65  ro         - use
5e10: 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 6c 6f   the provided lo
5e20: 67 70 72 6f 20 72 75 6c 65 73 2c 20 68 61 70 70  gpro rules, happ
5e30: 65 6e 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ens automaticall
5e40: 79 20 69 66 20 74 68 65 72 65 20 69 73 20 61 20  y if there is a 
5e50: 6c 6f 67 70 72 6f 20 73 65 63 74 69 6f 6e 0d 0a  logpro section..
5e60: 23 20 70 61 73 73 66 61 69 6c 20 61 75 74 6f 7c  # passfail auto|
5e70: 6c 6f 67 70 72 6f 0d 0a 23 20 45 78 61 6d 70 6c  logpro..# Exampl
5e80: 65 20 6f 66 20 6c 6f 67 70 72 6f 3a 0d 0a 70 61  e of logpro:..pa
5e90: 73 73 66 61 69 6c 20 6c 6f 67 70 72 6f 0d 0a 0d  ssfail logpro...
5ea0: 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 0d 0a 6c  .# Optional: ..l
5eb0: 6f 67 70 72 6f 20 3b 3b 20 69 66 20 74 68 69 73  ogpro ;; if this
5ec0: 20 73 65 63 74 69 6f 6e 20 65 78 69 73 74 73 20   section exists 
5ed0: 74 68 65 6e 20 6c 6f 67 70 72 6f 20 69 73 20 75  then logpro is u
5ee0: 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  sed to determine
5ef0: 20 70 61 73 73 2f 66 61 69 6c 0d 0a 20 20 28 65   pass/fail..  (e
5f00: 78 70 65 63 74 3a 72 65 71 75 69 72 65 64 20 69  xpect:required i
5f10: 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20  n "LogFileBody" 
5f20: 3e 3d 20 31 20 22 41 74 20 6c 65 61 73 74 20 6f  >= 1 "At least o
5f30: 6e 65 20 70 61 73 73 22 20 23 2f 50 41 53 53 2f  ne pass" #/PASS/
5f40: 29 0d 0a 20 20 28 65 78 70 65 63 74 3a 65 72 72  )..  (expect:err
5f50: 6f 72 20 20 20 20 20 69 6e 20 22 4c 6f 67 46 69  or     in "LogFi
5f60: 6c 65 42 6f 64 79 22 20 20 3d 20 30 20 22 4e 6f  leBody"  = 0 "No
5f70: 20 46 41 49 4c 73 20 61 6c 6c 6f 77 65 64 22 20   FAILs allowed" 
5f80: 20 23 2f 46 41 49 4c 2f 29 0d 0a 0d 0a 23 20 4f   #/FAIL/)....# O
5f90: 70 74 69 6f 6e 61 6c 3a 20 74 61 72 67 65 74 20  ptional: target 
5fa0: 74 72 61 6e 73 6c 61 74 6f 72 2c 20 64 65 66 61  translator, defa
5fb0: 75 6c 74 20 69 73 20 74 6f 20 75 73 65 20 74 68  ult is to use th
5fc0: 65 20 70 61 72 65 6e 74 20 74 61 72 67 65 74 0d  e parent target.
5fd0: 0a 74 61 72 67 65 74 20 23 7b 73 68 65 6c 6c 20  .target #{shell 
5fe0: 73 6f 6d 65 73 63 72 69 70 74 2e 73 68 7d 0d 0a  somescript.sh}..
5ff0: 0d 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 72 75  ..# Optional: ru
6000: 6e 6e 61 6d 65 20 74 72 61 6e 73 6c 61 74 6f 72  nname translator
6010: 2f 67 65 6e 65 72 61 74 6f 72 2c 20 64 65 66 61  /generator, defa
6020: 75 6c 74 20 69 73 20 74 6f 20 75 73 65 20 74 68  ult is to use th
6030: 65 20 70 61 72 65 6e 74 20 72 75 6e 6e 61 6d 65  e parent runname
6040: 0d 0a 72 75 6e 2d 6e 61 6d 65 20 23 7b 73 6f 6d  ..run-name #{som
6050: 65 73 63 72 69 70 74 2e 73 68 7d 0d 0a 0d 0a 23  escript.sh}....#
6060: 20 4f 70 74 69 6f 6e 61 6c 3a 20 74 65 73 74 70   Optional: testp
6070: 61 74 74 20 73 70 65 63 2c 20 64 65 66 61 75 6c  att spec, defaul
6080: 74 20 69 73 20 74 6f 20 66 69 72 73 74 20 6c 6f  t is to first lo
6090: 6f 6b 20 66 6f 72 20 54 45 53 54 50 41 54 54 20  ok for TESTPATT 
60a0: 73 70 65 63 20 66 72 6f 6d 20 72 75 6e 63 6f 6e  spec from runcon
60b0: 66 69 67 73 20 75 6e 6c 65 73 73 20 74 68 65 72  figs unless ther
60c0: 65 20 69 73 20 61 20 63 6f 6e 74 6f 75 72 20 73  e is a contour s
60d0: 70 65 63 0d 0a 74 65 73 74 2d 70 61 74 74 20 25  pec..test-patt %
60e0: 2f 69 74 65 6d 31 2c 74 65 73 74 32 0d 0a 0d 0a  /item1,test2....
60f0: 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 63 6f 6e 74  # Optional: cont
6100: 6f 75 72 20 73 70 65 63 2c 20 75 73 65 20 74 68  our spec, use th
6110: 65 20 6e 61 6d 65 64 20 63 6f 6e 74 6f 75 72 20  e named contour 
6120: 66 72 6f 6d 20 74 68 65 20 6d 65 67 61 74 65 73  from the megates
6130: 74 2e 63 6f 6e 66 69 67 20 63 6f 6e 74 6f 75 72  t.config contour
6140: 20 73 70 65 63 0d 0a 63 6f 6e 74 6f 75 72 20 63   spec..contour c
6150: 6f 6e 74 6f 75 72 6e 61 6d 65 20 23 23 23 20 4e  ontourname ### N
6160: 4f 54 45 3a 20 4e 6f 74 20 69 6d 70 6c 65 6d 65  OTE: Not impleme
6170: 6e 74 65 64 20 79 65 74 21 20 4c 65 74 20 75 73  nted yet! Let us
6180: 20 6b 6e 6f 77 20 69 66 20 79 6f 75 20 6e 65 65   know if you nee
6190: 64 20 74 68 69 73 20 66 65 61 74 75 72 65 2e 0d  d this feature..
61a0: 0a 0d 0a 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 6d  ...# Optional: m
61b0: 6f 64 65 2d 70 61 74 74 2c 20 75 73 65 20 74 68  ode-patt, use th
61c0: 69 73 20 73 70 65 63 20 66 6f 72 20 74 65 73 74  is spec for test
61d0: 70 61 74 74 20 66 72 6f 6d 20 72 75 6e 63 6f 6e  patt from runcon
61e0: 66 69 67 73 0d 0a 6d 6f 64 65 2d 70 61 74 74 20  figs..mode-patt 
61f0: 54 45 53 54 50 41 54 54 0d 0a 0d 0a 23 20 4f 70  TESTPATT....# Op
6200: 74 69 6f 6e 61 6c 3a 20 74 61 67 2d 65 78 70 72  tional: tag-expr
6210: 2c 20 75 73 65 20 74 68 69 73 20 74 61 67 2d 65  , use this tag-e
6220: 78 70 72 20 74 6f 20 73 65 6c 65 63 74 20 74 65  xpr to select te
6230: 73 74 73 0d 0a 74 61 67 2d 65 78 70 72 20 71 75  sts..tag-expr qu
6240: 69 63 6b 0d 0a 0d 0a 23 20 4f 70 74 69 6f 6e 61  ick....# Optiona
6250: 6c 3a 20 28 6e 6f 74 20 79 65 74 20 69 6d 70 6c  l: (not yet impl
6260: 65 6d 65 6e 74 65 64 2c 20 72 65 6d 6f 76 65 2d  emented, remove-
6270: 72 75 6e 73 20 69 73 20 61 6c 77 61 79 73 20 70  runs is always p
6280: 72 6f 70 61 67 61 74 65 64 20 61 74 20 74 68 69  ropagated at thi
6290: 73 20 74 69 6d 65 29 2c 20 70 72 6f 70 61 67 61  s time), propaga
62a0: 74 65 20 74 68 65 73 65 20 61 63 74 69 6f 6e 73  te these actions
62b0: 20 66 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74   from the parent
62c0: 0d 0a 23 20 20 20 20 20 20 20 20 20 20 20 74 65  ..#           te
62d0: 73 74 0d 0a 23 20 20 20 4e 6f 74 65 2f 2f 20 64  st..#   Note// d
62e0: 65 66 61 75 6c 74 20 69 73 20 25 20 66 6f 72 20  efault is % for 
62f0: 61 6c 6c 0d 0a 70 72 6f 70 61 67 61 74 65 20 72  all..propagate r
6300: 65 6d 6f 76 65 2d 72 75 6e 73 20 61 72 63 68 69  emove-runs archi
6310: 76 65 20 2e 2e 2e 0d 0a 0d 0a 2d 2d 2d 2d 2d 2d  ve .......------
6320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 50 72 6f  ---------....Pro
6330: 67 72 61 6d 6d 69 6e 67 20 41 50 49 0d 0a 2d 2d  gramming API..--
6340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d  -------------...
6350: 0a 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20  .These routines 
6360: 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 66 72  can be called fr
6370: 6f 6d 20 74 68 65 20 6d 65 67 61 74 65 73 74 20  om the megatest 
6380: 72 65 70 6c 2e 20 0d 0a 0d 0a 2e 41 50 49 20 4b  repl. .....API K
6390: 65 79 73 20 52 65 6c 61 74 65 64 20 43 61 6c 6c  eys Related Call
63a0: 73 0d 0a 5b 77 69 64 74 68 3d 22 37 30 25 22 2c  s..[width="70%",
63b0: 63 6f 6c 73 3d 22 5e 2c 32 6d 2c 32 6d 2c 32 6d  cols="^,2m,2m,2m
63c0: 22 2c 66 72 61 6d 65 3d 22 74 6f 70 62 6f 74 22  ",frame="topbot"
63d0: 2c 6f 70 74 69 6f 6e 73 3d 22 68 65 61 64 65 72  ,options="header
63e0: 2c 66 6f 6f 74 65 72 22 5d 0d 0a 7c 3d 3d 3d 3d  ,footer"]..|====
63f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6400: 3d 3d 0d 0a 7c 41 50 49 20 43 61 6c 6c 20 20 20  ==..|API Call   
6410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6420: 20 20 20 20 20 7c 20 50 75 72 70 6f 73 65 20 63       | Purpose c
6430: 6f 6d 6d 65 6e 74 73 20 20 20 7c 20 52 65 74 75  omments   | Retu
6440: 72 6e 73 20 20 20 20 20 20 20 20 20 20 20 20 20  rns             
6450: 20 20 20 20 7c 20 43 6f 6d 6d 65 6e 74 73 0d 0a      | Comments..
6460: 7c 28 72 6d 74 3a 67 65 74 2d 6b 65 79 73 20 72  |(rmt:get-keys r
6470: 75 6e 2d 69 64 29 20 20 20 20 20 20 20 20 20 20  un-id)          
6480: 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20   |              
6490: 20 20 20 20 20 20 7c 20 28 20 6b 65 79 31 20 6b        | ( key1 k
64a0: 65 79 32 20 2e 2e 2e 20 29 20 20 20 20 20 20 20  ey2 ... )       
64b0: 7c 20 0d 0a 7c 20 28 72 6d 74 3a 67 65 74 2d 6b  | ..| (rmt:get-k
64c0: 65 79 2d 76 61 6c 2d 70 61 69 72 73 20 72 75 6e  ey-val-pairs run
64d0: 2d 69 64 29 20 7c 20 20 20 20 20 20 20 20 20 20  -id) |          
64e0: 20 20 20 20 20 20 20 20 20 20 7c 20 23 74 3d 73            | #t=s
64f0: 75 63 63 65 73 73 2f 23 66 3d 66 61 69 6c 20 20  uccess/#f=fail  
6500: 20 20 20 20 7c 20 57 6f 72 6b 73 20 6f 6e 6c 79      | Works only
6510: 20 69 66 20 74 68 65 20 73 65 72 76 65 72 20 69   if the server i
6520: 73 20 73 74 69 6c 6c 20 72 65 61 63 68 61 62 6c  s still reachabl
6530: 65 0d 0a 7c 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  e..|============
6540: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 0d 0a  ==========......
6550: 3a 6e 75 6d 62 65 72 65 64 21 3a 0a              :numbered!:.