Index: third_party/sqlite/sqlite-src-3070603/test/async2.test |
diff --git a/third_party/sqlite/sqlite-src-3070603/test/async2.test b/third_party/sqlite/sqlite-src-3070603/test/async2.test |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ec4ae308d71becbecc9db28365287b96b97aebf0 |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3070603/test/async2.test |
@@ -0,0 +1,126 @@ |
+# |
+# 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 |
+ file delete -force 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 |