mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-27 20:41:58 +03:00
Infrastructure to make simulated I/O errors persistent instead of
transient. (CVS 3689) FossilOrigin-Name: 1a53f531ecd51938fab37a59b7088d89d8f8569d
This commit is contained in:
@ -15,7 +15,7 @@
|
||||
# The tests in this file use special facilities that are only
|
||||
# available in the SQLite test fixture.
|
||||
#
|
||||
# $Id: ioerr.test,v 1.29 2007/01/04 14:58:14 drh Exp $
|
||||
# $Id: ioerr.test,v 1.30 2007/03/15 12:17:43 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -46,9 +46,6 @@ do_ioerr_test ioerr-1 -erc 1 -sqlprep {
|
||||
DELETE FROM t1 WHERE a<100;
|
||||
} -exclude [expr [string match [execsql {pragma auto_vacuum}] 1] ? 4 : 0]
|
||||
|
||||
finish_test
|
||||
return
|
||||
|
||||
# Test for IO errors during a VACUUM.
|
||||
#
|
||||
# The first IO call is excluded from the test. This call attempts to read
|
||||
@ -260,4 +257,13 @@ do_ioerr_test ioerr-10 -tclprep {
|
||||
}
|
||||
}
|
||||
|
||||
# Assertion fault bug reported by alex dimitrov.
|
||||
#
|
||||
do_ioerr_test ioerr-11 -erc 1 -sqlprep {
|
||||
CREATE TABLE A(Id INTEGER, Name TEXT);
|
||||
INSERT INTO A(Id, Name) VALUES(1, 'Name');
|
||||
} -sqlbody {
|
||||
UPDATE A SET Id = 2, Name = 'Name2' WHERE Id = 1;
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
@ -11,7 +11,7 @@
|
||||
# This file implements some common TCL routines used for regression
|
||||
# testing the SQLite library
|
||||
#
|
||||
# $Id: tester.tcl,v 1.72 2007/01/04 14:58:14 drh Exp $
|
||||
# $Id: tester.tcl,v 1.73 2007/03/15 12:17:43 drh Exp $
|
||||
|
||||
# Make sure tclsqlite3 was compiled correctly. Abort now with an
|
||||
# error message if not.
|
||||
@ -342,6 +342,7 @@ proc crashsql {crashdelay crashfile sql} {
|
||||
# -sqlbody TCL script to run with IO error simulation.
|
||||
# -exclude List of 'N' values not to test.
|
||||
# -erc Use extended result codes
|
||||
# -persist Make simulated I/O errors persistent
|
||||
# -start Value of 'N' to begin with (default 1)
|
||||
#
|
||||
# -cksum Boolean. If true, test that the database does
|
||||
@ -353,6 +354,7 @@ proc do_ioerr_test {testname args} {
|
||||
set ::ioerropts(-cksum) 0
|
||||
set ::ioerropts(-erc) 0
|
||||
set ::ioerropts(-count) 100000000
|
||||
set ::ioerropts(-persist) 1
|
||||
array set ::ioerropts $args
|
||||
|
||||
set ::go 1
|
||||
@ -392,6 +394,7 @@ proc do_ioerr_test {testname args} {
|
||||
|
||||
# Set the Nth IO error to fail.
|
||||
do_test $testname.$n.2 [subst {
|
||||
set ::sqlite_io_error_persist $::ioerropts(-persist)
|
||||
set ::sqlite_io_error_pending $n
|
||||
}] $n
|
||||
|
||||
|
Reference in New Issue
Block a user