Artifact 1787e3952128aa10238bf39945126de7ca23685a:
- File
test/async4.test
— part of check-in
[85dd51a7]
at
2010-06-22 13:46:44
on branch trunk
— Some changes to test scripts related to codec enabled versions of sqlite.
(user:
dan
size: 3716)
[more...]
0000: 23 20 32 30 30 39 20 41 70 72 69 6c 20 32 35 0a # 2009 April 25.
0010: 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 #.# The author d
0020: 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 isclaims copyrig
0030: 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 ht to this sourc
0040: 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 e code. In plac
0050: 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e e of.# a legal n
0060: 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 otice, here is a
0070: 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 blessing:.#.#
0080: 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f May you do goo
0090: 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a d and not evil..
00a0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e # May you fin
00b0: 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f d forgiveness fo
00c0: 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 r yourself and f
00d0: 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 orgive others..#
00e0: 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 May you shar
00f0: 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 e freely, never
0100: 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e taking more than
0110: 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a you give..#.#**
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0160: 2a 2a 2a 2a 2a 0a 23 0a 23 20 24 49 64 3a 20 61 *****.#.# $Id: a
0170: 73 79 6e 63 34 2e 74 65 73 74 2c 76 20 31 2e 34 sync4.test,v 1.4
0180: 20 32 30 30 39 2f 30 36 2f 30 35 20 31 37 3a 30 2009/06/05 17:0
0190: 39 3a 31 32 20 64 72 68 20 45 78 70 20 24 0a 0a 9:12 drh Exp $..
01a0: 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c set testdir [fil
01b0: 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 e dirname $argv0
01c0: 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 ].source $testdi
01d0: 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 23 20 r/tester.tcl..#
01e0: 44 6f 20 6e 6f 74 20 75 73 65 20 61 20 63 6f 64 Do not use a cod
01f0: 65 63 20 66 6f 72 20 74 65 73 74 73 20 69 6e 20 ec for tests in
0200: 74 68 69 73 20 66 69 6c 65 2c 20 61 73 20 74 68 this file, as th
0210: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 e database file
0220: 69 73 0a 23 20 6d 61 6e 69 70 75 6c 61 74 65 64 is.# manipulated
0230: 20 64 69 72 65 63 74 6c 79 20 75 73 69 6e 67 20 directly using
0240: 74 63 6c 20 73 63 72 69 70 74 73 20 28 75 73 69 tcl scripts (usi
0250: 6e 67 20 74 68 65 20 5b 68 65 78 69 6f 5f 77 72 ng the [hexio_wr
0260: 69 74 65 5d 20 63 6f 6d 6d 61 6e 64 29 2e 0a 23 ite] command)..#
0270: 0a 64 6f 5f 6e 6f 74 5f 75 73 65 5f 63 6f 64 65 .do_not_use_code
0280: 63 0a 0a 23 20 54 68 65 73 65 20 74 65 73 74 73 c..# These tests
0290: 20 6f 6e 6c 79 20 77 6f 72 6b 20 66 6f 72 20 54 only work for T
02a0: 63 6c 20 76 65 72 73 69 6f 6e 20 38 2e 35 20 61 cl version 8.5 a
02b0: 6e 64 20 6c 61 74 65 72 20 6f 6e 20 57 69 6e 64 nd later on Wind
02c0: 6f 77 73 20 28 66 6f 72 20 6e 6f 77 29 0a 23 0a ows (for now).#.
02d0: 69 66 20 7b 24 74 63 6c 5f 70 6c 61 74 66 6f 72 if {$tcl_platfor
02e0: 6d 28 70 6c 61 74 66 6f 72 6d 29 3d 3d 22 77 69 m(platform)=="wi
02f0: 6e 64 6f 77 73 22 7d 20 7b 0a 20 20 73 63 61 6e ndows"} {. scan
0300: 20 24 3a 3a 74 63 6c 5f 76 65 72 73 69 6f 6e 20 $::tcl_version
0310: 25 66 20 76 78 0a 20 20 69 66 20 7b 24 76 78 3c %f vx. if {$vx<
0320: 38 2e 35 7d 20 7b 0a 20 20 20 20 66 69 6e 69 73 8.5} {. finis
0330: 68 5f 74 65 73 74 0a 20 20 20 20 72 65 74 75 72 h_test. retur
0340: 6e 0a 20 20 7d 0a 7d 0a 0a 69 66 20 7b 5b 69 6e n. }.}..if {[in
0350: 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 73 71 6c 69 fo commands sqli
0360: 74 65 33 61 73 79 6e 63 5f 69 6e 69 74 69 61 6c te3async_initial
0370: 69 7a 65 5d 20 65 71 20 22 22 7d 20 7b 0a 20 20 ize] eq ""} {.
0380: 23 20 54 68 65 20 61 73 79 6e 63 20 6c 6f 67 69 # The async logi
0390: 63 20 69 73 20 6e 6f 74 20 62 75 69 6c 74 20 69 c is not built i
03a0: 6e 74 6f 20 74 68 69 73 20 73 79 73 74 65 6d 0a nto this system.
03b0: 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 finish_test.
03c0: 72 65 74 75 72 6e 0a 7d 0a 64 62 20 63 6c 6f 73 return.}.db clos
03d0: 65 0a 0a 23 20 54 65 73 74 20 6c 61 79 6f 75 74 e..# Test layout
03e0: 3a 0a 23 0a 23 20 20 20 61 73 79 6e 63 34 2e 31 :.#.# async4.1
03f0: 2e 2a 3a 20 54 65 73 74 20 74 68 65 20 6c 6f 63 .*: Test the loc
0400: 6b 66 69 6c 65 73 20 70 61 72 61 6d 65 74 65 72 kfiles parameter
0410: 2e 0a 23 20 20 20 61 73 79 6e 63 34 2e 32 2e 2a ..# async4.2.*
0420: 3a 20 54 65 73 74 20 74 68 65 20 64 65 6c 61 79 : Test the delay
0430: 20 70 61 72 61 6d 65 74 65 72 2e 0a 0a 64 6f 5f parameter...do_
0440: 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 20 test async4.1.1
0450: 7b 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 {. sqlite3async
0460: 5f 69 6e 69 74 69 61 6c 69 7a 65 20 7b 7d 20 30 _initialize {} 0
0470: 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f . sqlite3async_
0480: 63 6f 6e 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 control lockfile
0490: 73 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 s.} {1}.do_test
04a0: 61 73 79 6e 63 34 2e 31 2e 32 20 7b 0a 20 20 73 async4.1.2 {. s
04b0: 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74 qlite3async_cont
04c0: 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 73 20 66 61 rol lockfiles fa
04d0: 6c 73 65 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 lse.} {0}.do_tes
04e0: 74 20 61 73 79 6e 63 34 2e 31 2e 33 20 7b 0a 20 t async4.1.3 {.
04f0: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f sqlite3async_co
0500: 6e 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 73 0a ntrol lockfiles.
0510: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 61 73 } {0}.do_test as
0520: 79 6e 63 34 2e 31 2e 34 20 7b 0a 20 20 73 71 6c ync4.1.4 {. sql
0530: 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f ite3async_contro
0540: 6c 20 6c 6f 63 6b 66 69 6c 65 73 20 74 72 75 65 l lockfiles true
0550: 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74 20 .} {1}..do_test
0560: 61 73 79 6e 63 34 2e 31 2e 35 20 7b 0a 20 20 73 async4.1.5 {. s
0570: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 qlite3 db test.d
0580: 62 20 2d 76 66 73 20 73 71 6c 69 74 65 33 61 73 b -vfs sqlite3as
0590: 79 6e 63 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 ync. execsql {
05a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 CREATE TABLE t1(
05b0: 61 2c 20 62 2c 20 63 29 20 7d 0a 7d 20 7b 7d 0a a, b, c) }.} {}.
05c0: 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 do_test async4.1
05d0: 2e 36 20 7b 0a 20 20 6c 69 73 74 20 5b 66 69 6c .6 {. list [fil
05e0: 65 20 65 78 69 73 74 73 20 74 65 73 74 2e 64 62 e exists test.db
05f0: 5d 20 5b 66 69 6c 65 20 73 69 7a 65 20 74 65 73 ] [file size tes
0600: 74 2e 64 62 5d 0a 7d 20 7b 31 20 30 7d 0a 64 6f t.db].} {1 0}.do
0610: 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 37 _test async4.1.7
0620: 20 7b 0a 20 20 73 71 6c 69 74 65 33 20 64 62 32 {. sqlite3 db2
0630: 20 74 65 73 74 2e 64 62 0a 20 20 63 61 74 63 68 test.db. catch
0640: 73 71 6c 20 7b 20 43 52 45 41 54 45 20 54 41 42 sql { CREATE TAB
0650: 4c 45 20 74 32 28 61 2c 20 62 2c 20 63 29 20 7d LE t2(a, b, c) }
0660: 20 64 62 32 0a 7d 20 7b 31 20 7b 64 61 74 61 62 db2.} {1 {datab
0670: 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 7d 7d 0a ase is locked}}.
0680: 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 do_test async4.1
0690: 2e 38 20 7b 0a 20 20 73 71 6c 69 74 65 33 61 73 .8 {. sqlite3as
06a0: 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 68 61 6c 74 ync_control halt
06b0: 20 69 64 6c 65 0a 20 20 73 71 6c 69 74 65 33 61 idle. sqlite3a
06c0: 73 79 6e 63 5f 73 74 61 72 74 0a 20 20 73 71 6c sync_start. sql
06d0: 69 74 65 33 61 73 79 6e 63 5f 77 61 69 74 0a 7d ite3async_wait.}
06e0: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e {}.do_test asyn
06f0: 63 34 2e 31 2e 39 20 7b 0a 20 20 63 61 74 63 68 c4.1.9 {. catch
0700: 73 71 6c 20 7b 20 43 52 45 41 54 45 20 54 41 42 sql { CREATE TAB
0710: 4c 45 20 74 32 28 61 2c 20 62 2c 20 63 29 20 7d LE t2(a, b, c) }
0720: 20 64 62 32 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f db2.} {0 {}}.do
0730: 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 _test async4.1.1
0740: 30 20 7b 0a 20 20 6c 69 73 74 20 5b 63 61 74 63 0 {. list [catc
0750: 68 20 7b 73 71 6c 69 74 65 33 61 73 79 6e 63 5f h {sqlite3async_
0760: 63 6f 6e 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 control lockfile
0770: 73 20 66 61 6c 73 65 7d 20 6d 73 67 5d 20 24 6d s false} msg] $m
0780: 73 67 0a 7d 20 7b 31 20 53 51 4c 49 54 45 5f 4d sg.} {1 SQLITE_M
0790: 49 53 55 53 45 7d 0a 64 6f 5f 74 65 73 74 20 61 ISUSE}.do_test a
07a0: 73 79 6e 63 34 2e 31 2e 31 31 20 7b 0a 20 20 64 sync4.1.11 {. d
07b0: 62 20 63 6c 6f 73 65 0a 20 20 6c 69 73 74 20 5b b close. list [
07c0: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 61 73 catch {sqlite3as
07d0: 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 6c 6f 63 6b ync_control lock
07e0: 66 69 6c 65 73 20 66 61 6c 73 65 7d 20 6d 73 67 files false} msg
07f0: 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 53 51 4c 49 ] $msg.} {1 SQLI
0800: 54 45 5f 4d 49 53 55 53 45 7d 0a 64 6f 5f 74 65 TE_MISUSE}.do_te
0810: 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 32 20 7b st async4.1.12 {
0820: 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f . sqlite3async_
0830: 73 74 61 72 74 0a 20 20 73 71 6c 69 74 65 33 61 start. sqlite3a
0840: 73 79 6e 63 5f 77 61 69 74 0a 20 20 73 71 6c 69 sync_wait. sqli
0850: 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c te3async_control
0860: 20 6c 6f 63 6b 66 69 6c 65 73 20 66 61 6c 73 65 lockfiles false
0870: 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 61 .} {0}.do_test a
0880: 73 79 6e 63 34 2e 31 2e 31 33 20 7b 0a 20 20 73 sync4.1.13 {. s
0890: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 qlite3 db test.d
08a0: 62 20 2d 76 66 73 20 73 71 6c 69 74 65 33 61 73 b -vfs sqlite3as
08b0: 79 6e 63 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 ync. execsql {
08c0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 CREATE TABLE t3(
08d0: 61 2c 20 62 2c 20 63 29 20 7d 20 64 62 0a 7d 20 a, b, c) } db.}
08e0: 7b 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 {}.do_test async
08f0: 34 2e 31 2e 31 34 20 7b 0a 20 20 65 78 65 63 73 4.1.14 {. execs
0900: 71 6c 20 7b 20 0a 20 20 20 20 43 52 45 41 54 45 ql { . CREATE
0910: 20 49 4e 44 45 58 20 69 31 20 4f 4e 20 74 32 28 INDEX i1 ON t2(
0920: 61 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 a);. CREATE I
0930: 4e 44 45 58 20 69 32 20 4f 4e 20 74 31 28 61 29 NDEX i2 ON t1(a)
0940: 3b 0a 20 20 7d 20 64 62 32 0a 7d 20 7b 7d 0a 64 ;. } db2.} {}.d
0950: 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e o_test async4.1.
0960: 31 35 20 7b 0a 20 20 73 71 6c 69 74 65 33 61 73 15 {. sqlite3as
0970: 79 6e 63 5f 73 74 61 72 74 0a 20 20 73 71 6c 69 ync_start. sqli
0980: 74 65 33 61 73 79 6e 63 5f 77 61 69 74 0a 20 20 te3async_wait.
0990: 68 65 78 69 6f 5f 77 72 69 74 65 20 74 65 73 74 hexio_write test
09a0: 2e 64 62 20 32 38 20 30 30 30 30 30 30 30 30 0a .db 28 00000000.
09b0: 20 20 65 78 65 63 73 71 6c 20 7b 20 70 72 61 67 execsql { prag
09c0: 6d 61 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 ma integrity_che
09d0: 63 6b 20 7d 20 64 62 32 0a 7d 20 7b 7b 2a 2a 2a ck } db2.} {{***
09e0: 20 69 6e 20 64 61 74 61 62 61 73 65 20 6d 61 69 in database mai
09f0: 6e 20 2a 2a 2a 0a 50 61 67 65 20 35 20 69 73 20 n ***.Page 5 is
0a00: 6e 65 76 65 72 20 75 73 65 64 7d 7d 0a 64 6f 5f never used}}.do_
0a10: 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 36 test async4.1.16
0a20: 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 {. db close.
0a30: 64 62 32 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 db2 close. sqli
0a40: 74 65 33 61 73 79 6e 63 5f 73 74 61 72 74 0a 20 te3async_start.
0a50: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 77 61 sqlite3async_wa
0a60: 69 74 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 it.} {}.do_test
0a70: 61 73 79 6e 63 34 2e 31 2e 31 37 20 7b 0a 20 20 async4.1.17 {.
0a80: 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e sqlite3async_con
0a90: 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 73 20 74 trol lockfiles t
0aa0: 72 75 65 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 rue.} {1}..do_te
0ab0: 73 74 20 61 73 79 6e 63 34 2e 32 2e 31 20 7b 0a st async4.2.1 {.
0ac0: 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 sqlite3async_c
0ad0: 6f 6e 74 72 6f 6c 20 64 65 6c 61 79 0a 7d 20 7b ontrol delay.} {
0ae0: 30 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 0}.do_test async
0af0: 34 2e 32 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 4.2.2 {. sqlite
0b00: 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 64 3async_control d
0b10: 65 6c 61 79 20 32 33 0a 7d 20 7b 32 33 7d 0a 64 elay 23.} {23}.d
0b20: 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 32 2e o_test async4.2.
0b30: 33 20 7b 0a 20 20 73 71 6c 69 74 65 33 61 73 79 3 {. sqlite3asy
0b40: 6e 63 5f 63 6f 6e 74 72 6f 6c 20 64 65 6c 61 79 nc_control delay
0b50: 0a 7d 20 7b 32 33 7d 0a 64 6f 5f 74 65 73 74 20 .} {23}.do_test
0b60: 61 73 79 6e 63 34 2e 32 2e 34 20 7b 0a 20 20 73 async4.2.4 {. s
0b70: 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74 qlite3async_cont
0b80: 72 6f 6c 20 64 65 6c 61 79 20 30 0a 7d 20 7b 30 rol delay 0.} {0
0b90: 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 }.do_test async4
0ba0: 2e 32 2e 35 20 7b 0a 20 20 73 71 6c 69 74 65 33 .2.5 {. sqlite3
0bb0: 20 64 62 20 74 65 73 74 2e 64 62 20 2d 76 66 73 db test.db -vfs
0bc0: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 0a 0a 20 sqlite3async..
0bd0: 20 65 78 65 63 73 71 6c 20 7b 20 43 52 45 41 54 execsql { CREAT
0be0: 45 20 54 41 42 4c 45 20 74 34 28 61 2c 20 62 29 E TABLE t4(a, b)
0bf0: 20 7d 0a 20 20 73 65 74 20 54 31 20 5b 6c 69 6e }. set T1 [lin
0c00: 64 65 78 20 5b 74 69 6d 65 20 7b 0a 20 20 20 20 dex [time {.
0c10: 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 73 74 61 sqlite3async_sta
0c20: 72 74 0a 20 20 20 20 73 71 6c 69 74 65 33 61 73 rt. sqlite3as
0c30: 79 6e 63 5f 77 61 69 74 0a 20 20 7d 5d 20 30 5d ync_wait. }] 0]
0c40: 0a 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 .. sqlite3async
0c50: 5f 63 6f 6e 74 72 6f 6c 20 64 65 6c 61 79 20 31 _control delay 1
0c60: 30 30 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 43 00. execsql { C
0c70: 52 45 41 54 45 20 54 41 42 4c 45 20 74 35 28 61 REATE TABLE t5(a
0c80: 2c 20 62 29 20 7d 0a 20 20 73 65 74 20 54 32 20 , b) }. set T2
0c90: 5b 6c 69 6e 64 65 78 20 5b 74 69 6d 65 20 7b 0a [lindex [time {.
0ca0: 20 20 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 sqlite3async
0cb0: 5f 73 74 61 72 74 0a 20 20 20 20 73 71 6c 69 74 _start. sqlit
0cc0: 65 33 61 73 79 6e 63 5f 77 61 69 74 0a 20 20 7d e3async_wait. }
0cd0: 5d 20 30 5d 0a 0a 20 20 65 78 70 72 20 7b 28 24 ] 0].. expr {($
0ce0: 54 31 2b 31 30 30 30 30 30 30 29 20 3c 20 24 54 T1+1000000) < $T
0cf0: 32 7d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73 2}.} {1}..do_tes
0d00: 74 20 61 73 79 6e 63 34 2e 32 2e 36 20 7b 0a 20 t async4.2.6 {.
0d10: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f sqlite3async_co
0d20: 6e 74 72 6f 6c 20 64 65 6c 61 79 20 30 0a 20 20 ntrol delay 0.
0d30: 65 78 65 63 73 71 6c 20 7b 20 43 52 45 41 54 45 execsql { CREATE
0d40: 20 54 41 42 4c 45 20 74 36 28 61 2c 20 62 29 20 TABLE t6(a, b)
0d50: 7d 0a 20 20 73 65 74 20 54 31 20 5b 6c 69 6e 64 }. set T1 [lind
0d60: 65 78 20 5b 74 69 6d 65 20 7b 0a 20 20 20 20 73 ex [time {. s
0d70: 71 6c 69 74 65 33 61 73 79 6e 63 5f 73 74 61 72 qlite3async_star
0d80: 74 0a 20 20 20 20 73 71 6c 69 74 65 33 61 73 79 t. sqlite3asy
0d90: 6e 63 5f 77 61 69 74 0a 20 20 7d 5d 20 30 5d 0a nc_wait. }] 0].
0da0: 0a 20 20 65 78 70 72 20 7b 28 24 54 31 2b 31 30 . expr {($T1+10
0db0: 30 30 30 30 30 29 20 3c 20 24 54 32 7d 0a 7d 20 00000) < $T2}.}
0dc0: 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74 20 61 73 79 {1}..do_test asy
0dd0: 6e 63 34 2e 32 2e 37 20 7b 0a 20 20 6c 69 73 74 nc4.2.7 {. list
0de0: 20 5b 63 61 74 63 68 20 7b 20 73 71 6c 69 74 65 [catch { sqlite
0df0: 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 64 3async_control d
0e00: 65 6c 61 79 20 2d 31 20 7d 20 6d 73 67 5d 20 24 elay -1 } msg] $
0e10: 6d 73 67 0a 7d 20 7b 31 20 53 51 4c 49 54 45 5f msg.} {1 SQLITE_
0e20: 4d 49 53 55 53 45 7d 0a 0a 64 6f 5f 74 65 73 74 MISUSE}..do_test
0e30: 20 61 73 79 6e 63 34 2e 32 2e 38 20 7b 0a 20 20 async4.2.8 {.
0e40: 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74 db close. sqlit
0e50: 65 33 61 73 79 6e 63 5f 73 74 61 72 74 0a 20 20 e3async_start.
0e60: 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 77 61 69 sqlite3async_wai
0e70: 74 0a 7d 20 7b 7d 0a 0a 66 69 6e 69 73 68 5f 74 t.} {}..finish_t
0e80: 65 73 74 0a est.