| OLD | NEW | 
 | (Empty) | 
|    1 # |  | 
|    2 #    May you do good and not evil. |  | 
|    3 #    May you find forgiveness for yourself and forgive others. |  | 
|    4 #    May you share freely, never taking more than you give. |  | 
|    5 # |  | 
|    6 #*********************************************************************** |  | 
|    7 # |  | 
|    8 # $Id: async2.test,v 1.12 2009/04/25 08:39:15 danielk1977 Exp $ |  | 
|    9  |  | 
|   10  |  | 
|   11 set testdir [file dirname $argv0] |  | 
|   12 source $testdir/tester.tcl |  | 
|   13  |  | 
|   14 if { |  | 
|   15   [info commands sqlite3async_initialize]=="" || |  | 
|   16   [info command sqlite3_memdebug_fail]=="" |  | 
|   17 } { |  | 
|   18   # The async logic is not built into this system |  | 
|   19   puts "Skipping async2 tests: not compiled with required features" |  | 
|   20   finish_test |  | 
|   21   return |  | 
|   22 } |  | 
|   23  |  | 
|   24 # Enable asynchronous IO. |  | 
|   25  |  | 
|   26 set setup_script { |  | 
|   27   CREATE TABLE counter(c); |  | 
|   28   INSERT INTO counter(c) VALUES (1); |  | 
|   29 }  |  | 
|   30  |  | 
|   31 set sql_script { |  | 
|   32   BEGIN; |  | 
|   33     UPDATE counter SET c = 2; |  | 
|   34     CREATE TABLE t1(a PRIMARY KEY, b, c); |  | 
|   35     CREATE TABLE t2(a PRIMARY KEY, b, c); |  | 
|   36   COMMIT; |  | 
|   37  |  | 
|   38   BEGIN; |  | 
|   39     UPDATE counter SET c = 3; |  | 
|   40     INSERT INTO t1 VALUES('abcdefghij', 'four', 'score'); |  | 
|   41     INSERT INTO t2 VALUES('klmnopqrst', 'and', 'seven'); |  | 
|   42   COMMIT; |  | 
|   43  |  | 
|   44   UPDATE counter SET c = 'FIN'; |  | 
|   45 } |  | 
|   46  |  | 
|   47 db close |  | 
|   48  |  | 
|   49 foreach err [list ioerr malloc-transient malloc-persistent] { |  | 
|   50   set ::go 10 |  | 
|   51   for {set n 1} {$::go} {incr n} { |  | 
|   52     set ::sqlite_io_error_pending 0 |  | 
|   53     sqlite3_memdebug_fail -1 |  | 
|   54     file delete -force test.db test.db-journal |  | 
|   55     sqlite3 db test.db |  | 
|   56     execsql $::setup_script |  | 
|   57     db close |  | 
|   58    |  | 
|   59     sqlite3async_initialize "" 1 |  | 
|   60     sqlite3 db test.db |  | 
|   61     sqlite3_db_config_lookaside db 0 0 0 |  | 
|   62    |  | 
|   63     switch -- $err { |  | 
|   64       ioerr             { set ::sqlite_io_error_pending $n } |  | 
|   65       malloc-persistent { sqlite3_memdebug_fail $n -repeat 1 } |  | 
|   66       malloc-transient  { sqlite3_memdebug_fail $n -repeat 0 } |  | 
|   67     } |  | 
|   68  |  | 
|   69     catchsql $::sql_script |  | 
|   70     db close |  | 
|   71  |  | 
|   72     sqlite3async_control halt idle |  | 
|   73     sqlite3async_start |  | 
|   74     sqlite3async_wait |  | 
|   75     sqlite3async_control halt never |  | 
|   76     sqlite3async_shutdown |  | 
|   77  |  | 
|   78     set ::sqlite_io_error_pending 0 |  | 
|   79     sqlite3_memdebug_fail -1 |  | 
|   80  |  | 
|   81     sqlite3 db test.db |  | 
|   82     set c [db one {SELECT c FROM counter LIMIT 1}] |  | 
|   83     switch -- $c { |  | 
|   84       1 { |  | 
|   85         do_test async-$err-1.1.$n { |  | 
|   86           execsql { |  | 
|   87             SELECT name FROM sqlite_master; |  | 
|   88           } |  | 
|   89         } {counter} |  | 
|   90       } |  | 
|   91       2 { |  | 
|   92         do_test async-$err-1.2.$n.1 { |  | 
|   93           execsql { |  | 
|   94             SELECT * FROM t1; |  | 
|   95           } |  | 
|   96         } {} |  | 
|   97         do_test async-$err-1.2.$n.2 { |  | 
|   98           execsql { |  | 
|   99             SELECT * FROM t2; |  | 
|  100           } |  | 
|  101         } {} |  | 
|  102       } |  | 
|  103       3 { |  | 
|  104         do_test async-$err-1.3.$n.1 { |  | 
|  105           execsql { |  | 
|  106             SELECT * FROM t1; |  | 
|  107           } |  | 
|  108         } {abcdefghij four score} |  | 
|  109         do_test async-$err-1.3.$n.2 { |  | 
|  110           execsql { |  | 
|  111             SELECT * FROM t2; |  | 
|  112           } |  | 
|  113         } {klmnopqrst and seven} |  | 
|  114       } |  | 
|  115       FIN { |  | 
|  116         incr ::go -1 |  | 
|  117       } |  | 
|  118     } |  | 
|  119    |  | 
|  120     db close |  | 
|  121   } |  | 
|  122 } |  | 
|  123  |  | 
|  124 catch {db close} |  | 
|  125  |  | 
|  126 finish_test |  | 
| OLD | NEW |