1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-05 15:55:57 +03:00

Add test cases for sqlite3_db_mutex(). (CVS 5862)

FossilOrigin-Name: f818e8e5cb20c51922d0b5424f17649e0692f273
This commit is contained in:
danielk1977
2008-11-04 14:55:47 +00:00
parent 2838b47234
commit 5f6d0268fb
4 changed files with 88 additions and 11 deletions

View File

@@ -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 },