Megatest

Hex Artifact Content
Login

Artifact 4107e1724c9945f483f29b3923b3c79d8b4a466c:


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 73 75 70 70 6f 72  A_HOME']}/suppor
0040: 74 66 69 6c 65 73 2f 72 75 62 79 2f 6c 69 62 72  tfiles/ruby/libr
0050: 75 6e 73 63 72 69 70 74 2e 72 62 22 0a 0a 23 20  unscript.rb"..# 
0060: 72 75 6e 5f 72 65 63 6f 72 64 28 73 74 65 70 6e  run_record(stepn
0070: 61 6d 65 2c 20 63 6d 64 29 20 2d 20 77 69 6c 6c  ame, cmd) - will
0080: 20 72 65 63 6f 72 64 20 69 6e 20 64 62 20 69 66   record in db if
0090: 20 65 78 69 74 20 63 6f 64 65 20 6f 66 20 73 63   exit code of sc
00a0: 72 69 70 74 20 77 61 73 20 7a 65 72 6f 20 6f 72  ript was zero or
00b0: 20 6e 6f 74 0a 72 75 6e 5f 61 6e 64 5f 72 65 63   not.run_and_rec
00c0: 6f 72 64 28 27 63 72 65 61 74 65 20 64 62 27 2c  ord('create db',
00d0: 22 73 71 6c 69 74 65 33 20 74 65 73 74 69 6e 67  "sqlite3 testing
00e0: 2e 64 62 20 3c 3c 20 45 4f 46 5c 6e 63 72 65 61  .db << EOF\ncrea
00f0: 74 65 20 74 61 62 6c 65 20 69 66 20 6e 6f 74 20  te table if not 
0100: 65 78 69 73 74 73 20 62 6c 61 68 28 69 64 20 49  exists blah(id I
0110: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
0120: 45 59 2c 6e 61 6d 65 20 54 45 58 54 29 3b 5c 6e  EY,name TEXT);\n
0130: 2e 71 5c 6e 45 4f 46 22 2c 22 22 29 0a 0a 69 66  .q\nEOF","")..if
0140: 20 28 21 20 46 69 6c 65 2e 65 78 69 73 74 73 3f   (! File.exists?
0150: 28 22 2e 2e 2f 2e 2e 2f 72 75 6e 66 69 72 73 74  ("../../runfirst
0160: 2f 49 5f 77 61 73 5f 68 65 72 65 22 29 29 0a 20  /I_was_here")). 
0170: 20 20 20 70 75 74 73 20 22 45 52 52 4f 52 3a 20     puts "ERROR: 
0180: 54 68 69 73 20 74 65 73 74 20 77 61 73 20 73 74  This test was st
0190: 61 72 74 65 64 20 62 65 66 6f 72 65 20 74 68 65  arted before the
01a0: 20 70 72 65 72 65 71 75 69 73 69 74 65 73 20 72   prerequisites r
01b0: 61 6e 21 22 0a 20 20 20 20 73 79 73 74 65 6d 20  an!".    system 
01c0: 22 6d 65 67 61 74 65 73 74 20 2d 74 65 73 74 2d  "megatest -test-
01d0: 73 74 61 74 75 73 20 3a 73 74 61 74 65 20 49 4e  status :state IN
01e0: 43 4f 4d 50 4c 45 54 45 20 3a 73 74 61 74 75 73  COMPLETE :status
01f0: 20 46 41 49 4c 22 0a 20 20 20 20 65 78 69 74 20   FAIL".    exit 
0200: 31 0a 65 6e 64 0a 0a 23 20 66 69 6c 65 5f 73 69  1.end..# file_si
0210: 7a 65 5f 63 68 65 63 6b 65 72 28 73 74 65 70 6e  ze_checker(stepn
0220: 61 6d 65 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 6d  ame, filename, m
0230: 69 6e 73 69 7a 65 2c 20 6d 61 78 73 69 7a 65 29  insize, maxsize)
0240: 20 2d 20 6e 65 67 61 74 69 76 65 20 6d 65 61 6e   - negative mean
0250: 73 20 69 67 6e 6f 72 65 0a 23 20 66 69 6c 65 5f  s ignore.# file_
0260: 73 69 7a 65 5f 63 68 65 63 6b 65 72 28 27 63 72  size_checker('cr
0270: 65 61 74 65 20 64 62 27 2c 27 74 65 73 74 69 6e  eate db','testin
0280: 67 2e 64 62 27 2c 31 30 30 2c 2d 31 29 0a 0a 6e  g.db',100,-1)..n
0290: 75 6d 5f 72 65 63 6f 72 64 73 3d 72 61 6e 64 28  um_records=rand(
02a0: 35 29 20 23 20 30 30 30 30 0a 72 65 63 6f 72 64  5) # 0000.record
02b0: 5f 73 74 65 70 28 22 61 64 64 20 23 7b 6e 75 6d  _step("add #{num
02c0: 5f 72 65 63 6f 72 64 73 7d 22 2c 22 73 74 61 72  _records}","star
02d0: 74 22 2c 22 6e 2f 61 22 29 0a 73 74 61 74 75 73  t","n/a").status
02e0: 3d 66 61 6c 73 65 0a 28 30 2e 2e 6e 75 6d 5f 72  =false.(0..num_r
02f0: 65 63 6f 72 64 73 29 2e 65 61 63 68 20 64 6f 20  ecords).each do 
0300: 7c 69 7c 0a 20 20 72 61 6e 64 73 74 72 69 6e 67  |i|.  randstring
0310: 3d 22 61 3b 6c 73 6b 64 66 6a 61 3b 73 64 66 6a  ="a;lskdfja;sdfj
0320: 3b 61 6c 73 64 66 6a 3b 61 73 6c 66 64 6a 3b 61  ;alsdfj;aslfdj;a
0330: 6c 73 66 6a 61 3b 6c 73 66 64 6a 3b 61 6c 73 66  lsfja;lsfdj;alsf
0340: 6a 61 3b 6c 73 6a 66 64 3b 6c 61 73 66 6a 6c 3b  ja;lsjfd;lasfjl;
0350: 61 73 64 66 6a 61 3b 73 6c 66 6a 3b 61 6c 73 6a  asdfja;slfj;alsj
0360: 66 3b 61 73 6c 6a 66 3b 61 6c 73 6a 66 3b 6c 61  f;asljf;alsjf;la
0370: 73 64 6a 66 3b 6c 61 73 6a 66 3b 6c 61 73 6a 66  sdjf;lasjf;lasjf
0380: 3b 61 6c 73 6a 66 3b 6c 61 73 68 66 6c 6b 61 73  ;alsjf;lashflkas
0390: 68 66 6c 6b 65 72 68 66 6c 6b 64 73 76 6e 6c 61  hflkerhflkdsvnla
03a0: 73 6c 64 68 6c 66 61 6c 64 66 22 0a 20 20 23 20  sldhlfaldf".  # 
03b0: 73 74 61 74 75 73 3d 73 79 73 74 65 6d 20 22 73  status=system "s
03c0: 71 6c 69 74 65 33 20 74 65 73 74 69 6e 67 2e 64  qlite3 testing.d
03d0: 62 20 5c 22 69 6e 73 65 72 74 20 69 6e 74 6f 20  b \"insert into 
03e0: 62 6c 61 68 20 28 6e 61 6d 65 29 20 76 61 6c 75  blah (name) valu
03f0: 65 73 20 28 27 23 7b 72 61 6e 64 73 74 72 69 6e  es ('#{randstrin
0400: 67 7d 27 29 3b 5c 22 22 0a 20 20 73 79 73 74 65  g}');\"".  syste
0410: 6d 20 22 6d 65 67 61 74 65 73 74 20 2d 73 74 65  m "megatest -ste
0420: 70 20 74 65 73 74 69 6e 67 20 3a 73 74 61 74 65  p testing :state
0430: 20 77 72 6f 74 65 5f 6a 75 6e 6b 20 3a 73 74 61   wrote_junk :sta
0440: 74 75 73 20 23 7b 6e 75 6d 5f 72 65 63 6f 72 64  tus #{num_record
0450: 73 7d 22 0a 20 20 73 6c 65 65 70 28 35 29 0a 20  s}".  sleep(5). 
0460: 20 70 75 74 73 20 22 69 3d 23 7b 69 7d 22 0a 65   puts "i=#{i}".e
0470: 6e 64 0a 69 66 20 73 74 61 74 75 73 3d 3d 30 0a  nd.if status==0.
0480: 20 20 73 74 61 74 75 73 3d 27 70 61 73 73 27 0a    status='pass'.
0490: 65 6c 73 65 0a 20 20 73 74 61 74 75 73 3d 27 66  else.  status='f
04a0: 61 69 6c 27 0a 65 6e 64 0a 0a 72 65 63 6f 72 64  ail'.end..record
04b0: 5f 73 74 65 70 28 22 61 64 64 20 23 7b 6e 75 6d  _step("add #{num
04c0: 5f 72 65 63 6f 72 64 73 7d 22 2c 22 65 6e 64 22  _records}","end"
04d0: 2c 73 74 61 74 75 73 29 0a 0a 0a 0a 0a           ,status).....