File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / walslow.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: # 2010 March 17
    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: # This file implements regression tests for SQLite library.  The
   12: # focus of this file is testing the operation of the library in
   13: # "PRAGMA journal_mode=WAL" mode. The tests in this file use 
   14: # brute force methods, so may take a while to run.
   15: #
   16: 
   17: set testdir [file dirname $argv0]
   18: source $testdir/tester.tcl
   19: 
   20: ifcapable !wal {finish_test ; return }
   21: 
   22: proc reopen_db {} {
   23:   catch { db close }
   24:   forcedelete test.db test.db-wal
   25:   sqlite3 db test.db
   26:   execsql { PRAGMA journal_mode = wal }
   27: }
   28: 
   29: db close
   30: save_prng_state
   31: for {set seed 1} {$seed<10} {incr seed} {
   32:   expr srand($seed)
   33:   restore_prng_state
   34:   reopen_db
   35:   do_test walslow-1.seed=$seed.0 {
   36:     execsql { CREATE TABLE t1(a, b) }
   37:     execsql { CREATE INDEX i1 ON t1(a) }
   38:     execsql { CREATE INDEX i2 ON t1(b) }
   39:   } {}
   40: 
   41:   for {set iTest 1} {$iTest < 100} {incr iTest} {
   42: 
   43:     do_test walslow-1.seed=$seed.$iTest.1 {
   44:       set w [expr int(rand()*2000)]
   45:       set x [expr int(rand()*2000)]
   46:       execsql { INSERT INTO t1 VALUES(randomblob($w), randomblob($x)) }
   47:       execsql { PRAGMA integrity_check }
   48:     } {ok}
   49: 
   50:     do_test walslow-1.seed=$seed.$iTest.2 {
   51:       execsql "PRAGMA wal_checkpoint;"
   52:       execsql { PRAGMA integrity_check }
   53:     } {ok}
   54: 
   55:     do_test walslow-1.seed=$seed.$iTest.3 {
   56:       forcedelete testX.db testX.db-wal
   57:       copy_file test.db testX.db
   58:       copy_file test.db-wal testX.db-wal
   59:   
   60:       sqlite3 db2 testX.db
   61:       execsql { PRAGMA journal_mode = WAL } db2
   62:       execsql { PRAGMA integrity_check } db2
   63:     } {ok}
   64:   
   65:     do_test walslow-1.seed=$seed.$iTest.4 {
   66:       execsql { SELECT count(*) FROM t1 WHERE a!=b } db2
   67:     } [execsql { SELECT count(*) FROM t1 WHERE a!=b }]
   68:     db2 close
   69:   }
   70: }
   71: 
   72: 
   73: finish_test

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