Annotation of embedaddon/sqlite3/test/walslow.test, revision 1.1
1.1 ! misho 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>