123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #
- # 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: async2.test,v 1.12 2009/04/25 08:39:15 danielk1977 Exp $
- set testdir [file dirname $argv0]
- source $testdir/tester.tcl
- if {
- [info commands sqlite3async_initialize]=="" ||
- [info command sqlite3_memdebug_fail]==""
- } {
- # The async logic is not built into this system
- puts "Skipping async2 tests: not compiled with required features"
- finish_test
- return
- }
- # Enable asynchronous IO.
- set setup_script {
- CREATE TABLE counter(c);
- INSERT INTO counter(c) VALUES (1);
- }
- set sql_script {
- BEGIN;
- UPDATE counter SET c = 2;
- CREATE TABLE t1(a PRIMARY KEY, b, c);
- CREATE TABLE t2(a PRIMARY KEY, b, c);
- COMMIT;
- BEGIN;
- UPDATE counter SET c = 3;
- INSERT INTO t1 VALUES('abcdefghij', 'four', 'score');
- INSERT INTO t2 VALUES('klmnopqrst', 'and', 'seven');
- COMMIT;
- UPDATE counter SET c = 'FIN';
- }
- db close
- foreach err [list ioerr malloc-transient malloc-persistent] {
- set ::go 10
- for {set n 1} {$::go} {incr n} {
- set ::sqlite_io_error_pending 0
- sqlite3_memdebug_fail -1
- forcedelete test.db test.db-journal
- sqlite3 db test.db
- execsql $::setup_script
- db close
-
- sqlite3async_initialize "" 1
- sqlite3 db test.db
- sqlite3_db_config_lookaside db 0 0 0
-
- switch -- $err {
- ioerr { set ::sqlite_io_error_pending $n }
- malloc-persistent { sqlite3_memdebug_fail $n -repeat 1 }
- malloc-transient { sqlite3_memdebug_fail $n -repeat 0 }
- }
- catchsql $::sql_script
- db close
- sqlite3async_control halt idle
- sqlite3async_start
- sqlite3async_wait
- sqlite3async_control halt never
- sqlite3async_shutdown
- set ::sqlite_io_error_pending 0
- sqlite3_memdebug_fail -1
- sqlite3 db test.db
- set c [db one {SELECT c FROM counter LIMIT 1}]
- switch -- $c {
- 1 {
- do_test async-$err-1.1.$n {
- execsql {
- SELECT name FROM sqlite_master;
- }
- } {counter}
- }
- 2 {
- do_test async-$err-1.2.$n.1 {
- execsql {
- SELECT * FROM t1;
- }
- } {}
- do_test async-$err-1.2.$n.2 {
- execsql {
- SELECT * FROM t2;
- }
- } {}
- }
- 3 {
- do_test async-$err-1.3.$n.1 {
- execsql {
- SELECT * FROM t1;
- }
- } {abcdefghij four score}
- do_test async-$err-1.3.$n.2 {
- execsql {
- SELECT * FROM t2;
- }
- } {klmnopqrst and seven}
- }
- FIN {
- incr ::go -1
- }
- }
-
- db close
- }
- }
- catch {db close}
- finish_test
|