Megatest

Hex Artifact Content
Login

Artifact a573e1a6563b33919e76b0365a9bd6c1638ed8e2:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 72 75 62 79 0a 0a 72 65 71 75 69 72 65 20 22 23  ruby..require "#
0020: 7b 45 4e 56 5b 27 4d 54 5f 52 55 4e 5f 41 52 45  {ENV['MT_RUN_ARE
0030: 41 5f 48 4f 4d 45 27 5d 7d 2f 2e 2e 2f 73 75 70  A_HOME']}/../sup
0040: 70 6f 72 74 66 69 6c 65 73 2f 72 75 62 79 2f 6c  portfiles/ruby/l
0050: 69 62 72 75 6e 73 63 72 69 70 74 2e 72 62 22 0a  ibrunscript.rb".
0060: 0a 23 20 72 75 6e 5f 72 65 63 6f 72 64 28 73 74  .# run_record(st
0070: 65 70 6e 61 6d 65 2c 20 63 6d 64 29 20 2d 20 77  epname, cmd) - w
0080: 69 6c 6c 20 72 65 63 6f 72 64 20 69 6e 20 64 62  ill record in db
0090: 20 69 66 20 65 78 69 74 20 63 6f 64 65 20 6f 66   if exit code of
00a0: 20 73 63 72 69 70 74 20 77 61 73 20 7a 65 72 6f   script was zero
00b0: 20 6f 72 20 6e 6f 74 0a 72 75 6e 5f 61 6e 64 5f   or not.run_and_
00c0: 72 65 63 6f 72 64 28 27 63 72 65 61 74 65 20 64  record('create d
00d0: 62 27 2c 22 73 71 6c 69 74 65 33 20 74 65 73 74  b',"sqlite3 test
00e0: 69 6e 67 2e 64 62 20 3c 3c 20 45 4f 46 5c 6e 63  ing.db << EOF\nc
00f0: 72 65 61 74 65 20 74 61 62 6c 65 20 69 66 20 6e  reate table if n
0100: 6f 74 20 65 78 69 73 74 73 20 62 6c 61 68 28 69  ot exists blah(i
0110: 64 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  d INTEGER PRIMAR
0120: 59 20 4b 45 59 2c 6e 61 6d 65 20 54 45 58 54 29  Y KEY,name TEXT)
0130: 3b 5c 6e 2e 71 5c 6e 45 4f 46 22 2c 22 22 29 0a  ;\n.q\nEOF","").
0140: 0a 69 66 20 28 21 20 46 69 6c 65 2e 65 78 69 73  .if (! File.exis
0150: 74 73 3f 28 22 2e 2e 2f 2e 2e 2f 72 75 6e 66 69  ts?("../../runfi
0160: 72 73 74 2f 49 5f 77 61 73 5f 68 65 72 65 22 29  rst/I_was_here")
0170: 29 0a 20 20 20 20 70 75 74 73 20 22 45 52 52 4f  ).    puts "ERRO
0180: 52 3a 20 54 68 69 73 20 74 65 73 74 20 77 61 73  R: This test was
0190: 20 73 74 61 72 74 65 64 20 62 65 66 6f 72 65 20   started before 
01a0: 74 68 65 20 70 72 65 72 65 71 75 69 73 69 74 65  the prerequisite
01b0: 73 20 72 61 6e 21 22 0a 20 20 20 20 73 79 73 74  s ran!".    syst
01c0: 65 6d 20 22 6d 65 67 61 74 65 73 74 20 2d 74 65  em "megatest -te
01d0: 73 74 2d 73 74 61 74 75 73 20 3a 73 74 61 74 65  st-status :state
01e0: 20 49 4e 43 4f 4d 50 4c 45 54 45 20 3a 73 74 61   INCOMPLETE :sta
01f0: 74 75 73 20 46 41 49 4c 22 0a 20 20 20 20 65 78  tus FAIL".    ex
0200: 69 74 20 31 0a 65 6e 64 0a 0a 23 20 66 69 6c 65  it 1.end..# file
0210: 5f 73 69 7a 65 5f 63 68 65 63 6b 65 72 28 73 74  _size_checker(st
0220: 65 70 6e 61 6d 65 2c 20 66 69 6c 65 6e 61 6d 65  epname, filename
0230: 2c 20 6d 69 6e 73 69 7a 65 2c 20 6d 61 78 73 69  , minsize, maxsi
0240: 7a 65 29 20 2d 20 6e 65 67 61 74 69 76 65 20 6d  ze) - negative m
0250: 65 61 6e 73 20 69 67 6e 6f 72 65 0a 23 20 66 69  eans ignore.# fi
0260: 6c 65 5f 73 69 7a 65 5f 63 68 65 63 6b 65 72 28  le_size_checker(
0270: 27 63 72 65 61 74 65 20 64 62 27 2c 27 74 65 73  'create db','tes
0280: 74 69 6e 67 2e 64 62 27 2c 31 30 30 2c 2d 31 29  ting.db',100,-1)
0290: 0a 0a 6e 75 6d 5f 72 65 63 6f 72 64 73 3d 72 61  ..num_records=ra
02a0: 6e 64 28 35 29 20 23 20 30 30 30 30 0a 72 65 63  nd(5) # 0000.rec
02b0: 6f 72 64 5f 73 74 65 70 28 22 61 64 64 20 23 7b  ord_step("add #{
02c0: 6e 75 6d 5f 72 65 63 6f 72 64 73 7d 22 2c 22 73  num_records}","s
02d0: 74 61 72 74 22 2c 22 6e 2f 61 22 29 0a 73 74 61  tart","n/a").sta
02e0: 74 75 73 3d 66 61 6c 73 65 0a 28 30 2e 2e 6e 75  tus=false.(0..nu
02f0: 6d 5f 72 65 63 6f 72 64 73 29 2e 65 61 63 68 20  m_records).each 
0300: 64 6f 20 7c 69 7c 0a 20 20 72 61 6e 64 73 74 72  do |i|.  randstr
0310: 69 6e 67 3d 22 61 3b 6c 73 6b 64 66 6a 61 3b 73  ing="a;lskdfja;s
0320: 64 66 6a 3b 61 6c 73 64 66 6a 3b 61 73 6c 66 64  dfj;alsdfj;aslfd
0330: 6a 3b 61 6c 73 66 6a 61 3b 6c 73 66 64 6a 3b 61  j;alsfja;lsfdj;a
0340: 6c 73 66 6a 61 3b 6c 73 6a 66 64 3b 6c 61 73 66  lsfja;lsjfd;lasf
0350: 6a 6c 3b 61 73 64 66 6a 61 3b 73 6c 66 6a 3b 61  jl;asdfja;slfj;a
0360: 6c 73 6a 66 3b 61 73 6c 6a 66 3b 61 6c 73 6a 66  lsjf;asljf;alsjf
0370: 3b 6c 61 73 64 6a 66 3b 6c 61 73 6a 66 3b 6c 61  ;lasdjf;lasjf;la
0380: 73 6a 66 3b 61 6c 73 6a 66 3b 6c 61 73 68 66 6c  sjf;alsjf;lashfl
0390: 6b 61 73 68 66 6c 6b 65 72 68 66 6c 6b 64 73 76  kashflkerhflkdsv
03a0: 6e 6c 61 73 6c 64 68 6c 66 61 6c 64 66 22 0a 20  nlasldhlfaldf". 
03b0: 20 23 20 73 74 61 74 75 73 3d 73 79 73 74 65 6d   # status=system
03c0: 20 22 73 71 6c 69 74 65 33 20 74 65 73 74 69 6e   "sqlite3 testin
03d0: 67 2e 64 62 20 5c 22 69 6e 73 65 72 74 20 69 6e  g.db \"insert in
03e0: 74 6f 20 62 6c 61 68 20 28 6e 61 6d 65 29 20 76  to blah (name) v
03f0: 61 6c 75 65 73 20 28 27 23 7b 72 61 6e 64 73 74  alues ('#{randst
0400: 72 69 6e 67 7d 27 29 3b 5c 22 22 0a 20 20 73 79  ring}');\"".  sy
0410: 73 74 65 6d 20 22 6d 65 67 61 74 65 73 74 20 2d  stem "megatest -
0420: 73 74 65 70 20 74 65 73 74 69 6e 67 20 3a 73 74  step testing :st
0430: 61 74 65 20 77 72 6f 74 65 5f 6a 75 6e 6b 20 3a  ate wrote_junk :
0440: 73 74 61 74 75 73 20 23 7b 6e 75 6d 5f 72 65 63  status #{num_rec
0450: 6f 72 64 73 7d 22 0a 20 20 73 6c 65 65 70 28 35  ords}".  sleep(5
0460: 29 0a 20 20 70 75 74 73 20 22 69 3d 23 7b 69 7d  ).  puts "i=#{i}
0470: 22 0a 65 6e 64 0a 69 66 20 73 74 61 74 75 73 3d  ".end.if status=
0480: 3d 30 0a 20 20 73 74 61 74 75 73 3d 27 70 61 73  =0.  status='pas
0490: 73 27 0a 65 6c 73 65 0a 20 20 73 74 61 74 75 73  s'.else.  status
04a0: 3d 27 66 61 69 6c 27 0a 65 6e 64 0a 0a 72 65 63  ='fail'.end..rec
04b0: 6f 72 64 5f 73 74 65 70 28 22 61 64 64 20 23 7b  ord_step("add #{
04c0: 6e 75 6d 5f 72 65 63 6f 72 64 73 7d 22 2c 22 65  num_records}","e
04d0: 6e 64 22 2c 73 74 61 74 75 73 29 0a 0a 0a 0a 0a  nd",status).....