Annotation of embedaddon/sqlite3/test/async4.test, revision 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>