1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # 2010 June 15
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- #
- # The tests in this file test the pager modules response to various
- # fault conditions (OOM, IO error, disk full etc.). They are similar
- # to those in file pagerfault1.test.
- #
- # More specifically, the tests in this file are those deemed too slow to
- # run as part of pagerfault1.test.
- #
- set testdir [file dirname $argv0]
- source $testdir/tester.tcl
- source $testdir/lock_common.tcl
- source $testdir/malloc_common.tcl
- if {[permutation] == "inmemory_journal"} {
- finish_test
- return
- }
- sqlite3_memdebug_vfs_oom_test 0
- set a_string_counter 1
- proc a_string {n} {
- global a_string_counter
- incr a_string_counter
- string range [string repeat "${a_string_counter}." $n] 1 $n
- }
- db func a_string a_string
- do_test pagerfault2-1-pre1 {
- faultsim_delete_and_reopen
- db func a_string a_string
- execsql {
- PRAGMA auto_vacuum = 0;
- PRAGMA journal_mode = DELETE;
- PRAGMA page_size = 1024;
- CREATE TABLE t1(a, b);
- INSERT INTO t1 VALUES(a_string(401), a_string(402));
- }
- for {set ii 0} {$ii < 13} {incr ii} {
- execsql { INSERT INTO t1 SELECT a_string(401), a_string(402) FROM t1 }
- }
- faultsim_save_and_close
- file size test.db
- } [expr 1024 * 8268]
- do_faultsim_test pagerfault2-1 -faults oom-transient -prep {
- faultsim_restore_and_reopen
- sqlite3_db_config_lookaside db 0 256 4096
- execsql {
- BEGIN;
- SELECT * FROM t1;
- INSERT INTO t1 VALUES(5, 6);
- SAVEPOINT abc;
- UPDATE t1 SET a = a||'x' WHERE rowid<3700;
- }
- } -body {
- execsql { UPDATE t1 SET a = a||'x' WHERE rowid>=3700 AND rowid<=4200 }
- execsql { ROLLBACK TO abc }
- } -test {
- faultsim_test_result {0 {}}
- }
- do_test pagerfault2-2-pre1 {
- faultsim_restore_and_reopen
- execsql { DELETE FROM t1 }
- faultsim_save_and_close
- } {}
- do_faultsim_test pagerfault2-2 -faults oom-transient -prep {
- faultsim_restore_and_reopen
- sqlite3_db_config_lookaside db 0 256 4096
- db func a_string a_string
- execsql {
- PRAGMA cache_size = 20;
- BEGIN;
- INSERT INTO t1 VALUES(a_string(401), a_string(402));
- SAVEPOINT abc;
- }
- } -body {
- execsql { INSERT INTO t1 VALUES (a_string(2000000), a_string(2500000)) }
- } -test {
- faultsim_test_result {0 {}}
- }
- sqlite3_memdebug_vfs_oom_test 1
- finish_test
|