Megatest

Hex Artifact Content
Login

Artifact d882ace026d124468aeb146a85b0fa0caee71cd4:


0000: 23 21 2f 62 69 6e 2f 62 61 73 68 0a 0a 75 73 61  #!/bin/bash..usa
0010: 67 65 3d 22 6d 74 5f 65 7a 73 74 65 70 20 73 74  ge="mt_ezstep st
0020: 65 70 6e 61 6d 65 20 70 72 65 76 73 74 65 70 6e  epname prevstepn
0030: 61 6d 65 20 63 6f 6d 6d 61 6e 64 20 5b 61 72 67  ame command [arg
0040: 73 20 2e 2e 2e 5d 22 0a 0a 69 66 20 5b 20 22 24  s ...]"..if [ "$
0050: 4d 54 5f 43 4d 44 49 4e 46 4f 22 20 3d 3d 20 22  MT_CMDINFO" == "
0060: 22 20 5d 3b 74 68 65 6e 0a 20 20 65 63 68 6f 20  " ];then.  echo 
0070: 22 45 52 52 4f 52 3a 20 24 30 20 73 68 6f 75 6c  "ERROR: $0 shoul
0080: 64 20 62 65 20 72 75 6e 20 77 69 74 68 69 6e 20  d be run within 
0090: 61 20 6d 65 67 61 74 65 73 74 20 74 65 73 74 20  a megatest test 
00a0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 22 0a 20 20 65  environment".  e
00b0: 63 68 6f 20 22 55 73 61 67 65 3a 20 24 75 73 61  cho "Usage: $usa
00c0: 67 65 22 0a 20 20 65 78 69 74 0a 66 69 0a 0a 23  ge".  exit.fi..#
00d0: 20 50 75 72 70 6f 73 65 3a 20 54 68 69 73 20 69   Purpose: This i
00e0: 73 20 66 6f 72 20 74 68 65 20 5b 65 7a 73 74 65  s for the [ezste
00f0: 70 73 5d 20 73 65 63 74 6f 6e 20 69 6e 20 79 6f  ps] secton in yo
0100: 75 72 20 74 65 73 74 63 6f 6e 66 69 67 20 66 69  ur testconfig fi
0110: 6c 65 2e 0a 23 20 20 20 44 4f 20 4e 4f 54 20 55  le..#   DO NOT U
0120: 53 45 20 49 4e 20 59 4f 55 52 20 53 43 52 49 50  SE IN YOUR SCRIP
0130: 54 53 21 0a 23 0a 23 20 43 61 6c 6c 20 6c 69 6b  TS!.#.# Call lik
0140: 65 20 74 68 69 73 3a 0a 23 20 6d 74 5f 65 7a 73  e this:.# mt_ezs
0150: 74 65 70 20 73 74 65 70 6e 61 6d 65 20 70 72 65  tep stepname pre
0160: 76 73 74 65 70 6e 61 6d 65 20 63 6f 6d 6d 61 6e  vstepname comman
0170: 64 20 2e 2e 2e 2e 0a 23 20 0a 69 66 20 5b 20 22  d .....# .if [ "
0180: 78 24 31 22 20 3d 3d 20 22 78 22 20 5d 3b 74 68  x$1" == "x" ];th
0190: 65 6e 0a 20 20 65 63 68 6f 20 22 55 73 61 67 65  en.  echo "Usage
01a0: 3a 20 24 75 73 61 67 65 22 0a 20 20 65 78 69 74  : $usage".  exit
01b0: 0a 66 69 0a 0a 73 74 65 70 6e 61 6d 65 3d 24 31  .fi..stepname=$1
01c0: 3b 73 68 69 66 74 0a 70 72 65 76 73 74 65 70 6e  ;shift.prevstepn
01d0: 61 6d 65 3d 24 31 3b 73 68 69 66 74 0a 0a 63 6f  ame=$1;shift..co
01e0: 6d 6d 61 6e 64 3d 24 2a 0a 0a 61 6c 6c 73 74 61  mmand=$*..allsta
01f0: 74 75 73 3d 39 39 0a 72 75 6e 73 74 61 74 75 73  tus=99.runstatus
0200: 3d 39 39 0a 6c 6f 67 70 72 6f 70 73 74 61 74 75  =99.logpropstatu
0210: 73 3d 39 39 0a 0a 70 72 65 76 5f 65 6e 76 3d 2e  s=99..prev_env=.
0220: 65 7a 73 74 65 70 73 2f 24 7b 70 72 65 76 73 74  ezsteps/${prevst
0230: 65 70 6e 61 6d 65 7d 2e 73 68 0a 69 66 20 5b 20  epname}.sh.if [ 
0240: 2d 65 20 24 70 72 65 76 5f 65 6e 76 20 5d 3b 74  -e $prev_env ];t
0250: 68 65 6e 0a 20 20 20 20 73 6f 75 72 63 65 20 24  hen.    source $
0260: 70 72 65 76 5f 65 6e 76 0a 66 69 0a 0a 23 20 73  prev_env.fi..# s
0270: 6f 75 72 63 65 20 74 68 65 20 65 6e 76 69 72 6f  ource the enviro
0280: 6e 6d 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 70  nment from the p
0290: 72 65 76 69 6f 75 73 20 73 74 65 70 20 69 66 20  revious step if 
02a0: 69 74 20 65 78 69 73 74 73 0a 0a 23 20 69 66 20  it exists..# if 
02b0: 61 20 6c 6f 67 70 72 6f 20 66 69 6c 65 20 65 78  a logpro file ex
02c0: 69 73 74 73 20 74 68 65 6e 20 75 73 65 20 69 74  ists then use it
02d0: 20 6f 74 68 65 72 77 69 73 65 20 6a 75 73 74 20   otherwise just 
02e0: 72 75 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c  run the command,
02f0: 20 6e 62 2f 2f 20 77 61 73 20 75 73 69 6e 67 20   nb// was using 
0300: 32 3e 26 31 0a 69 66 20 5b 20 2d 65 20 24 7b 73  2>&1.if [ -e ${s
0310: 74 65 70 6e 61 6d 65 7d 2e 6c 6f 67 70 72 6f 20  tepname}.logpro 
0320: 5d 3b 74 68 65 6e 0a 20 20 20 23 20 63 6f 75 6c  ];then.   # coul
0330: 64 20 64 6f 3a 0a 20 20 20 24 63 6f 6d 6d 61 6e  d do:.   $comman
0340: 64 20 32 3e 26 31 7c 20 74 65 65 20 24 7b 73 74  d 2>&1| tee ${st
0350: 65 70 6e 61 6d 65 7d 2e 6c 6f 67 20 7c 20 6c 6f  epname}.log | lo
0360: 67 70 72 6f 20 24 7b 73 74 65 70 6e 61 6d 65 7d  gpro ${stepname}
0370: 2e 6c 6f 67 70 72 6f 20 24 7b 73 74 65 70 6e 61  .logpro ${stepna
0380: 6d 65 7d 2e 68 74 6d 6c 20 26 3e 20 2f 64 65 76  me}.html &> /dev
0390: 2f 6e 75 6c 6c 0a 20 20 20 6c 6f 67 70 72 6f 73  /null.   logpros
03a0: 74 61 74 75 73 3d 24 3f 0a 20 20 20 23 20 24 63  tatus=$?.   # $c
03b0: 6f 6d 6d 61 6e 64 20 32 3e 26 31 7c 20 6c 6f 67  ommand 2>&1| log
03c0: 70 72 6f 20 24 7b 73 74 65 70 6e 61 6d 65 7d 2e  pro ${stepname}.
03d0: 6c 6f 67 70 72 6f 20 24 7b 73 74 65 70 6e 61 6d  logpro ${stepnam
03e0: 65 7d 2e 68 74 6d 6c 20 26 3e 20 24 7b 73 74 65  e}.html &> ${ste
03f0: 70 6e 61 6d 65 7d 2e 6c 6f 67 20 0a 20 20 20 23  pname}.log .   #
0400: 20 61 6c 6c 73 74 61 74 75 73 3d 28 24 7b 50 49   allstatus=(${PI
0410: 50 45 53 54 41 54 55 53 5b 30 5d 7d 20 24 7b 50  PESTATUS[0]} ${P
0420: 49 50 45 53 54 41 54 55 53 5b 31 5d 7d 29 20 0a  IPESTATUS[1]}) .
0430: 20 20 20 61 6c 6c 73 74 61 74 75 73 3d 28 24 7b     allstatus=(${
0440: 50 49 50 45 53 54 41 54 55 53 5b 30 5d 7d 20 24  PIPESTATUS[0]} $
0450: 7b 50 49 50 45 53 54 41 54 55 53 5b 31 5d 7d 29  {PIPESTATUS[1]})
0460: 0a 20 20 20 72 75 6e 73 74 61 74 75 73 3d 24 7b  .   runstatus=${
0470: 61 6c 6c 73 74 61 74 75 73 5b 30 5d 7d 0a 20 20  allstatus[0]}.  
0480: 20 23 20 6c 6f 67 70 72 6f 73 74 61 74 75 73 3d   # logprostatus=
0490: 24 7b 61 6c 6c 73 74 61 74 75 73 5b 31 5d 7d 0a  ${allstatus[1]}.
04a0: 65 6c 73 65 0a 20 20 20 24 63 6f 6d 6d 61 6e 64  else.   $command
04b0: 20 26 3e 20 24 7b 73 74 65 70 6e 61 6d 65 7d 2e   &> ${stepname}.
04c0: 6c 6f 67 0a 20 20 20 72 75 6e 73 74 61 74 75 73  log.   runstatus
04d0: 3d 24 3f 0a 20 20 20 6c 6f 67 70 72 6f 73 74 61  =$?.   logprosta
04e0: 74 75 73 3d 24 72 75 6e 73 74 61 74 75 73 0a 66  tus=$runstatus.f
04f0: 69 0a 0a 23 20 49 66 20 74 68 65 20 74 65 73 74  i..# If the test
0500: 20 65 78 69 74 73 20 77 69 74 68 20 6e 6f 6e 2d   exits with non-
0510: 7a 65 72 6f 2c 20 77 65 20 77 69 6c 6c 20 72 65  zero, we will re
0520: 63 6f 72 64 20 46 41 49 4c 20 65 76 65 6e 20 69  cord FAIL even i
0530: 66 20 6c 6f 67 70 72 6f 0a 23 20 73 61 79 73 20  f logpro.# says 
0540: 69 74 20 69 73 20 61 20 50 41 53 53 0a 0a 69 66  it is a PASS..if
0550: 20 5b 20 24 72 75 6e 73 74 61 74 75 73 20 2d 6e   [ $runstatus -n
0560: 65 20 30 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  e 0 ]; then.    
0570: 65 78 69 74 73 74 61 74 75 73 3d 24 72 75 6e 73  exitstatus=$runs
0580: 74 61 74 75 73 0a 65 6c 69 66 20 5b 20 24 6c 6f  tatus.elif [ $lo
0590: 67 70 72 6f 73 74 61 74 75 73 20 2d 65 71 20 30  gprostatus -eq 0
05a0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 65 78 69   ]; then.    exi
05b0: 74 73 74 61 74 75 73 3d 24 6c 6f 67 70 72 6f 73  tstatus=$logpros
05c0: 74 61 74 75 73 0a 65 6c 69 66 20 5b 20 24 6c 6f  tatus.elif [ $lo
05d0: 67 70 72 6f 73 74 61 74 75 73 20 2d 65 71 20 32  gprostatus -eq 2
05e0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 65 78 69   ]; then.    exi
05f0: 74 73 74 61 74 75 73 3d 32 0a 65 6c 69 66 20 5b  tstatus=2.elif [
0600: 20 24 6c 6f 67 70 72 6f 73 74 61 74 75 73 20 2d   $logprostatus -
0610: 65 71 20 31 20 5d 3b 20 74 68 65 6e 0a 20 20 20  eq 1 ]; then.   
0620: 20 65 78 69 74 73 74 61 74 75 73 3d 31 0a 65 6c   exitstatus=1.el
0630: 73 65 20 0a 20 20 20 20 65 78 69 74 73 74 61 74  se .    exitstat
0640: 75 73 3d 30 0a 66 69 0a 0a 24 4d 54 5f 4d 45 47  us=0.fi..$MT_MEG
0650: 41 54 45 53 54 20 2d 65 6e 76 32 66 69 6c 65 20  ATEST -env2file 
0660: 2e 65 7a 73 74 65 70 73 2f 24 7b 73 74 65 70 6e  .ezsteps/${stepn
0670: 61 6d 65 7d 0a 65 78 69 74 20 24 65 78 69 74 73  ame}.exit $exits
0680: 74 61 74 75 73 0a                                tatus.