Annotation of embedaddon/sqlite3/test/async.test, revision 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>