diff options
author | danielk1977 <danielk1977@noemail.net> | 2008-11-04 14:55:47 +0000 |
---|---|---|
committer | danielk1977 <danielk1977@noemail.net> | 2008-11-04 14:55:47 +0000 |
commit | 5f6d0268fbff77a6690ac032a7da906a7abd61fb (patch) | |
tree | 32fdc8f6d029aa13d95596c462cacb9dbd234cc0 /src | |
parent | 2838b4723409ffbb664244d6b95c2ede2406adb3 (diff) | |
download | sqlite-5f6d0268fbff77a6690ac032a7da906a7abd61fb.tar.gz sqlite-5f6d0268fbff77a6690ac032a7da906a7abd61fb.zip |
Add test cases for sqlite3_db_mutex(). (CVS 5862)
FossilOrigin-Name: f818e8e5cb20c51922d0b5424f17649e0692f273
Diffstat (limited to 'src')
-rw-r--r-- | src/test_mutex.c | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/src/test_mutex.c b/src/test_mutex.c index 571f81a37..7352c2e83 100644 --- a/src/test_mutex.c +++ b/src/test_mutex.c @@ -10,7 +10,7 @@ ** ************************************************************************* ** -** $Id: test_mutex.c,v 1.11 2008/07/19 13:43:24 danielk1977 Exp $ +** $Id: test_mutex.c,v 1.12 2008/11/04 14:55:47 danielk1977 Exp $ */ #include "tcl.h" @@ -359,6 +359,57 @@ static int test_config( return TCL_OK; } +static sqlite3 *getDbPointer(Tcl_Interp *pInterp, Tcl_Obj *pObj){ + sqlite3 *db; + Tcl_CmdInfo info; + char *zCmd = Tcl_GetString(pObj); + if( 1!=Tcl_GetCommandInfo(pInterp, zCmd, &info) ){ + Tcl_AppendResult(pInterp, "No such db-handle: \"", zCmd, "\"", 0); + return 0; + } + db = *((sqlite3 **)info.objClientData); + assert( db ); + return db; +} + +static int test_enter_db_mutex( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + sqlite3 *db; + if( objc!=2 ){ + Tcl_WrongNumArgs(interp, 1, objv, "DB"); + return TCL_ERROR; + } + db = getDbPointer(interp, objv[1]); + if( !db ){ + return TCL_ERROR; + } + sqlite3_mutex_enter(sqlite3_db_mutex(db)); + return TCL_OK; +} + +static int test_leave_db_mutex( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + sqlite3 *db; + if( objc!=2 ){ + Tcl_WrongNumArgs(interp, 1, objv, "DB"); + return TCL_ERROR; + } + db = getDbPointer(interp, objv[1]); + if( !db ){ + return TCL_ERROR; + } + sqlite3_mutex_leave(sqlite3_db_mutex(db)); + return TCL_OK; +} + int Sqlitetest_mutex_Init(Tcl_Interp *interp){ static struct { char *zName; @@ -368,6 +419,9 @@ int Sqlitetest_mutex_Init(Tcl_Interp *interp){ { "sqlite3_initialize", (Tcl_ObjCmdProc*)test_initialize }, { "sqlite3_config", (Tcl_ObjCmdProc*)test_config }, + { "enter_db_mutex", (Tcl_ObjCmdProc*)test_enter_db_mutex }, + { "leave_db_mutex", (Tcl_ObjCmdProc*)test_leave_db_mutex }, + { "alloc_dealloc_mutex", (Tcl_ObjCmdProc*)test_alloc_mutex }, { "install_mutex_counters", (Tcl_ObjCmdProc*)test_install_mutex_counters }, { "read_mutex_counters", (Tcl_ObjCmdProc*)test_read_mutex_counters }, |