persistentstorage/sqlite3api/TEST/TclScript/async.test
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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.14 2008/09/15 14:47:21 danielk1977 Exp $
       
    10 
       
    11 set testdir [file dirname $argv0]
       
    12 source $testdir/tester.tcl
       
    13 
       
    14 if {[catch {sqlite3async_enable}]} {
       
    15   # The async logic is not built into this system
       
    16   finish_test
       
    17   return
       
    18 }
       
    19 
       
    20 rename finish_test really_finish_test
       
    21 proc finish_test {} {
       
    22   catch {db close}
       
    23   catch {db2 close}
       
    24   catch {db3 close}
       
    25 }
       
    26 set ISQUICK 1
       
    27 
       
    28 set INCLUDE {
       
    29   insert.test
       
    30   insert2.test
       
    31   insert3.test
       
    32   lock.test
       
    33   lock2.test
       
    34   lock3.test
       
    35   select1.test
       
    36   select2.test
       
    37   select3.test
       
    38   select4.test
       
    39   trans.test
       
    40 }
       
    41 
       
    42 # Enable asynchronous IO.
       
    43 sqlite3async_enable 1
       
    44 
       
    45 rename do_test really_do_test
       
    46 proc do_test {name args} {
       
    47   uplevel really_do_test async_io-$name $args
       
    48   sqlite3async_start
       
    49   sqlite3async_halt idle
       
    50   sqlite3async_wait
       
    51   sqlite3async_halt never
       
    52 }
       
    53 
       
    54 foreach testfile [lsort -dictionary [glob $testdir/*.test]] {
       
    55   set tail [file tail $testfile]
       
    56   if {[lsearch -exact $INCLUDE $tail]<0} continue
       
    57   source $testfile
       
    58 
       
    59   # Make sure everything is flushed through. This is because [source]ing 
       
    60   # the next test file will delete the database file on disk (using
       
    61   # [file delete]). If the asynchronous backend still has the file
       
    62   # open, it will become confused.
       
    63   #
       
    64   sqlite3async_halt idle
       
    65   sqlite3async_start
       
    66   sqlite3async_wait
       
    67   sqlite3async_halt never
       
    68 }
       
    69 
       
    70 # Flush the write-queue and disable asynchronous IO. This should ensure
       
    71 # all allocated memory is cleaned up.
       
    72 set sqlite3async_trace 1
       
    73 sqlite3async_halt idle
       
    74 sqlite3async_start
       
    75 sqlite3async_wait
       
    76 sqlite3async_halt never
       
    77 sqlite3async_enable 0
       
    78 set sqlite3async_trace 0
       
    79 
       
    80 really_finish_test
       
    81 rename really_do_test do_test
       
    82 rename really_finish_test finish_test