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