Annotation of embedaddon/sqlite3/test/async4.test, revision 1.1.1.1

1.1       misho       1: # 2009 April 25
                      2: #
                      3: # The author disclaims copyright to this source code.  In place of
                      4: # a legal notice, here is a blessing:
                      5: #
                      6: #    May you do good and not evil.
                      7: #    May you find forgiveness for yourself and forgive others.
                      8: #    May you share freely, never taking more than you give.
                      9: #
                     10: #***********************************************************************
                     11: #
                     12: # $Id: async4.test,v 1.4 2009/06/05 17:09:12 drh Exp $
                     13: 
                     14: set testdir [file dirname $argv0]
                     15: source $testdir/tester.tcl
                     16: 
                     17: # Do not use a codec for tests in this file, as the database file is
                     18: # manipulated directly using tcl scripts (using the [hexio_write] command).
                     19: #
                     20: do_not_use_codec
                     21: 
                     22: # These tests only work for Tcl version 8.5 and later on Windows (for now)
                     23: #
                     24: if {$tcl_platform(platform)=="windows"} {
                     25:   scan $::tcl_version %f vx
                     26:   if {$vx<8.5} {
                     27:     finish_test
                     28:     return
                     29:   }
                     30: }
                     31: 
                     32: if {[info commands sqlite3async_initialize] eq ""} {
                     33:   # The async logic is not built into this system
                     34:   finish_test
                     35:   return
                     36: }
                     37: db close
                     38: 
                     39: # Test layout:
                     40: #
                     41: #   async4.1.*: Test the lockfiles parameter.
                     42: #   async4.2.*: Test the delay parameter.
                     43: 
                     44: do_test async4.1.1 {
                     45:   sqlite3async_initialize {} 0
                     46:   sqlite3async_control lockfiles
                     47: } {1}
                     48: do_test async4.1.2 {
                     49:   sqlite3async_control lockfiles false
                     50: } {0}
                     51: do_test async4.1.3 {
                     52:   sqlite3async_control lockfiles
                     53: } {0}
                     54: do_test async4.1.4 {
                     55:   sqlite3async_control lockfiles true
                     56: } {1}
                     57: 
                     58: do_test async4.1.5 {
                     59:   sqlite3 db test.db -vfs sqlite3async
                     60:   execsql { CREATE TABLE t1(a, b, c) }
                     61: } {}
                     62: do_test async4.1.6 {
                     63:   list [file exists test.db] [file size test.db]
                     64: } {1 0}
                     65: do_test async4.1.7 {
                     66:   sqlite3 db2 test.db
                     67:   catchsql { CREATE TABLE t2(a, b, c) } db2
                     68: } {1 {database is locked}}
                     69: do_test async4.1.8 {
                     70:   sqlite3async_control halt idle
                     71:   sqlite3async_start
                     72:   sqlite3async_wait
                     73: } {}
                     74: do_test async4.1.9 {
                     75:   catchsql { CREATE TABLE t2(a, b, c) } db2
                     76: } {0 {}}
                     77: do_test async4.1.10 {
                     78:   list [catch {sqlite3async_control lockfiles false} msg] $msg
                     79: } {1 SQLITE_MISUSE}
                     80: do_test async4.1.11 {
                     81:   db close
                     82:   list [catch {sqlite3async_control lockfiles false} msg] $msg
                     83: } {1 SQLITE_MISUSE}
                     84: do_test async4.1.12 {
                     85:   sqlite3async_start
                     86:   sqlite3async_wait
                     87:   sqlite3async_control lockfiles false
                     88: } {0}
                     89: do_test async4.1.13 {
                     90:   sqlite3 db test.db -vfs sqlite3async
                     91:   execsql { CREATE TABLE t3(a, b, c) } db
                     92: } {}
                     93: do_test async4.1.14 {
                     94:   execsql { 
                     95:     CREATE INDEX i1 ON t2(a);
                     96:     CREATE INDEX i2 ON t1(a);
                     97:   } db2
                     98: } {}
                     99: do_test async4.1.15 {
                    100:   sqlite3async_start
                    101:   sqlite3async_wait
                    102:   hexio_write test.db 28 00000000
                    103:   execsql { pragma integrity_check } db2
                    104: } {{*** in database main ***
                    105: Page 5 is never used}}
                    106: do_test async4.1.16 {
                    107:   db close
                    108:   db2 close
                    109:   sqlite3async_start
                    110:   sqlite3async_wait
                    111: } {}
                    112: do_test async4.1.17 {
                    113:   sqlite3async_control lockfiles true
                    114: } {1}
                    115: 
                    116: do_test async4.2.1 {
                    117:   sqlite3async_control delay
                    118: } {0}
                    119: do_test async4.2.2 {
                    120:   sqlite3async_control delay 23
                    121: } {23}
                    122: do_test async4.2.3 {
                    123:   sqlite3async_control delay
                    124: } {23}
                    125: do_test async4.2.4 {
                    126:   sqlite3async_control delay 0
                    127: } {0}
                    128: do_test async4.2.5 {
                    129:   sqlite3 db test.db -vfs sqlite3async
                    130: 
                    131:   execsql { CREATE TABLE t4(a, b) }
                    132:   set T1 [lindex [time {
                    133:     sqlite3async_start
                    134:     sqlite3async_wait
                    135:   }] 0]
                    136: 
                    137:   sqlite3async_control delay 100
                    138:   execsql { CREATE TABLE t5(a, b) }
                    139:   set T2 [lindex [time {
                    140:     sqlite3async_start
                    141:     sqlite3async_wait
                    142:   }] 0]
                    143: 
                    144:   expr {($T1+1000000) < $T2}
                    145: } {1}
                    146: 
                    147: do_test async4.2.6 {
                    148:   sqlite3async_control delay 0
                    149:   execsql { CREATE TABLE t6(a, b) }
                    150:   set T1 [lindex [time {
                    151:     sqlite3async_start
                    152:     sqlite3async_wait
                    153:   }] 0]
                    154: 
                    155:   expr {($T1+1000000) < $T2}
                    156: } {1}
                    157: 
                    158: do_test async4.2.7 {
                    159:   list [catch { sqlite3async_control delay -1 } msg] $msg
                    160: } {1 SQLITE_MISUSE}
                    161: 
                    162: do_test async4.2.8 {
                    163:   db close
                    164:   sqlite3async_start
                    165:   sqlite3async_wait
                    166: } {}
                    167: 
                    168: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>