From e36d23a85ebff914d74bb541558c2b6082b78edb Mon Sep 17 00:00:00 2001 From: dan miller Date: Sat, 20 Oct 2007 02:49:29 +0000 Subject: sqlite source (unix build) added to libraries --- .../sqlite/unix/sqlite-3.5.1/test/async2.test | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 libraries/sqlite/unix/sqlite-3.5.1/test/async2.test (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/async2.test') diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/async2.test b/libraries/sqlite/unix/sqlite-3.5.1/test/async2.test new file mode 100644 index 0000000..cfbe06a --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/async2.test @@ -0,0 +1,127 @@ +# +# 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.8 2007/09/05 16:54:41 danielk1977 Exp $ + + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +if { + [info commands sqlite3async_enable]=="" || + [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 1 + for {set n 1} {$::go} {incr n} { + set ::sqlite_io_error_pending 0 + sqlite3_memdebug_fail -1 + file delete -force test.db test.db-journal + sqlite3 db test.db + execsql $::setup_script + db close + + sqlite3async_enable 1 + sqlite3 db test.db + + 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_halt idle + sqlite3async_start + sqlite3async_wait + sqlite3async_enable 0 + + set ::sqlite_io_error_pending 0 + sqlite3_memdebug_fail -1 + + sqlite3 db test.db + set c [db eval {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 { + set ::go 0 + } + } + + db close + } +} + +catch {db close} +sqlite3async_halt idle +sqlite3async_start +sqlite3async_wait + +finish_test -- cgit v1.1