diff -r 000000000000 -r bde4ae8d615e os/persistentdata/persistentstorage/sqlite3api/TEST/TclScript/async.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TclScript/async.test Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,82 @@ +# +# 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. +# +#*********************************************************************** +# This file runs all tests. +# +# $Id: async.test,v 1.14 2008/09/15 14:47:21 danielk1977 Exp $ + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +if {[catch {sqlite3async_enable}]} { + # The async logic is not built into this system + finish_test + return +} + +rename finish_test really_finish_test +proc finish_test {} { + catch {db close} + catch {db2 close} + catch {db3 close} +} +set ISQUICK 1 + +set INCLUDE { + insert.test + insert2.test + insert3.test + lock.test + lock2.test + lock3.test + select1.test + select2.test + select3.test + select4.test + trans.test +} + +# Enable asynchronous IO. +sqlite3async_enable 1 + +rename do_test really_do_test +proc do_test {name args} { + uplevel really_do_test async_io-$name $args + sqlite3async_start + sqlite3async_halt idle + sqlite3async_wait + sqlite3async_halt never +} + +foreach testfile [lsort -dictionary [glob $testdir/*.test]] { + set tail [file tail $testfile] + if {[lsearch -exact $INCLUDE $tail]<0} continue + source $testfile + + # Make sure everything is flushed through. This is because [source]ing + # the next test file will delete the database file on disk (using + # [file delete]). If the asynchronous backend still has the file + # open, it will become confused. + # + sqlite3async_halt idle + sqlite3async_start + sqlite3async_wait + sqlite3async_halt never +} + +# Flush the write-queue and disable asynchronous IO. This should ensure +# all allocated memory is cleaned up. +set sqlite3async_trace 1 +sqlite3async_halt idle +sqlite3async_start +sqlite3async_wait +sqlite3async_halt never +sqlite3async_enable 0 +set sqlite3async_trace 0 + +really_finish_test +rename really_do_test do_test +rename really_finish_test finish_test