123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- # 2009 April 25
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- #
- # $Id: async4.test,v 1.4 2009/06/05 17:09:12 drh Exp $
- set testdir [file dirname $argv0]
- source $testdir/tester.tcl
- # Do not use a codec for tests in this file, as the database file is
- # manipulated directly using tcl scripts (using the [hexio_write] command).
- #
- do_not_use_codec
- # These tests only work for Tcl version 8.5 and later on Windows (for now)
- #
- if {$tcl_platform(platform)=="windows"} {
- scan $::tcl_version %f vx
- if {$vx<8.5} {
- finish_test
- return
- }
- }
- if {[info commands sqlite3async_initialize] eq ""} {
- # The async logic is not built into this system
- finish_test
- return
- }
- db close
- # Test layout:
- #
- # async4.1.*: Test the lockfiles parameter.
- # async4.2.*: Test the delay parameter.
- do_test async4.1.1 {
- sqlite3async_initialize {} 0
- sqlite3async_control lockfiles
- } {1}
- do_test async4.1.2 {
- sqlite3async_control lockfiles false
- } {0}
- do_test async4.1.3 {
- sqlite3async_control lockfiles
- } {0}
- do_test async4.1.4 {
- sqlite3async_control lockfiles true
- } {1}
- do_test async4.1.5 {
- sqlite3 db test.db -vfs sqlite3async
- execsql { CREATE TABLE t1(a, b, c) }
- } {}
- do_test async4.1.6 {
- list [file exists test.db] [file size test.db]
- } {1 0}
- do_test async4.1.7 {
- sqlite3 db2 test.db
- catchsql { CREATE TABLE t2(a, b, c) } db2
- } {1 {database is locked}}
- do_test async4.1.8 {
- sqlite3async_control halt idle
- sqlite3async_start
- sqlite3async_wait
- } {}
- do_test async4.1.9 {
- catchsql { CREATE TABLE t2(a, b, c) } db2
- } {0 {}}
- do_test async4.1.10 {
- list [catch {sqlite3async_control lockfiles false} msg] $msg
- } {1 SQLITE_MISUSE}
- do_test async4.1.11 {
- db close
- list [catch {sqlite3async_control lockfiles false} msg] $msg
- } {1 SQLITE_MISUSE}
- do_test async4.1.12 {
- sqlite3async_start
- sqlite3async_wait
- sqlite3async_control lockfiles false
- } {0}
- do_test async4.1.13 {
- sqlite3 db test.db -vfs sqlite3async
- execsql { CREATE TABLE t3(a, b, c) } db
- } {}
- do_test async4.1.14 {
- execsql {
- CREATE INDEX i1 ON t2(a);
- CREATE INDEX i2 ON t1(a);
- } db2
- } {}
- do_test async4.1.15 {
- sqlite3async_start
- sqlite3async_wait
- hexio_write test.db 28 00000000
- execsql { pragma integrity_check } db2
- } {{*** in database main ***
- Page 5 is never used}}
- do_test async4.1.16 {
- db close
- db2 close
- sqlite3async_start
- sqlite3async_wait
- } {}
- do_test async4.1.17 {
- sqlite3async_control lockfiles true
- } {1}
- do_test async4.2.1 {
- sqlite3async_control delay
- } {0}
- do_test async4.2.2 {
- sqlite3async_control delay 23
- } {23}
- do_test async4.2.3 {
- sqlite3async_control delay
- } {23}
- do_test async4.2.4 {
- sqlite3async_control delay 0
- } {0}
- do_test async4.2.5 {
- sqlite3 db test.db -vfs sqlite3async
- execsql { CREATE TABLE t4(a, b) }
- set T1 [lindex [time {
- sqlite3async_start
- sqlite3async_wait
- }] 0]
- sqlite3async_control delay 100
- execsql { CREATE TABLE t5(a, b) }
- set T2 [lindex [time {
- sqlite3async_start
- sqlite3async_wait
- }] 0]
- expr {($T1+1000000) < $T2}
- } {1}
- do_test async4.2.6 {
- sqlite3async_control delay 0
- execsql { CREATE TABLE t6(a, b) }
- set T1 [lindex [time {
- sqlite3async_start
- sqlite3async_wait
- }] 0]
- expr {($T1+1000000) < $T2}
- } {1}
- do_test async4.2.7 {
- list [catch { sqlite3async_control delay -1 } msg] $msg
- } {1 SQLITE_MISUSE}
- do_test async4.2.8 {
- db close
- sqlite3async_start
- sqlite3async_wait
- } {}
- finish_test
|