diff options
author | drh <drh@noemail.net> | 2015-01-30 15:52:26 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-01-30 15:52:26 +0000 |
commit | 0699f29a14f0cd013092a04789ee14f53fc5ed9f (patch) | |
tree | b5f0c936b1a038f5fc8cf86f6b4b72f3ebac944f /src | |
parent | fdc2e6d3444129d7e582e24f809f4f3b911b3966 (diff) | |
parent | 917682a4f429ae75e2c3cdfa6b62162a5d3a36be (diff) | |
download | sqlite-0699f29a14f0cd013092a04789ee14f53fc5ed9f.tar.gz sqlite-0699f29a14f0cd013092a04789ee14f53fc5ed9f.zip |
Added SQLITE_TESTCTRL_INITMODE for improved testability.
FossilOrigin-Name: 98e029134dc1300d3ecb48b41b5107ec69ba85db
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 12 | ||||
-rw-r--r-- | src/shell.c | 13 | ||||
-rw-r--r-- | src/sqlite.h.in | 3 | ||||
-rw-r--r-- | src/test1.c | 18 |
4 files changed, 44 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c index 5aa37fa49..0d6f1be24 100644 --- a/src/main.c +++ b/src/main.c @@ -3598,6 +3598,18 @@ int sqlite3_test_control(int op, ...){ if( sqlite3GlobalConfig.isInit==0 ) rc = SQLITE_ERROR; break; } + + /* sqlite3_test_control(SQLITE_TESTCTRL_INITMODE, db, busy, iDb, newTnum); + ** + ** Set the db->init.busy, db->init.iDb, and db->init.tnum fields. + */ + case SQLITE_TESTCTRL_INITMODE: { + sqlite3 *db = va_arg(ap, sqlite3*); + db->init.busy = va_arg(ap,int); + db->init.iDb = va_arg(ap,int); + db->init.newTnum = va_arg(ap,int); + break; + } } va_end(ap); #endif /* SQLITE_OMIT_BUILTIN_TEST */ diff --git a/src/shell.c b/src/shell.c index f9a360c7b..1a191e0fd 100644 --- a/src/shell.c +++ b/src/shell.c @@ -3536,6 +3536,7 @@ static int do_meta_command(char *zLine, ShellState *p){ { "scratchmalloc", SQLITE_TESTCTRL_SCRATCHMALLOC }, { "byteorder", SQLITE_TESTCTRL_BYTEORDER }, { "never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT }, + { "initmode", SQLITE_TESTCTRL_INITMODE }, }; int testctrl = -1; int rc = 0; @@ -3628,6 +3629,18 @@ static int do_meta_command(char *zLine, ShellState *p){ break; #endif + case SQLITE_TESTCTRL_INITMODE: + if( nArg==5 ){ + rc = sqlite3_test_control(testctrl, p->db, + integerValue(azArg[2]), + integerValue(azArg[3]), + integerValue(azArg[4])); + }else{ + fprintf(stderr,"Usage: .testctrl initmode fBusy iDb newTnum\n"); + rc = 1; + } + break; + case SQLITE_TESTCTRL_BITVEC_TEST: case SQLITE_TESTCTRL_FAULT_INSTALL: case SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: diff --git a/src/sqlite.h.in b/src/sqlite.h.in index f2e802eb0..722b9235a 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -6260,7 +6260,8 @@ int sqlite3_test_control(int op, ...); #define SQLITE_TESTCTRL_BYTEORDER 22 #define SQLITE_TESTCTRL_ISINIT 23 #define SQLITE_TESTCTRL_SORTER_MMAP 24 -#define SQLITE_TESTCTRL_LAST 24 +#define SQLITE_TESTCTRL_INITMODE 25 +#define SQLITE_TESTCTRL_LAST 25 /* ** CAPI3REF: SQLite Runtime Status diff --git a/src/test1.c b/src/test1.c index d86ec1e84..b9503cf39 100644 --- a/src/test1.c +++ b/src/test1.c @@ -5914,7 +5914,8 @@ static int test_test_control( int i; } aVerb[] = { { "SQLITE_TESTCTRL_LOCALTIME_FAULT", SQLITE_TESTCTRL_LOCALTIME_FAULT }, - { "SQLITE_TESTCTRL_SORTER_MMAP", SQLITE_TESTCTRL_SORTER_MMAP }, + { "SQLITE_TESTCTRL_SORTER_MMAP", SQLITE_TESTCTRL_SORTER_MMAP }, + { "SQLITE_TESTCTRL_INITMODE", SQLITE_TESTCTRL_INITMODE }, }; int iVerb; int iFlag; @@ -5955,6 +5956,21 @@ static int test_test_control( sqlite3_test_control(SQLITE_TESTCTRL_SORTER_MMAP, db, val); break; } + + case SQLITE_TESTCTRL_INITMODE: { + int fBusy, iDb, newTnum; + sqlite3 *db; + if( objc!=6 ){ + Tcl_WrongNumArgs(interp, 2, objv, "DB fBusy iDb newTnum"); + return TCL_ERROR; + } + if( getDbPointer(interp, Tcl_GetString(objv[2]), &db) ) return TCL_ERROR; + if( Tcl_GetIntFromObj(interp, objv[3], &fBusy) ) return TCL_ERROR; + if( Tcl_GetIntFromObj(interp, objv[4], &iDb) ) return TCL_ERROR; + if( Tcl_GetIntFromObj(interp, objv[5], &newTnum) ) return TCL_ERROR; + sqlite3_test_control(SQLITE_TESTCTRL_INITMODE, db, fBusy, iDb, newTnum); + break; + } } Tcl_ResetResult(interp); |