/ Hex Artifact Content
Login

Artifact 464dc7c7ccb144e8c82ecca429e6d7cd1c96bd6e:


0000: 23 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64  #.#    May you d
0010: 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65  o good and not e
0020: 76 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f  vil..#    May yo
0030: 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65  u find forgivene
0040: 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20  ss for yourself 
0050: 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65  and forgive othe
0060: 72 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  rs..#    May you
0070: 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e   share freely, n
0080: 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65  ever taking more
0090: 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a   than you give..
00a0: 23 0a 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  #.#*************
00b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69  **********.# Thi
00f0: 73 20 66 69 6c 65 20 72 75 6e 73 20 61 6c 6c 20  s file runs all 
0100: 74 65 73 74 73 2e 0a 23 0a 23 20 24 49 64 3a 20  tests..#.# $Id: 
0110: 61 73 79 6e 63 2e 74 65 73 74 2c 76 20 31 2e 37  async.test,v 1.7
0120: 20 32 30 30 36 2f 30 33 2f 31 39 20 31 33 3a 30   2006/03/19 13:0
0130: 30 3a 32 35 20 64 72 68 20 45 78 70 20 24 0a 0a  0:25 drh Exp $..
0140: 0a 69 66 20 7b 5b 63 61 74 63 68 20 7b 73 71 6c  .if {[catch {sql
0150: 69 74 65 33 61 73 79 6e 63 5f 65 6e 61 62 6c 65  ite3async_enable
0160: 7d 5d 7d 20 7b 0a 20 20 23 20 54 68 65 20 61 73  }]} {.  # The as
0170: 79 6e 63 20 6c 6f 67 69 63 20 69 73 20 6e 6f 74  ync logic is not
0180: 20 62 75 69 6c 74 20 69 6e 74 6f 20 74 68 69 73   built into this
0190: 20 73 79 73 74 65 6d 0a 20 20 72 65 74 75 72 6e   system.  return
01a0: 0a 7d 0a 0a 0a 73 65 74 20 74 65 73 74 64 69 72  .}...set testdir
01b0: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24   [file dirname $
01c0: 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74  argv0].source $t
01d0: 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63  estdir/tester.tc
01e0: 6c 0a 72 65 6e 61 6d 65 20 66 69 6e 69 73 68 5f  l.rename finish_
01f0: 74 65 73 74 20 72 65 61 6c 6c 79 5f 66 69 6e 69  test really_fini
0200: 73 68 5f 74 65 73 74 0a 70 72 6f 63 20 66 69 6e  sh_test.proc fin
0210: 69 73 68 5f 74 65 73 74 20 7b 7d 20 7b 7d 0a 73  ish_test {} {}.s
0220: 65 74 20 49 53 51 55 49 43 4b 20 31 0a 0a 73 65  et ISQUICK 1..se
0230: 74 20 49 4e 43 4c 55 44 45 20 7b 0a 20 20 73 65  t INCLUDE {.  se
0240: 6c 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c  lect1.test.  sel
0250: 65 63 74 32 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect2.test.  sele
0260: 63 74 33 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ct3.test.  selec
0270: 74 34 2e 74 65 73 74 0a 20 20 69 6e 73 65 72 74  t4.test.  insert
0280: 2e 74 65 73 74 0a 20 20 69 6e 73 65 72 74 32 2e  .test.  insert2.
0290: 74 65 73 74 0a 20 20 69 6e 73 65 72 74 33 2e 74  test.  insert3.t
02a0: 65 73 74 0a 20 20 74 72 61 6e 73 2e 74 65 73 74  est.  trans.test
02b0: 0a 7d 0a 23 20 73 65 74 20 49 4e 43 4c 55 44 45  .}.# set INCLUDE
02c0: 20 7b 73 65 6c 65 63 74 34 2e 74 65 73 74 7d 0a   {select4.test}.
02d0: 0a 23 20 45 6e 61 62 6c 65 20 61 73 79 6e 63 68  .# Enable asynch
02e0: 72 6f 6e 6f 75 73 20 49 4f 2e 0a 73 71 6c 69 74  ronous IO..sqlit
02f0: 65 33 61 73 79 6e 63 5f 65 6e 61 62 6c 65 20 31  e3async_enable 1
0300: 0a 0a 72 65 6e 61 6d 65 20 64 6f 5f 74 65 73 74  ..rename do_test
0310: 20 72 65 61 6c 6c 79 5f 64 6f 5f 74 65 73 74 0a   really_do_test.
0320: 70 72 6f 63 20 64 6f 5f 74 65 73 74 20 7b 6e 61  proc do_test {na
0330: 6d 65 20 61 72 67 73 7d 20 7b 0a 20 20 75 70 6c  me args} {.  upl
0340: 65 76 65 6c 20 72 65 61 6c 6c 79 5f 64 6f 5f 74  evel really_do_t
0350: 65 73 74 20 61 73 79 6e 63 5f 69 6f 2d 24 6e 61  est async_io-$na
0360: 6d 65 20 24 61 72 67 73 0a 20 20 73 71 6c 69 74  me $args.  sqlit
0370: 65 33 61 73 79 6e 63 5f 68 61 6c 74 20 69 64 6c  e3async_halt idl
0380: 65 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63  e.  sqlite3async
0390: 5f 73 74 61 72 74 0a 20 20 73 71 6c 69 74 65 33  _start.  sqlite3
03a0: 61 73 79 6e 63 5f 77 61 69 74 0a 7d 0a 0a 66 6f  async_wait.}..fo
03b0: 72 65 61 63 68 20 74 65 73 74 66 69 6c 65 20 5b  reach testfile [
03c0: 6c 73 6f 72 74 20 2d 64 69 63 74 69 6f 6e 61 72  lsort -dictionar
03d0: 79 20 5b 67 6c 6f 62 20 24 74 65 73 74 64 69 72  y [glob $testdir
03e0: 2f 2a 2e 74 65 73 74 5d 5d 20 7b 0a 20 20 73 65  /*.test]] {.  se
03f0: 74 20 74 61 69 6c 20 5b 66 69 6c 65 20 74 61 69  t tail [file tai
0400: 6c 20 24 74 65 73 74 66 69 6c 65 5d 0a 20 20 69  l $testfile].  i
0410: 66 20 7b 5b 6c 73 65 61 72 63 68 20 2d 65 78 61  f {[lsearch -exa
0420: 63 74 20 24 49 4e 43 4c 55 44 45 20 24 74 61 69  ct $INCLUDE $tai
0430: 6c 5d 3c 30 7d 20 63 6f 6e 74 69 6e 75 65 0a 20  l]<0} continue. 
0440: 20 73 6f 75 72 63 65 20 24 74 65 73 74 66 69 6c   source $testfil
0450: 65 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  e.  catch {db cl
0460: 6f 73 65 7d 0a 7d 0a 0a 23 20 46 6c 75 73 68 20  ose}.}..# Flush 
0470: 74 68 65 20 77 72 69 74 65 2d 71 75 65 75 65 20  the write-queue 
0480: 61 6e 64 20 64 69 73 61 62 6c 65 20 61 73 79 6e  and disable asyn
0490: 63 68 72 6f 6e 6f 75 73 20 49 4f 2e 20 54 68 69  chronous IO. Thi
04a0: 73 20 73 68 6f 75 6c 64 20 65 6e 73 75 72 65 0a  s should ensure.
04b0: 23 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 65 64 20  # all allocated 
04c0: 6d 65 6d 6f 72 79 20 69 73 20 63 6c 65 61 6e 65  memory is cleane
04d0: 64 20 75 70 2e 0a 73 65 74 20 73 71 6c 69 74 65  d up..set sqlite
04e0: 33 61 73 79 6e 63 5f 74 72 61 63 65 20 31 0a 73  3async_trace 1.s
04f0: 71 6c 69 74 65 33 61 73 79 6e 63 5f 68 61 6c 74  qlite3async_halt
0500: 20 69 64 6c 65 0a 73 71 6c 69 74 65 33 61 73 79   idle.sqlite3asy
0510: 6e 63 5f 73 74 61 72 74 0a 73 71 6c 69 74 65 33  nc_start.sqlite3
0520: 61 73 79 6e 63 5f 77 61 69 74 0a 73 71 6c 69 74  async_wait.sqlit
0530: 65 33 61 73 79 6e 63 5f 65 6e 61 62 6c 65 20 30  e3async_enable 0
0540: 0a 73 65 74 20 73 71 6c 69 74 65 33 61 73 79 6e  .set sqlite3asyn
0550: 63 5f 74 72 61 63 65 20 30 0a 0a 72 65 61 6c 6c  c_trace 0..reall
0560: 79 5f 66 69 6e 69 73 68 5f 74 65 73 74 0a 72 65  y_finish_test.re
0570: 6e 61 6d 65 20 72 65 61 6c 6c 79 5f 64 6f 5f 74  name really_do_t
0580: 65 73 74 20 64 6f 5f 74 65 73 74 0a 72 65 6e 61  est do_test.rena
0590: 6d 65 20 72 65 61 6c 6c 79 5f 66 69 6e 69 73 68  me really_finish
05a0: 5f 74 65 73 74 20 66 69 6e 69 73 68 5f 74 65 73  _test finish_tes
05b0: 74 0a                                            t.