persistentstorage/sqlite3api/TEST/TclScript/busy.test
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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