/
clang
/
sqlite
Обзор
Документация
Войти
/
clang
/
sqlite
Код
Вики
Пакеты
0
Релизы
0
Аналитика
patch-release
test/async2.test
126 строк
3 KB
mistachkin
Add retry logic for AV defense to winOpen. Also, refactor test suite to allow the key Tcl file operations (e.g. copy and delete) to be retried.
02 авг 2011, 04:57
02 авг 2011, 04:57
fda06be
Код
Авторство
О чём код?
# # 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