File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / async4.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: # 2009 April 25
    2: #
    3: # The author disclaims copyright to this source code.  In place of
    4: # a legal notice, here is a blessing:
    5: #
    6: #    May you do good and not evil.
    7: #    May you find forgiveness for yourself and forgive others.
    8: #    May you share freely, never taking more than you give.
    9: #
   10: #***********************************************************************
   11: #
   12: # $Id: async4.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
   13: 
   14: set testdir [file dirname $argv0]
   15: source $testdir/tester.tcl
   16: 
   17: # Do not use a codec for tests in this file, as the database file is
   18: # manipulated directly using tcl scripts (using the [hexio_write] command).
   19: #
   20: do_not_use_codec
   21: 
   22: # These tests only work for Tcl version 8.5 and later on Windows (for now)
   23: #
   24: if {$tcl_platform(platform)=="windows"} {
   25:   scan $::tcl_version %f vx
   26:   if {$vx<8.5} {
   27:     finish_test
   28:     return
   29:   }
   30: }
   31: 
   32: if {[info commands sqlite3async_initialize] eq ""} {
   33:   # The async logic is not built into this system
   34:   finish_test
   35:   return
   36: }
   37: db close
   38: 
   39: # Test layout:
   40: #
   41: #   async4.1.*: Test the lockfiles parameter.
   42: #   async4.2.*: Test the delay parameter.
   43: 
   44: do_test async4.1.1 {
   45:   sqlite3async_initialize {} 0
   46:   sqlite3async_control lockfiles
   47: } {1}
   48: do_test async4.1.2 {
   49:   sqlite3async_control lockfiles false
   50: } {0}
   51: do_test async4.1.3 {
   52:   sqlite3async_control lockfiles
   53: } {0}
   54: do_test async4.1.4 {
   55:   sqlite3async_control lockfiles true
   56: } {1}
   57: 
   58: do_test async4.1.5 {
   59:   sqlite3 db test.db -vfs sqlite3async
   60:   execsql { CREATE TABLE t1(a, b, c) }
   61: } {}
   62: do_test async4.1.6 {
   63:   list [file exists test.db] [file size test.db]
   64: } {1 0}
   65: do_test async4.1.7 {
   66:   sqlite3 db2 test.db
   67:   catchsql { CREATE TABLE t2(a, b, c) } db2
   68: } {1 {database is locked}}
   69: do_test async4.1.8 {
   70:   sqlite3async_control halt idle
   71:   sqlite3async_start
   72:   sqlite3async_wait
   73: } {}
   74: do_test async4.1.9 {
   75:   catchsql { CREATE TABLE t2(a, b, c) } db2
   76: } {0 {}}
   77: do_test async4.1.10 {
   78:   list [catch {sqlite3async_control lockfiles false} msg] $msg
   79: } {1 SQLITE_MISUSE}
   80: do_test async4.1.11 {
   81:   db close
   82:   list [catch {sqlite3async_control lockfiles false} msg] $msg
   83: } {1 SQLITE_MISUSE}
   84: do_test async4.1.12 {
   85:   sqlite3async_start
   86:   sqlite3async_wait
   87:   sqlite3async_control lockfiles false
   88: } {0}
   89: do_test async4.1.13 {
   90:   sqlite3 db test.db -vfs sqlite3async
   91:   execsql { CREATE TABLE t3(a, b, c) } db
   92: } {}
   93: do_test async4.1.14 {
   94:   execsql { 
   95:     CREATE INDEX i1 ON t2(a);
   96:     CREATE INDEX i2 ON t1(a);
   97:   } db2
   98: } {}
   99: do_test async4.1.15 {
  100:   sqlite3async_start
  101:   sqlite3async_wait
  102:   hexio_write test.db 28 00000000
  103:   execsql { pragma integrity_check } db2
  104: } {{*** in database main ***
  105: Page 5 is never used}}
  106: do_test async4.1.16 {
  107:   db close
  108:   db2 close
  109:   sqlite3async_start
  110:   sqlite3async_wait
  111: } {}
  112: do_test async4.1.17 {
  113:   sqlite3async_control lockfiles true
  114: } {1}
  115: 
  116: do_test async4.2.1 {
  117:   sqlite3async_control delay
  118: } {0}
  119: do_test async4.2.2 {
  120:   sqlite3async_control delay 23
  121: } {23}
  122: do_test async4.2.3 {
  123:   sqlite3async_control delay
  124: } {23}
  125: do_test async4.2.4 {
  126:   sqlite3async_control delay 0
  127: } {0}
  128: do_test async4.2.5 {
  129:   sqlite3 db test.db -vfs sqlite3async
  130: 
  131:   execsql { CREATE TABLE t4(a, b) }
  132:   set T1 [lindex [time {
  133:     sqlite3async_start
  134:     sqlite3async_wait
  135:   }] 0]
  136: 
  137:   sqlite3async_control delay 100
  138:   execsql { CREATE TABLE t5(a, b) }
  139:   set T2 [lindex [time {
  140:     sqlite3async_start
  141:     sqlite3async_wait
  142:   }] 0]
  143: 
  144:   expr {($T1+1000000) < $T2}
  145: } {1}
  146: 
  147: do_test async4.2.6 {
  148:   sqlite3async_control delay 0
  149:   execsql { CREATE TABLE t6(a, b) }
  150:   set T1 [lindex [time {
  151:     sqlite3async_start
  152:     sqlite3async_wait
  153:   }] 0]
  154: 
  155:   expr {($T1+1000000) < $T2}
  156: } {1}
  157: 
  158: do_test async4.2.7 {
  159:   list [catch { sqlite3async_control delay -1 } msg] $msg
  160: } {1 SQLITE_MISUSE}
  161: 
  162: do_test async4.2.8 {
  163:   db close
  164:   sqlite3async_start
  165:   sqlite3async_wait
  166: } {}
  167: 
  168: finish_test

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