Annotation of embedaddon/sqlite3/test/async.test, revision 1.1.1.1

1.1       misho       1: #
                      2: #    May you do good and not evil.
                      3: #    May you find forgiveness for yourself and forgive others.
                      4: #    May you share freely, never taking more than you give.
                      5: #
                      6: #***********************************************************************
                      7: # This file runs all tests.
                      8: #
                      9: # $Id: async.test,v 1.21 2009/06/05 17:09:12 drh Exp $
                     10: 
                     11: set testdir [file dirname $argv0]
                     12: source $testdir/tester.tcl
                     13: 
                     14: if {[info commands sqlite3async_initialize] eq ""} {
                     15:   # The async logic is not built into this system
                     16:   finish_test
                     17:   return
                     18: }
                     19: 
                     20: rename finish_test async_really_finish_test
                     21: proc finish_test {} {
                     22:   catch {db close}
                     23:   catch {db2 close}
                     24:   catch {db3 close}
                     25: }
                     26: if {[info exists G(isquick)]} { set ASYNC_SAVE_ISQUICK $G(isquick) }
                     27: set G(isquick) 1
                     28: 
                     29: set ASYNC_INCLUDE {
                     30:   insert.test
                     31:   insert2.test
                     32:   insert3.test
                     33:   lock.test
                     34:   lock2.test
                     35:   lock3.test
                     36:   select1.test
                     37:   select2.test
                     38:   select3.test
                     39:   select4.test
                     40:   trans.test
                     41: }
                     42: 
                     43: # Enable asynchronous IO.
                     44: sqlite3async_initialize "" 1
                     45: 
                     46: # This proc flushes the contents of the async-IO queue through to the 
                     47: # underlying VFS. A couple of the test scripts identified in $ASYNC_INCLUDE
                     48: # above contain lines like "catch flush_async_queue" in places where 
                     49: # this is required for the tests to work in async mode.
                     50: #
                     51: proc flush_async_queue {} {
                     52:   sqlite3async_control halt idle
                     53:   sqlite3async_start
                     54:   sqlite3async_wait
                     55:   sqlite3async_control halt never
                     56: }
                     57: 
                     58: rename do_test async_really_do_test
                     59: proc do_test {name args} {
                     60:   uplevel async_really_do_test async_io-$name $args
                     61:   flush_async_queue
                     62: }
                     63: 
                     64: foreach testfile [lsort -dictionary [glob $testdir/*.test]] {
                     65:   set tail [file tail $testfile]
                     66:   if {[lsearch -exact $ASYNC_INCLUDE $tail]<0} continue
                     67:   source $testfile
                     68: 
                     69:   # Make sure everything is flushed through. This is because [source]ing 
                     70:   # the next test file will delete the database file on disk (using
                     71:   # [delete_file]). If the asynchronous backend still has the file
                     72:   # open, it will become confused.
                     73:   #
                     74:   flush_async_queue
                     75: }
                     76: 
                     77: # Flush the write-queue and disable asynchronous IO. This should ensure
                     78: # all allocated memory is cleaned up.
                     79: set sqlite3async_trace 1
                     80: flush_async_queue
                     81: sqlite3async_shutdown
                     82: set sqlite3async_trace 0
                     83: 
                     84: rename do_test {}
                     85: rename async_really_do_test do_test
                     86: rename finish_test {}
                     87: rename async_really_finish_test finish_test
                     88: 
                     89: if {[info exists ASYNC_SAVE_ISQUICK]} { set G(isquick) $ASYNC_SAVE_ISQUICK }
                     90: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>