1 # 2005 july 8 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 # This file test the busy handler 12 # 13 # $Id: busy.test,v 1.3 2008/03/15 02:09:22 drh Exp $ 14 15 16 set testdir [file dirname $argv0] 17 source $testdir/tester.tcl 18 19 do_test busy-1.1 { 20 sqlite3 db2 test.db 21 execsql { 22 CREATE TABLE t1(x); 23 INSERT INTO t1 VALUES(1); 24 SELECT * FROM t1 25 } 26 } 1 27 proc busy x { 28 lappend ::busyargs $x 29 if {$x>2} {return 1} 30 return 0 31 } 32 set busyargs {} 33 do_test busy-1.2 { 34 db busy busy 35 db2 eval {BEGIN EXCLUSIVE} 36 catchsql {BEGIN IMMEDIATE} 37 } {1 {database is locked}} 38 do_test busy-1.3 { 39 set busyargs 40 } {0 1 2 3} 41 do_test busy-1.4 { 42 set busyargs {} 43 catchsql {BEGIN IMMEDIATE} 44 set busyargs 45 } {0 1 2 3} 46 47 do_test busy-2.1 { 48 db2 eval {COMMIT} 49 db eval {BEGIN; INSERT INTO t1 VALUES(5)} 50 db2 eval {BEGIN; SELECT * FROM t1} 51 set busyargs {} 52 catchsql COMMIT 53 } {1 {database is locked}} 54 do_test busy-2.2 { 55 set busyargs 56 } {0 1 2 3} 57 58 59 db2 close 60 61 finish_test 62