Add crash.test script. (CVS 1660)

FossilOrigin-Name: 64a6d805178af8947ccca19898c06979c226d92b
This commit is contained in:
danielk1977 2004-06-22 13:12:51 +00:00
parent 241db313b4
commit d1e3bee1a0
8 changed files with 111 additions and 22 deletions

View File

@ -56,7 +56,7 @@ TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src
#
LIBOBJ = attach.o auth.o btree.o build.o date.o delete.o \
expr.o func.o hash.o insert.o \
main.o opcodes.o os_mac.o os_unix.o os_win.o os_test.o \
main.o opcodes.o os_mac.o os_unix.o os_win.o \
pager.o parse.o pragma.o printf.o random.o \
select.o table.o tclsqlite.o tokenize.o trigger.o \
update.o util.o vacuum.o \
@ -119,6 +119,7 @@ TESTSRC = \
$(TOP)/src/os_test.c \
$(TOP)/src/os_unix.c \
$(TOP)/src/os_win.c \
$(TOP)/src/os_test.c \
$(TOP)/src/pager.c \
$(TOP)/src/pragma.c \
$(TOP)/src/printf.c \

View File

@ -1,5 +1,5 @@
C Add\scomments\sto\stest1.c.\s(CVS\s1659)
D 2004-06-22T12:46:54
C Add\scrash.test\sscript.\s(CVS\s1660)
D 2004-06-22T13:12:52
F Makefile.in 0a3d7aaefa50717bd550b0cf568a51072c4c103c
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@ -17,7 +17,7 @@ F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538
F doc/report1.txt a031aaf37b185e4fa540223cb516d3bccec7eeac
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
F ltmain.sh f6b283068efa69f06eb8aa1fe4bddfdbdeb35826
F main.mk 8f87a6089d3ae33be43ecc71d0bfd2d14892e91f
F main.mk ed07aaa719ccc4fdb2d86b2d8079bbd4faba7ce5
F mkdll.sh 68d34a961a1fdfa15ef27fc4f4740be583112124
F publish.sh 5bc5e493fa1773a3c0d9712182de0f5abd494903
F spec.template a38492f1c1dd349fc24cb0565e08afc53045304b
@ -44,8 +44,8 @@ F src/os.h 2f5ea879b784bc82aac8022a3e8fe00b73c83d67
F src/os_common.h ba1b7306e16e2091718f2c48db0fe6c1d7a31bb8
F src/os_mac.c 3d31e26be1411acfb7961033098631b4f3486fdf
F src/os_mac.h 51d2445f47e182ed32d3bd6937f81070c6fd9bd4
F src/os_test.c 0c6490723681649c11852adf701f00e09a981d1e
F src/os_test.h c47bad966c6f6f9bb4448abfc03c18884bc0ca9f
F src/os_test.c db4df491bad874c095b1a9d4db346990cfd56ae0
F src/os_test.h acacfe7e7bb78dd99865f16cfa822426b177d2ab
F src/os_unix.c 39e73ed02fc992a6bfc52200ea26704633412cc0
F src/os_unix.h 00c1f82b526ab2fb7ee5ddd555ea4ed68363c93a
F src/os_win.c 84549f6cc815237533c5d0eb3697352b03478d96
@ -62,7 +62,7 @@ F src/sqlite.h.in 1f400a561fca3b1df73677d2d97046425d47cae4
F src/sqliteInt.h dd796b6abc6d50505fe33c54f0143d7000681a41
F src/table.c af14284fa36c8d41f6829e3f2819dce07d3e2de2
F src/tclsqlite.c 8d093146332b2f0cbf2a8ebe8597d481619308a3
F src/test1.c cd1284a7e62b2523cfee146a758a3c2416d25657
F src/test1.c 7ecde02fdecff651250f11d96da73d484a4ff764
F src/test2.c dafd8bd314a554bf376c6d3a8c83fd69219f5a40
F src/test3.c 7247090d15a5a43823079b6fd8dad1ed3cccdedf
F src/test4.c a921a69821fd30209589228e64f94e9f715b6fe2
@ -104,6 +104,7 @@ F test/collate4.test 0e9fc08ffcf6eddf72e354a15de06688fa86db31
F test/collate5.test 1dd5f0f508c46667f9d4606c7950c414b0bdc0d5
F test/collate6.test 2a45768914f04c1447a69d1358bbede376552675
F test/conflict.test c5b849b01cfbe0a4f63a90cba6f68e2fe3a75f87
F test/crash.test b6ff4701ca4c30553dc819eab9d8b1226ca39af2
F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
F test/date.test aed5030482ebc02bd8d386c6c86a29f694ab068d
F test/delete.test 4f0c86e2bebdc822d179c80697b1ceabe6bbcd07
@ -142,7 +143,7 @@ F test/pager2.test 55469c7c1c1a54d6b32d7b3cc99001e90101a1ce
F test/pragma.test e09ac12edbdac81d21ca88084fef376c7667f5b0
F test/printf.test 31ac25b4f85fbc7fb507be34c6c0731adbefcf80
F test/progress.test 7542a6ac7894a1b7730c1f9a27f3f8b9388a4d25 x
F test/quick.test 0c191839eaceca22814982ae0f585cfad1f06154
F test/quick.test 4c0b3eabe2e0e606622d63d7d61ef6efb3ce156b
F test/quote.test 08f23385c685d3dc7914ec760d492cacea7f6e3d
F test/rowid.test 8845b4861341ef23f94e51f27702335d9c5dcd31
F test/select1.test 2f161f9cdf9fb577336bc8c930edade538567123
@ -227,7 +228,7 @@ F www/tclsqlite.tcl 19191cf2a1010eaeff74c51d83fd5f5a4d899075
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
F www/version3.tcl af528563442e3039928f9018327a18157e53a44f
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
P d0def160e5cf37cde771c2d9b18904a2a1f8c358
R 8248cc6658aa6d7649f6f797445f6e81
U drh
Z e125e35ec1374207bd595447efc0138e
P be6bd6c99dde902aafd02d8a72f3d42826caabe8
R e0f8cd78ed0c1d3c7e04b2acf0370248
U danielk1977
Z c3503634057680b2d410b0fe073781d0

