Annotation of embedaddon/sqlite3/test/pagerfault2.test, revision 1.1
1.1 ! misho 1: # 2010 June 15
! 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: # The tests in this file test the pager modules response to various
! 13: # fault conditions (OOM, IO error, disk full etc.). They are similar
! 14: # to those in file pagerfault1.test.
! 15: #
! 16: # More specifically, the tests in this file are those deemed too slow to
! 17: # run as part of pagerfault1.test.
! 18: #
! 19:
! 20: set testdir [file dirname $argv0]
! 21: source $testdir/tester.tcl
! 22: source $testdir/lock_common.tcl
! 23: source $testdir/malloc_common.tcl
! 24:
! 25: if {[permutation] == "inmemory_journal"} {
! 26: finish_test
! 27: return
! 28: }
! 29:
! 30: sqlite3_memdebug_vfs_oom_test 0
! 31:
! 32: set a_string_counter 1
! 33: proc a_string {n} {
! 34: global a_string_counter
! 35: incr a_string_counter
! 36: string range [string repeat "${a_string_counter}." $n] 1 $n
! 37: }
! 38: db func a_string a_string
! 39:
! 40: do_test pagerfault2-1-pre1 {
! 41: faultsim_delete_and_reopen
! 42: db func a_string a_string
! 43: execsql {
! 44: PRAGMA auto_vacuum = 0;
! 45: PRAGMA journal_mode = DELETE;
! 46: PRAGMA page_size = 1024;
! 47: CREATE TABLE t1(a, b);
! 48: INSERT INTO t1 VALUES(a_string(401), a_string(402));
! 49: }
! 50: for {set ii 0} {$ii < 13} {incr ii} {
! 51: execsql { INSERT INTO t1 SELECT a_string(401), a_string(402) FROM t1 }
! 52: }
! 53: faultsim_save_and_close
! 54: file size test.db
! 55: } [expr 1024 * 8268]
! 56:
! 57: do_faultsim_test pagerfault2-1 -faults oom-transient -prep {
! 58: faultsim_restore_and_reopen
! 59: sqlite3_db_config_lookaside db 0 256 4096
! 60: execsql {
! 61: BEGIN;
! 62: SELECT * FROM t1;
! 63: INSERT INTO t1 VALUES(5, 6);
! 64: SAVEPOINT abc;
! 65: UPDATE t1 SET a = a||'x' WHERE rowid<3700;
! 66: }
! 67: } -body {
! 68: execsql { UPDATE t1 SET a = a||'x' WHERE rowid>=3700 AND rowid<=4200 }
! 69: execsql { ROLLBACK TO abc }
! 70: } -test {
! 71: faultsim_test_result {0 {}}
! 72: }
! 73:
! 74: do_test pagerfault2-2-pre1 {
! 75: faultsim_restore_and_reopen
! 76: execsql { DELETE FROM t1 }
! 77: faultsim_save_and_close
! 78: } {}
! 79:
! 80: do_faultsim_test pagerfault2-2 -faults oom-transient -prep {
! 81: faultsim_restore_and_reopen
! 82: sqlite3_db_config_lookaside db 0 256 4096
! 83: db func a_string a_string
! 84:
! 85: execsql {
! 86: PRAGMA cache_size = 20;
! 87: BEGIN;
! 88: INSERT INTO t1 VALUES(a_string(401), a_string(402));
! 89: SAVEPOINT abc;
! 90: }
! 91: } -body {
! 92: execsql { INSERT INTO t1 VALUES (a_string(2000000), a_string(2500000)) }
! 93: } -test {
! 94: faultsim_test_result {0 {}}
! 95: }
! 96:
! 97: sqlite3_memdebug_vfs_oom_test 1
! 98: finish_test
! 99:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>