aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2008-01-31 14:43:24 +0000
committerdrh <drh@noemail.net>2008-01-31 14:43:24 +0000
commited13d98c8c68c5cb2addee3a2a2fedb4ea639b26 (patch)
tree7ea9722ab4db225b7dab1c1262ebbdd5c9002235 /src/main.c
parent820a90694e186c6f25bc081dd4ad8162378b9c15 (diff)
downloadsqlite-ed13d98c8c68c5cb2addee3a2a2fedb4ea639b26.tar.gz
sqlite-ed13d98c8c68c5cb2addee3a2a2fedb4ea639b26.zip
Add the sqlite3_test_control() API. Use it to control the fault injector. (CVS 4758)
FossilOrigin-Name: 413ddade6a13f993cddc57389d1107d82fa19972
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 62500441b..d4e862ed7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -14,7 +14,7 @@
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
-** $Id: main.c,v 1.415 2008/01/31 13:35:49 drh Exp $
+** $Id: main.c,v 1.416 2008/01/31 14:43:24 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -1470,3 +1470,39 @@ int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, void *pArg){
sqlite3_mutex_leave(db->mutex);
return rc;
}
+
+/*
+** Interface to the testing logic.
+*/
+int sqlite3_test_control(int op, ...){
+ va_list ap;
+ int rc = 0;
+ va_start(ap, op);
+ switch( op ){
+#ifndef SQLITE_OMIT_FAULTINJECTOR
+ case SQLITE_TESTCTRL_FAULT_CONFIG: {
+ int id = va_arg(ap, int);
+ int nDelay = va_arg(ap, int);
+ int nRepeat = va_arg(ap, int);
+ sqlite3FaultConfig(id, nDelay, nRepeat);
+ break;
+ }
+ case SQLITE_TESTCTRL_FAULT_FAILURES: {
+ int id = va_arg(ap, int);
+ rc = sqlite3FaultFailures(id);
+ break;
+ }
+ case SQLITE_TESTCTRL_FAULT_BENIGN_FAILURES: {
+ int id = va_arg(ap, int);
+ rc = sqlite3FaultBenignFailures(id);
+ break;
+ }
+ case SQLITE_TESTCTRL_FAULT_PENDING: {
+ int id = va_arg(ap, int);
+ rc = sqlite3FaultPending(id);
+ break;
+ }
+#endif /* SQLITE_OMIT_FAULTINJECTOR */
+ }
+ va_end(ap);
+}