View File

@ -1 +1 @@
be6bd6c99dde902aafd02d8a72f3d42826caabe8
64a6d805178af8947ccca19898c06979c226d92b

View File

@ -100,11 +100,14 @@ static OsTestFile *pAllFiles = 0;
/*
** Initialise the os_test.c specific fields of pFile.
*/
static void initFile(OsFile *id){
OsTestFile *pFile = (OsTestFile *)sqliteMalloc(sizeof(OsTestFile));
static void initFile(OsFile *id, char const *zName){
OsTestFile *pFile = (OsTestFile *)
sqliteMalloc(sizeof(OsTestFile) + strlen(zName)+1);
pFile->nMaxWrite = 0;
pFile->nBlk = 0;
pFile->apBlk = 0;
pFile->zName = (char *)(&pFile[1]);
strcpy(pFile->zName, zName);
*id = pFile;
pFile->pNext = pAllFiles;
pAllFiles = pFile;
@ -192,7 +195,16 @@ static int writeCache2(OsTestFile *pFile, int crash){
if( crash ){
char random;
sqlite3Randomness(1, &random);
if( random & 0x01 ) skip = 1;
if( random & 0x01 ){
skip = 1;
/*
printf("Not writing block %d of %s\n", i, pFile->zName);
*/
}else{
/*
printf("Writing block %d of %s\n", i, pFile->zName);
*/
}
}
if( rc==SQLITE_OK ){
@ -380,15 +392,15 @@ int sqlite3OsFileSize(OsFile *id, off_t *pSize){
** os_unix.c function to really open the file.
*/
int sqlite3OsOpenReadWrite(const char *zFilename, OsFile *id, int *pReadonly){
initFile(id);
initFile(id, zFilename);
return sqlite3RealOpenReadWrite(zFilename, &(*id)->fd, pReadonly);
}
int sqlite3OsOpenExclusive(const char *zFilename, OsFile *id, int delFlag){
initFile(id);
initFile(id, zFilename);
return sqlite3RealOpenExclusive(zFilename, &(*id)->fd, delFlag);
}
int sqlite3OsOpenReadOnly(const char *zFilename, OsFile *id){
initFile(id);
initFile(id, zFilename);
return sqlite3RealOpenReadOnly(zFilename, &(*id)->fd);
}

View File

@ -29,6 +29,7 @@ struct OsTestFile {
u8 **apBlk; /* Array of blocks that have been written to. */
int nBlk; /* Size of apBlock. */
int nMaxWrite; /* Largest offset written to. */
char *zName; /* File name */
OsRealFile fd;
OsTestFile *pNext;
};

View File

@ -13,7 +13,7 @@
** is not included in the SQLite library. It is used for automated
** testing of the SQLite library.
**
** $Id: test1.c,v 1.82 2004/06/22 12:46:54 drh Exp $
** $Id: test1.c,v 1.83 2004/06/22 13:12:52 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "tcl.h"
@ -993,7 +993,7 @@ static int sqlite3_crashseed(
#ifdef OS_TEST
int seed;
if( objc!=2 ) goto bad_args;
if( Tcl_GetIntFromObj(interp, objv[2], &seed) ) return TCL_ERROR;
if( Tcl_GetIntFromObj(interp, objv[1], &seed) ) return TCL_ERROR;
sqlite3SetCrashseed(seed);
#endif
return TCL_OK;

73
test/crash.test Normal file
View File

@ -0,0 +1,73 @@
# 2001 September 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.
#
#***********************************************************************
# This file implements regression tests for SQLite library.
#
# $Id: crash.test,v 1.1 2004/06/22 13:12:52 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
proc run_testfixturex {script} {
set f [open crash.tcl w]
puts $f $script
close $f
exec ./testfixturex crash.tcl
}
do_test crash-1.1 {
execsql {
CREATE TABLE abc(a, b, c);
INSERT INTO abc VALUES(1, 2, 3);
INSERT INTO abc VALUES(4, 5, 6);
}
} {}
do_test crash-1.2 {
set script {
sqlite3_crashseed 1
sqlite3 db test.db
db eval {pragma synchronous=full;}
db eval {DELETE FROM abc WHERE a = 1;}
}
catch {
run_testfixturex $script
} msg
set msg
} {child process exited abnormally}
do_test crash-1.3 {
catchsql {
SELECT * FROM abc;
}
} {0 {1 2 3 4 5 6}}
do_test crash-1.4 {
set script {
sqlite3_crashseed 2
sqlite3 db test.db
db eval {DELETE FROM abc WHERE a = 1;}
}
catch {
run_testfixturex $script
} msg
set msg
} {child process exited abnormally}
do_test crash-1.5 {
catch {
SELECT * FROM abc;
}
} {1 2 3 4 5 6}
finish_test

View File

@ -10,7 +10,7 @@
#***********************************************************************
# This file runs all tests.
#
# $Id: quick.test,v 1.24 2004/06/19 00:16:31 drh Exp $
# $Id: quick.test,v 1.25 2004/06/22 13:12:52 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -26,6 +26,7 @@ set EXCLUDE {
memleak.test
misuse.test
format3.test
crash.test
}
if {[sqlite3 -has-codec]} {