mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Enhancements to the testing logic for malloc and mutex. Only permit one
of MEMSYS3/5 to be compiled-in at a time. Omit the SQLITE_CONFIG_MEMSYS3/5 configuration options. (CVS 5389) FossilOrigin-Name: ed8b2525006ae7f8cacd01b291760513fdbdff57
This commit is contained in:
27
manifest
27
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\sa\scrash\sin\sflattenSubquery().\s(CVS\s5388)
|
C Enhancements\sto\sthe\stesting\slogic\sfor\smalloc\sand\smutex.\s\sOnly\spermit\sone\nof\sMEMSYS3/5\sto\sbe\scompiled-in\sat\sa\stime.\s\sOmit\sthe\sSQLITE_CONFIG_MEMSYS3/5\nconfiguration\soptions.\s(CVS\s5389)
|
||||||
D 2008-07-10T17:59:12
|
D 2008-07-10T18:13:42
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in a03f7cb4f7ad50bc53a788c6c544430e81f95de4
|
F Makefile.in a03f7cb4f7ad50bc53a788c6c544430e81f95de4
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -114,11 +114,11 @@ F src/insert.c e8efc17d037346e4a4a6949e72aab850befe3d5d
|
|||||||
F src/journal.c cffd2cd214e58c0e99c3ff632b3bee6c7cbb260e
|
F src/journal.c cffd2cd214e58c0e99c3ff632b3bee6c7cbb260e
|
||||||
F src/legacy.c 3626c71fb70912abec9a4312beba753a9ce800df
|
F src/legacy.c 3626c71fb70912abec9a4312beba753a9ce800df
|
||||||
F src/loadext.c ae0eed9fa96d74172d2a90ee63b5bc36d284295c
|
F src/loadext.c ae0eed9fa96d74172d2a90ee63b5bc36d284295c
|
||||||
F src/main.c 85517c4d61ed24f2d0230335aedd6270a69f59dd
|
F src/main.c ff7d9e39d014cc36246c334f6076e44e20db45ca
|
||||||
F src/malloc.c 226a532e9e371d1bb3de2553bdd1f9b600ef099c
|
F src/malloc.c 226a532e9e371d1bb3de2553bdd1f9b600ef099c
|
||||||
F src/md5.c 008216bbb5d34c6fbab5357aa68575ad8a31516a
|
F src/md5.c 008216bbb5d34c6fbab5357aa68575ad8a31516a
|
||||||
F src/mem1.c 8340fa5f969e9f9b9bdeb54106457a2003456d2b
|
F src/mem1.c 8340fa5f969e9f9b9bdeb54106457a2003456d2b
|
||||||
F src/mem2.c 23f9538f35fbcd5665afe7056a56be0c7ed65aa7
|
F src/mem2.c 0fc5bd6581c80f3ebd9d0cdf0f3f9c08826397ba
|
||||||
F src/mem3.c abaf65e3fa911b8acdbb67a50a54ec149af55736
|
F src/mem3.c abaf65e3fa911b8acdbb67a50a54ec149af55736
|
||||||
F src/mem4.c 6703adb1717b26d9d70a1c2586b4b7b7ffee7909
|
F src/mem4.c 6703adb1717b26d9d70a1c2586b4b7b7ffee7909
|
||||||
F src/mem5.c 6c711af220f2c1566724dc439a34a98f94ab01a0
|
F src/mem5.c 6c711af220f2c1566724dc439a34a98f94ab01a0
|
||||||
@@ -142,7 +142,7 @@ F src/printf.c 8e5d410220cf8650f502caf71f0de979a3f9031e
|
|||||||
F src/random.c 5c754319d38abdd6acd74601ee0105504adc508a
|
F src/random.c 5c754319d38abdd6acd74601ee0105504adc508a
|
||||||
F src/select.c fcf51df1818a448edebf55b032d89771ba4536ef
|
F src/select.c fcf51df1818a448edebf55b032d89771ba4536ef
|
||||||
F src/shell.c 484e7297e066f22830f9c15d7abbcdd2acb097b0
|
F src/shell.c 484e7297e066f22830f9c15d7abbcdd2acb097b0
|
||||||
F src/sqlite.h.in 2fcdb1c1ee337d8371eb43a0c29294562b76ee23
|
F src/sqlite.h.in 8d25645bc8aee60e3089d05f3dbb8f66d1af0cd5
|
||||||
F src/sqlite3ext.h 1e3887c9bd3ae66cb599e922824b04cd0d0f2c3e
|
F src/sqlite3ext.h 1e3887c9bd3ae66cb599e922824b04cd0d0f2c3e
|
||||||
F src/sqliteInt.h ca0dc923bcc51bef0064f34628bd6daeb0d68d38
|
F src/sqliteInt.h ca0dc923bcc51bef0064f34628bd6daeb0d68d38
|
||||||
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
|
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
|
||||||
@@ -166,9 +166,9 @@ F src/test_devsym.c 6012cb8e3acf812513511025a4fa5d626e0ba19b
|
|||||||
F src/test_func.c ade4f0117cc96c5a05682e1ef38b84320a866ad9
|
F src/test_func.c ade4f0117cc96c5a05682e1ef38b84320a866ad9
|
||||||
F src/test_hexio.c 2f1122aa3f012fa0142ee3c36ce5c902a70cd12f
|
F src/test_hexio.c 2f1122aa3f012fa0142ee3c36ce5c902a70cd12f
|
||||||
F src/test_loadext.c df8ab3a6481ddebbdf0d28ebac5d9e0790f7860f
|
F src/test_loadext.c df8ab3a6481ddebbdf0d28ebac5d9e0790f7860f
|
||||||
F src/test_malloc.c e9e1500f85c50964adc34892045410c08aaf67ff
|
F src/test_malloc.c 4f07302a0077f2c1730baa7aeb359e4f51960aa7
|
||||||
F src/test_md5.c 28209a4e2068711b5443c33104fe41f21d160071
|
F src/test_md5.c 28209a4e2068711b5443c33104fe41f21d160071
|
||||||
F src/test_mutex.c 195d88dfc206d98ef6af3700c294c66a822e6378
|
F src/test_mutex.c 893cdb8a1d8015e0103c0fa48e2aaca2d40d4dc7
|
||||||
F src/test_onefile.c 243157b10275251c5dc2d6619aee2ff9ae22379c
|
F src/test_onefile.c 243157b10275251c5dc2d6619aee2ff9ae22379c
|
||||||
F src/test_osinst.c 867f1317bd135f942a63eab5a78da40fc70d1493
|
F src/test_osinst.c 867f1317bd135f942a63eab5a78da40fc70d1493
|
||||||
F src/test_schema.c 4b4bf7bb329326458c491b0e6facd4c8c4c5b479
|
F src/test_schema.c 4b4bf7bb329326458c491b0e6facd4c8c4c5b479
|
||||||
@@ -403,6 +403,7 @@ F test/manydb.test 8de36b8d33aab5ef295b11d9e95310aeded31af8
|
|||||||
F test/memdb.test a67bda4ff90a38f2b19f6c7f95aa7289e051d893
|
F test/memdb.test a67bda4ff90a38f2b19f6c7f95aa7289e051d893
|
||||||
F test/memleak.test d2d2a1ff7105d32dc3fdf691458cf6cba58c7217
|
F test/memleak.test d2d2a1ff7105d32dc3fdf691458cf6cba58c7217
|
||||||
F test/memsubsys1.test 209156a07aaf99d095ef2e3a3a0acd5d55c978f6
|
F test/memsubsys1.test 209156a07aaf99d095ef2e3a3a0acd5d55c978f6
|
||||||
|
F test/memsubsys2.test c05b541f9c2a1234a9dc2ff2233b3a9544fa5139
|
||||||
F test/minmax.test 722d80816f7e096bf2c04f4111f1a6c1ba65453d
|
F test/minmax.test 722d80816f7e096bf2c04f4111f1a6c1ba65453d
|
||||||
F test/minmax2.test 33504c01a03bd99226144e4b03f7631a274d66e0
|
F test/minmax2.test 33504c01a03bd99226144e4b03f7631a274d66e0
|
||||||
F test/minmax3.test 05110398e065875b3d9315892889d3c87fccfe2b
|
F test/minmax3.test 05110398e065875b3d9315892889d3c87fccfe2b
|
||||||
@@ -415,7 +416,7 @@ F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
|
|||||||
F test/misc7.test 68198e6a699f0e8e8e7641d597a9e77c87c961d6
|
F test/misc7.test 68198e6a699f0e8e8e7641d597a9e77c87c961d6
|
||||||
F test/misuse.test 30b3a458e5a70c31e74c291937b6c82204c59f33
|
F test/misuse.test 30b3a458e5a70c31e74c291937b6c82204c59f33
|
||||||
F test/mutex1.test b0017a45203e92ddab9e27cc3d6bd5c8637925ac
|
F test/mutex1.test b0017a45203e92ddab9e27cc3d6bd5c8637925ac
|
||||||
F test/mutex2.test a006d753714ea7e00b90b6f9c061bdde5be16435
|
F test/mutex2.test 64a627f58c95bce467f4bce41e788b64268e3309
|
||||||
F test/nan.test 14c41572ff52dbc740b1c3303dd313a90dc6084c
|
F test/nan.test 14c41572ff52dbc740b1c3303dd313a90dc6084c
|
||||||
F test/notnull.test 44d600f916b770def8b095a9962dbe3be5a70d82
|
F test/notnull.test 44d600f916b770def8b095a9962dbe3be5a70d82
|
||||||
F test/null.test a8b09b8ed87852742343b33441a9240022108993
|
F test/null.test a8b09b8ed87852742343b33441a9240022108993
|
||||||
@@ -425,7 +426,7 @@ F test/pager2.test c025f91b75fe65e85febda64d9416428b8a5cab5
|
|||||||
F test/pager3.test 2323bf27fd5bd887b580247e5bce500ceee994b4
|
F test/pager3.test 2323bf27fd5bd887b580247e5bce500ceee994b4
|
||||||
F test/pageropt.test 6df72c441db0a037b7ec6990d16311c24fbea77b
|
F test/pageropt.test 6df72c441db0a037b7ec6990d16311c24fbea77b
|
||||||
F test/pagesize.test e0a8b3fe80f8b8e808d94a00734c7a18c76c407e
|
F test/pagesize.test e0a8b3fe80f8b8e808d94a00734c7a18c76c407e
|
||||||
F test/permutations.test 1a2047d4cded4f9c0a81fd16aa5ee47f9c3928de
|
F test/permutations.test bf962d39b77fd87555455d16bb1208d32a732c6d
|
||||||
F test/pragma.test e1984ed47f699a4a817008dab4111be31ee8b935
|
F test/pragma.test e1984ed47f699a4a817008dab4111be31ee8b935
|
||||||
F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
|
F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
|
||||||
F test/printf.test 262a5acd3158f788e9bdf7f18d718f3af32ff6ef
|
F test/printf.test 262a5acd3158f788e9bdf7f18d718f3af32ff6ef
|
||||||
@@ -600,7 +601,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
|
|||||||
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||||
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
|
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
P 7e58b78712420b3bd4320192a58d89eb71eecc9c
|
P 9c8b97ef593c17740640a01a7338164d7fbe070e
|
||||||
R 0939dee77d063e7cffac53f1e1ad55a1
|
R 2fd49240ed9bef71f7d65c695010f7c4
|
||||||
U danielk1977
|
U drh
|
||||||
Z a0db231c1a42fdb08eeec046ea7b2e61
|
Z ab81163c7db604825f9001df3cff3c52
|
||||||
|
@@ -1 +1 @@
|
|||||||
9c8b97ef593c17740640a01a7338164d7fbe070e
|
ed8b2525006ae7f8cacd01b291760513fdbdff57
|
41
src/main.c
41
src/main.c
@@ -14,7 +14,7 @@
|
|||||||
** other files are for internal use by SQLite and should not be
|
** other files are for internal use by SQLite and should not be
|
||||||
** accessed by users of the library.
|
** accessed by users of the library.
|
||||||
**
|
**
|
||||||
** $Id: main.c,v 1.474 2008/07/10 17:52:49 danielk1977 Exp $
|
** $Id: main.c,v 1.475 2008/07/10 18:13:42 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -228,26 +228,31 @@ int sqlite3_config(int op, ...){
|
|||||||
sqlite3Config.nHeap = va_arg(ap, int);
|
sqlite3Config.nHeap = va_arg(ap, int);
|
||||||
sqlite3Config.mnReq = va_arg(ap, int);
|
sqlite3Config.mnReq = va_arg(ap, int);
|
||||||
|
|
||||||
/* Fall through to install the mem5.c/mem3.c methods. If neither
|
if( sqlite3Config.pHeap==0 ){
|
||||||
** ENABLE_MEMSYS3 nor ENABLE_MEMSYS5 is defined, fall through to
|
/* If the heap pointer is NULL, then restore the malloc implementation
|
||||||
** the default case and return an error.
|
** back to NULL pointers too. This will cause the malloc to go
|
||||||
*/
|
** back to its default implementation when sqlite3_initialize() is
|
||||||
}
|
** run.
|
||||||
|
*/
|
||||||
#ifdef SQLITE_ENABLE_MEMSYS5
|
memset(&sqlite3Config.m, 0, sizeof(sqlite3Config.m));
|
||||||
case SQLITE_CONFIG_MEMSYS5: {
|
}else{
|
||||||
sqlite3_mem_methods *p = sqlite3MemGetMemsys5();
|
/* The heap pointer is not NULL, then install one of the
|
||||||
sqlite3Config.m = *p;
|
** mem5.c/mem3.c methods. If neither ENABLE_MEMSYS3 nor
|
||||||
break;
|
** ENABLE_MEMSYS5 is defined, return an error.
|
||||||
}
|
** the default case and return an error.
|
||||||
#endif
|
*/
|
||||||
#ifdef SQLITE_ENABLE_MEMSYS3
|
#ifdef SQLITE_ENABLE_MEMSYS3
|
||||||
case SQLITE_CONFIG_MEMSYS3: {
|
sqlite3Config.m = sqlite3MemGetMemsys3();
|
||||||
sqlite3_mem_methods *p = sqlite3MemGetMemsys3();
|
#endif
|
||||||
sqlite3Config.m = *p;
|
#ifdef SQLITE_ENABLE_MEMSYS5
|
||||||
|
sqlite3Config.m = sqlite3MemGetMemsys5();
|
||||||
|
#endif
|
||||||
|
#if !defined(SQLITE_ENABLE_MEMSYS3) && !defined(SQLITE_ENABLE_MEMSYS5)
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
rc = SQLITE_ERROR;
|
rc = SQLITE_ERROR;
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
** This file contains implementations of the low-level memory allocation
|
** This file contains implementations of the low-level memory allocation
|
||||||
** routines specified in the sqlite3_mem_methods object.
|
** routines specified in the sqlite3_mem_methods object.
|
||||||
**
|
**
|
||||||
** $Id: mem2.c,v 1.33 2008/06/19 01:03:18 drh Exp $
|
** $Id: mem2.c,v 1.34 2008/07/10 18:13:42 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
|
|
||||||
@@ -174,7 +174,6 @@ static int sqlite3MemInit(void *NotUsed){
|
|||||||
** Deinitialize the memory allocation subsystem.
|
** Deinitialize the memory allocation subsystem.
|
||||||
*/
|
*/
|
||||||
static void sqlite3MemShutdown(void *NotUsed){
|
static void sqlite3MemShutdown(void *NotUsed){
|
||||||
sqlite3_mutex_free(mem.mutex);
|
|
||||||
mem.mutex = 0;
|
mem.mutex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
** the version number) and changes its name to "sqlite3.h" as
|
** the version number) and changes its name to "sqlite3.h" as
|
||||||
** part of the build process.
|
** part of the build process.
|
||||||
**
|
**
|
||||||
** @(#) $Id: sqlite.h.in,v 1.366 2008/07/10 17:52:49 danielk1977 Exp $
|
** @(#) $Id: sqlite.h.in,v 1.367 2008/07/10 18:13:42 drh Exp $
|
||||||
*/
|
*/
|
||||||
#ifndef _SQLITE3_H_
|
#ifndef _SQLITE3_H_
|
||||||
#define _SQLITE3_H_
|
#define _SQLITE3_H_
|
||||||
@@ -1107,12 +1107,13 @@ struct sqlite3_mem_methods {
|
|||||||
** for all of its dynamic memory allocation needs beyond those provided
|
** for all of its dynamic memory allocation needs beyond those provided
|
||||||
** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
|
** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
|
||||||
** There are three arguments: A pointer to the memory, the number of
|
** There are three arguments: A pointer to the memory, the number of
|
||||||
** bytes in the memory buffer, and the minimum allocation size. When
|
** bytes in the memory buffer, and the minimum allocation size. If
|
||||||
** this configuration option is used, SQLite never calls the system
|
** the first pointer (the memory pointer) is NULL, then SQLite reverts
|
||||||
** malloc() implementation but instead uses the supplied memory buffer
|
** to using its default memory allocator (the system malloc() implementation),
|
||||||
** to satisfy all [sqlite3_malloc()] requests. This option is only
|
** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. If the
|
||||||
** available if either or both of SQLITE_ENABLE_MEMSYS3 and
|
** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or
|
||||||
** SQLITE_ENABLE_MEMSYS5 are defined during compilation.</dd>
|
** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
|
||||||
|
** allocator is engaged to handle all of SQLites memory allocation needs.</dd>
|
||||||
**
|
**
|
||||||
** <dt>SQLITE_CONFIG_MUTEX</dt>
|
** <dt>SQLITE_CONFIG_MUTEX</dt>
|
||||||
** <dd>This option takes a single argument which is a pointer to an
|
** <dd>This option takes a single argument which is a pointer to an
|
||||||
@@ -1128,23 +1129,6 @@ struct sqlite3_mem_methods {
|
|||||||
** This option can be used to overload the default mutex allocation
|
** This option can be used to overload the default mutex allocation
|
||||||
** routines with a wrapper used to track mutex usage for performance
|
** routines with a wrapper used to track mutex usage for performance
|
||||||
** profiling or testing, for example.</dd>
|
** profiling or testing, for example.</dd>
|
||||||
**
|
|
||||||
** <dt>SQLITE_CONFIG_MEMSYS3</dt>
|
|
||||||
** <dd>This option is only available if SQLite is compiled with the
|
|
||||||
** SQLITE_ENABLE_MEMSYS3 symbol defined. It selects one of two memory
|
|
||||||
** allocation systems that use the block of memory supplied to sqlite
|
|
||||||
** using the SQLITE_CONFIG_HEAP option.
|
|
||||||
** </dd>
|
|
||||||
**
|
|
||||||
** <dt>SQLITE_CONFIG_MEMSYS5</dt>
|
|
||||||
** <dd>This option is only available if SQLite is compiled with the
|
|
||||||
** SQLITE_ENABLE_MEMSYS5 symbol defined. It selects one of two memory
|
|
||||||
** allocation systems that use the block of memory supplied to sqlite
|
|
||||||
** using the SQLITE_CONFIG_HEAP option. The memory allocation system
|
|
||||||
** selected by this option, "memsys5", is also installed by default
|
|
||||||
** when the SQLITE_CONFIG_HEAP option is set, so it is not usually
|
|
||||||
** necessary to use this option directly.
|
|
||||||
** </dd>
|
|
||||||
*/
|
*/
|
||||||
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
||||||
#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
|
#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
|
||||||
@@ -1157,8 +1141,7 @@ struct sqlite3_mem_methods {
|
|||||||
#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */
|
#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */
|
||||||
#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */
|
#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */
|
||||||
#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
|
#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
|
||||||
#define SQLITE_CONFIG_MEMSYS3 12 /* nil */
|
|
||||||
#define SQLITE_CONFIG_MEMSYS5 13 /* nil */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Enable Or Disable Extended Result Codes {F12200}
|
** CAPI3REF: Enable Or Disable Extended Result Codes {F12200}
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
** This file contains code used to implement test interfaces to the
|
** This file contains code used to implement test interfaces to the
|
||||||
** memory allocation subsystem.
|
** memory allocation subsystem.
|
||||||
**
|
**
|
||||||
** $Id: test_malloc.c,v 1.35 2008/07/09 16:51:51 drh Exp $
|
** $Id: test_malloc.c,v 1.36 2008/07/10 18:13:42 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include "tcl.h"
|
#include "tcl.h"
|
||||||
@@ -235,6 +235,10 @@ static void pointerToText(void *p, char *z){
|
|||||||
int i, k;
|
int i, k;
|
||||||
unsigned int u;
|
unsigned int u;
|
||||||
sqlite3_uint64 n;
|
sqlite3_uint64 n;
|
||||||
|
if( p==0 ){
|
||||||
|
strcpy(z, "0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if( sizeof(n)==sizeof(p) ){
|
if( sizeof(n)==sizeof(p) ){
|
||||||
memcpy(&n, &p, sizeof(p));
|
memcpy(&n, &p, sizeof(p));
|
||||||
}else if( sizeof(u)==sizeof(p) ){
|
}else if( sizeof(u)==sizeof(p) ){
|
||||||
@@ -930,10 +934,32 @@ static int test_config_pagecache(
|
|||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Usage: sqlite3_config_memstatus BOOLEAN
|
||||||
|
**
|
||||||
|
** Enable or disable memory status reporting using SQLITE_CONFIG_MEMSTATUS.
|
||||||
|
*/
|
||||||
|
static int test_config_memstatus(
|
||||||
|
void * clientData,
|
||||||
|
Tcl_Interp *interp,
|
||||||
|
int objc,
|
||||||
|
Tcl_Obj *CONST objv[]
|
||||||
|
){
|
||||||
|
int enable, rc;
|
||||||
|
if( objc!=2 ){
|
||||||
|
Tcl_WrongNumArgs(interp, 1, objv, "BOOLEAN");
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
if( Tcl_GetBooleanFromObj(interp, objv[1], &enable) ) return TCL_ERROR;
|
||||||
|
rc = sqlite3_config(SQLITE_CONFIG_MEMSTATUS, enable);
|
||||||
|
Tcl_SetObjResult(interp, Tcl_NewIntObj(rc));
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Usage:
|
** Usage:
|
||||||
**
|
**
|
||||||
** sqlite3_config_heap ?-memsys3? NBYTE NMINALLOC
|
** sqlite3_config_heap NBYTE NMINALLOC
|
||||||
*/
|
*/
|
||||||
static int test_config_heap(
|
static int test_config_heap(
|
||||||
void * clientData,
|
void * clientData,
|
||||||
@@ -945,35 +971,24 @@ static int test_config_heap(
|
|||||||
int nByte; /* Size of buffer to pass to sqlite3_config() */
|
int nByte; /* Size of buffer to pass to sqlite3_config() */
|
||||||
int nMinAlloc; /* Size of minimum allocation */
|
int nMinAlloc; /* Size of minimum allocation */
|
||||||
int rc; /* Return code of sqlite3_config() */
|
int rc; /* Return code of sqlite3_config() */
|
||||||
int isMemsys3 = 0; /* True if the -memsys3 switch is present */
|
|
||||||
|
|
||||||
Tcl_Obj * CONST *aArg = &objv[1];
|
Tcl_Obj * CONST *aArg = &objv[1];
|
||||||
int nArg = objc-1;
|
int nArg = objc-1;
|
||||||
|
|
||||||
if( nArg>0 && 0==strcmp("-memsys3", Tcl_GetString(aArg[0])) ){
|
|
||||||
nArg--;
|
|
||||||
aArg++;
|
|
||||||
isMemsys3 = 1;
|
|
||||||
}
|
|
||||||
if( nArg!=2 ){
|
if( nArg!=2 ){
|
||||||
Tcl_WrongNumArgs(interp, 1, objv, "?-memsys3? NBYTE NMINALLOC");
|
Tcl_WrongNumArgs(interp, 1, objv, "NBYTE NMINALLOC");
|
||||||
return TCL_ERROR;
|
return TCL_ERROR;
|
||||||
}
|
}
|
||||||
if( Tcl_GetIntFromObj(interp, aArg[0], &nByte) ) return TCL_ERROR;
|
if( Tcl_GetIntFromObj(interp, aArg[0], &nByte) ) return TCL_ERROR;
|
||||||
if( Tcl_GetIntFromObj(interp, aArg[1], &nMinAlloc) ) return TCL_ERROR;
|
if( Tcl_GetIntFromObj(interp, aArg[1], &nMinAlloc) ) return TCL_ERROR;
|
||||||
|
|
||||||
if( nByte==0 ){
|
if( nByte==0 ){
|
||||||
sqlite3_mem_methods m;
|
rc = sqlite3_config(SQLITE_CONFIG_HEAP, (void*)0, 0, 0);
|
||||||
memset(&m, 0, sizeof(sqlite3_mem_methods));
|
|
||||||
rc = sqlite3_config(SQLITE_CONFIG_MALLOC, &m);
|
|
||||||
}else{
|
}else{
|
||||||
if( nByte>sizeof(zBuf) ){
|
if( nByte>sizeof(zBuf) ){
|
||||||
nByte = sizeof(zBuf);
|
nByte = sizeof(zBuf);
|
||||||
}
|
}
|
||||||
rc = sqlite3_config(SQLITE_CONFIG_HEAP, zBuf, nByte, nMinAlloc);
|
rc = sqlite3_config(SQLITE_CONFIG_HEAP, zBuf, nByte, nMinAlloc);
|
||||||
if( isMemsys3 && rc==SQLITE_OK ){
|
|
||||||
rc = sqlite3_config(SQLITE_CONFIG_MEMSYS3);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
||||||
@@ -1105,25 +1120,26 @@ int Sqlitetest_malloc_Init(Tcl_Interp *interp){
|
|||||||
Tcl_ObjCmdProc *xProc;
|
Tcl_ObjCmdProc *xProc;
|
||||||
int clientData;
|
int clientData;
|
||||||
} aObjCmd[] = {
|
} aObjCmd[] = {
|
||||||
{ "sqlite3_malloc", test_malloc ,0. },
|
{ "sqlite3_malloc", test_malloc ,0 },
|
||||||
{ "sqlite3_realloc", test_realloc ,0. },
|
{ "sqlite3_realloc", test_realloc ,0 },
|
||||||
{ "sqlite3_free", test_free ,0. },
|
{ "sqlite3_free", test_free ,0 },
|
||||||
{ "memset", test_memset ,0. },
|
{ "memset", test_memset ,0 },
|
||||||
{ "memget", test_memget ,0. },
|
{ "memget", test_memget ,0 },
|
||||||
{ "sqlite3_memory_used", test_memory_used ,0. },
|
{ "sqlite3_memory_used", test_memory_used ,0 },
|
||||||
{ "sqlite3_memory_highwater", test_memory_highwater ,0. },
|
{ "sqlite3_memory_highwater", test_memory_highwater ,0 },
|
||||||
{ "sqlite3_memdebug_backtrace", test_memdebug_backtrace ,0. },
|
{ "sqlite3_memdebug_backtrace", test_memdebug_backtrace ,0 },
|
||||||
{ "sqlite3_memdebug_dump", test_memdebug_dump ,0. },
|
{ "sqlite3_memdebug_dump", test_memdebug_dump ,0 },
|
||||||
{ "sqlite3_memdebug_fail", test_memdebug_fail ,0. },
|
{ "sqlite3_memdebug_fail", test_memdebug_fail ,0 },
|
||||||
{ "sqlite3_memdebug_pending", test_memdebug_pending ,0. },
|
{ "sqlite3_memdebug_pending", test_memdebug_pending ,0 },
|
||||||
{ "sqlite3_memdebug_settitle", test_memdebug_settitle ,0. },
|
{ "sqlite3_memdebug_settitle", test_memdebug_settitle ,0 },
|
||||||
{ "sqlite3_memdebug_malloc_count", test_memdebug_malloc_count ,0. },
|
{ "sqlite3_memdebug_malloc_count", test_memdebug_malloc_count ,0 },
|
||||||
{ "sqlite3_memdebug_log", test_memdebug_log ,0. },
|
{ "sqlite3_memdebug_log", test_memdebug_log ,0 },
|
||||||
{ "sqlite3_config_scratch", test_config_scratch ,0. },
|
{ "sqlite3_config_scratch", test_config_scratch ,0 },
|
||||||
{ "sqlite3_config_pagecache", test_config_pagecache ,0. },
|
{ "sqlite3_config_pagecache", test_config_pagecache ,0 },
|
||||||
{ "sqlite3_status", test_status ,0. },
|
{ "sqlite3_status", test_status ,0 },
|
||||||
{ "install_malloc_faultsim", test_install_malloc_faultsim ,0. },
|
{ "install_malloc_faultsim", test_install_malloc_faultsim ,0 },
|
||||||
{ "sqlite3_config_heap", test_config_heap ,0 },
|
{ "sqlite3_config_heap", test_config_heap ,0 },
|
||||||
|
{ "sqlite3_config_memstatus", test_config_memstatus ,0 },
|
||||||
{ "sqlite3_dump_memsys3", test_dump_memsys3 ,3 },
|
{ "sqlite3_dump_memsys3", test_dump_memsys3 ,3 },
|
||||||
{ "sqlite3_dump_memsys5", test_dump_memsys3 ,5 }
|
{ "sqlite3_dump_memsys5", test_dump_memsys3 ,5 }
|
||||||
};
|
};
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
**
|
**
|
||||||
*************************************************************************
|
*************************************************************************
|
||||||
**
|
**
|
||||||
** $Id: test_mutex.c,v 1.7 2008/07/10 17:52:49 danielk1977 Exp $
|
** $Id: test_mutex.c,v 1.8 2008/07/10 18:13:42 drh Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "tcl.h"
|
#include "tcl.h"
|
||||||
@@ -33,6 +33,7 @@ struct sqlite3_mutex {
|
|||||||
static struct test_mutex_globals {
|
static struct test_mutex_globals {
|
||||||
int isInstalled; /* True if installed */
|
int isInstalled; /* True if installed */
|
||||||
int disableInit; /* True to cause sqlite3_initalize() to fail */
|
int disableInit; /* True to cause sqlite3_initalize() to fail */
|
||||||
|
int disableTry; /* True to force sqlite3_mutex_try() to fail */
|
||||||
int isInit; /* True if initialized */
|
int isInit; /* True if initialized */
|
||||||
sqlite3_mutex_methods m; /* Interface to "real" mutex system */
|
sqlite3_mutex_methods m; /* Interface to "real" mutex system */
|
||||||
int aCounter[8]; /* Number of grabs of each type of mutex */
|
int aCounter[8]; /* Number of grabs of each type of mutex */
|
||||||
@@ -120,6 +121,7 @@ static void counterMutexEnter(sqlite3_mutex *p){
|
|||||||
static int counterMutexTry(sqlite3_mutex *p){
|
static int counterMutexTry(sqlite3_mutex *p){
|
||||||
assert( g.isInit );
|
assert( g.isInit );
|
||||||
g.aCounter[p->eType]++;
|
g.aCounter[p->eType]++;
|
||||||
|
if( g.disableTry ) return 0;
|
||||||
return g.m.xMutexTry(p->pReal);
|
return g.m.xMutexTry(p->pReal);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,6 +220,7 @@ static int test_install_mutex_counters(
|
|||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
sqlite3_config(SQLITE_CONFIG_MUTEX, &counter_methods);
|
sqlite3_config(SQLITE_CONFIG_MUTEX, &counter_methods);
|
||||||
}
|
}
|
||||||
|
g.disableTry = 0;
|
||||||
}else{
|
}else{
|
||||||
assert( g.m.xMutexAlloc );
|
assert( g.m.xMutexAlloc );
|
||||||
rc = sqlite3_config(SQLITE_CONFIG_MUTEX, &g.m);
|
rc = sqlite3_config(SQLITE_CONFIG_MUTEX, &g.m);
|
||||||
@@ -308,6 +311,14 @@ static int test_alloc_mutex(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
** sqlite3_config OPTION
|
** sqlite3_config OPTION
|
||||||
|
**
|
||||||
|
** OPTION can be either one of the keywords:
|
||||||
|
**
|
||||||
|
** SQLITE_CONFIG_SINGLETHREAD
|
||||||
|
** SQLITE_CONFIG_MULTITHREAD
|
||||||
|
** SQLITE_CONFIG_SERIALIZED
|
||||||
|
**
|
||||||
|
** Or OPTION can be an raw integer.
|
||||||
*/
|
*/
|
||||||
static int test_config(
|
static int test_config(
|
||||||
void * clientData,
|
void * clientData,
|
||||||
@@ -334,10 +345,14 @@ static int test_config(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( Tcl_GetIndexFromObjStruct(interp, objv[1], aOpt, s, "flag", 0, &i) ){
|
if( Tcl_GetIndexFromObjStruct(interp, objv[1], aOpt, s, "flag", 0, &i) ){
|
||||||
return TCL_ERROR;
|
if( Tcl_GetIntFromObj(interp, objv[1], &i) ){
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
i = aOpt[i].iValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = sqlite3_config(aOpt[i].iValue);
|
rc = sqlite3_config(i);
|
||||||
Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
@@ -364,5 +379,7 @@ int Sqlitetest_mutex_Init(Tcl_Interp *interp){
|
|||||||
|
|
||||||
Tcl_LinkVar(interp, "disable_mutex_init",
|
Tcl_LinkVar(interp, "disable_mutex_init",
|
||||||
(char*)&g.disableInit, TCL_LINK_INT);
|
(char*)&g.disableInit, TCL_LINK_INT);
|
||||||
|
Tcl_LinkVar(interp, "disable_mutex_try",
|
||||||
|
(char*)&g.disableTry, TCL_LINK_INT);
|
||||||
return SQLITE_OK;
|
return SQLITE_OK;
|
||||||
}
|
}
|
||||||
|
157
test/memsubsys2.test
Normal file
157
test/memsubsys2.test
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
# 2008 June 18
|
||||||
|
#
|
||||||
|
# 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 contains tests of the memory allocation subsystem.
|
||||||
|
#
|
||||||
|
# $Id: memsubsys2.test,v 1.1 2008/07/10 18:13:43 drh Exp $
|
||||||
|
|
||||||
|
set testdir [file dirname $argv0]
|
||||||
|
source $testdir/tester.tcl
|
||||||
|
sqlite3_reset_auto_extension
|
||||||
|
|
||||||
|
# This procedure constructs a new database in test.db. It fills
|
||||||
|
# this database with many small records (enough to force multiple
|
||||||
|
# rebalance operations in the btree-layer and to require a large
|
||||||
|
# page cache), verifies correct results, then returns.
|
||||||
|
#
|
||||||
|
proc build_test_db {testname pragmas} {
|
||||||
|
catch {db close}
|
||||||
|
file delete -force test.db test.db-journal
|
||||||
|
sqlite3 db test.db
|
||||||
|
db eval $pragmas
|
||||||
|
db eval {
|
||||||
|
CREATE TABLE t1(x, y);
|
||||||
|
CREATE TABLE t2(a, b);
|
||||||
|
CREATE INDEX i1 ON t1(x,y);
|
||||||
|
INSERT INTO t1 VALUES(1, 100);
|
||||||
|
INSERT INTO t1 VALUES(2, 200);
|
||||||
|
}
|
||||||
|
for {set i 2} {$i<5000} {incr i $i} {
|
||||||
|
db eval {INSERT INTO t2 SELECT * FROM t1}
|
||||||
|
db eval {INSERT INTO t1 SELECT a+$i, a+b*100 FROM t2}
|
||||||
|
db eval {DELETE FROM t2}
|
||||||
|
}
|
||||||
|
do_test $testname.1 {
|
||||||
|
db eval {SELECT count(*) FROM t1}
|
||||||
|
} 8192
|
||||||
|
integrity_check $testname.2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Test 1: Verify that calling sqlite3_malloc(0) returns a NULL
|
||||||
|
# pointer.
|
||||||
|
#
|
||||||
|
set highwater [sqlite3_memory_highwater 0]
|
||||||
|
do_test memsubsys2-1.1 {
|
||||||
|
sqlite3_malloc 0
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-1.2 {
|
||||||
|
sqlite3_memory_highwater 0
|
||||||
|
} $highwater
|
||||||
|
|
||||||
|
|
||||||
|
# Test 2: Verify that the highwater mark increases after a large
|
||||||
|
# allocation.
|
||||||
|
#
|
||||||
|
sqlite3_memory_highwater 1
|
||||||
|
set highwater [sqlite3_memory_highwater 0]
|
||||||
|
do_test memsubsys2-2.1 {
|
||||||
|
sqlite3_free [set x [sqlite3_malloc 100000]]
|
||||||
|
expr {$x!="0"}
|
||||||
|
} {1}
|
||||||
|
do_test memsubsys2-2.2 {
|
||||||
|
expr {[sqlite3_memory_highwater 0]>=[sqlite3_memory_used]+$highwater}
|
||||||
|
} {1}
|
||||||
|
|
||||||
|
# Test 3: Verify that turning of memstatus disables the statistics
|
||||||
|
# tracking.
|
||||||
|
#
|
||||||
|
db close
|
||||||
|
sqlite3_shutdown
|
||||||
|
sqlite3_config_memstatus 0
|
||||||
|
sqlite3_initialize
|
||||||
|
set highwater [sqlite3_memory_highwater 0]
|
||||||
|
do_test memsubsys2-3.1 {
|
||||||
|
set highwater
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-3.2 {
|
||||||
|
sqlite3_malloc 0
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-3.3 {
|
||||||
|
sqlite3_memory_highwater 0
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-3.4 {
|
||||||
|
sqlite3_memory_used
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-3.5 {
|
||||||
|
set ::allocation [sqlite3_malloc 100000]
|
||||||
|
expr {$::allocation!="0"}
|
||||||
|
} {1}
|
||||||
|
do_test memsubsys2-3.6 {
|
||||||
|
sqlite3_memory_highwater 0
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-3.7 {
|
||||||
|
sqlite3_memory_used
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-3.8 {
|
||||||
|
sqlite3_free $::allocation
|
||||||
|
} {}
|
||||||
|
do_test memsubsys2-3.9 {
|
||||||
|
sqlite3_free 0
|
||||||
|
} {}
|
||||||
|
|
||||||
|
|
||||||
|
# Test 4: Verify that turning on memstatus reenables the statistics
|
||||||
|
# tracking.
|
||||||
|
#
|
||||||
|
sqlite3_shutdown
|
||||||
|
sqlite3_config_memstatus 1
|
||||||
|
sqlite3_initialize
|
||||||
|
set highwater [sqlite3_memory_highwater 0]
|
||||||
|
do_test memsubsys2-4.1 {
|
||||||
|
set highwater
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-4.2 {
|
||||||
|
sqlite3_malloc 0
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-4.3 {
|
||||||
|
sqlite3_memory_highwater 0
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-4.4 {
|
||||||
|
sqlite3_memory_used
|
||||||
|
} {0}
|
||||||
|
do_test memsubsys2-4.5 {
|
||||||
|
set ::allocation [sqlite3_malloc 100000]
|
||||||
|
expr {$::allocation!="0"}
|
||||||
|
} {1}
|
||||||
|
do_test memsubsys2-4.6 {
|
||||||
|
expr {[sqlite3_memory_highwater 0]>=100000}
|
||||||
|
} {1}
|
||||||
|
do_test memsubsys2-4.7 {
|
||||||
|
expr {[sqlite3_memory_used]>=100000}
|
||||||
|
} {1}
|
||||||
|
do_test memsubsys2-4.8 {
|
||||||
|
sqlite3_free $::allocation
|
||||||
|
} {}
|
||||||
|
do_test memsubsys2-4.9 {
|
||||||
|
sqlite3_free 0
|
||||||
|
} {}
|
||||||
|
do_test memsubsys2-4.10 {
|
||||||
|
expr {[sqlite3_memory_highwater 0]>=100000}
|
||||||
|
} {1}
|
||||||
|
do_test memsubsys2-4.11 {
|
||||||
|
sqlite3_memory_used
|
||||||
|
} {0}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
autoinstall_test_functions
|
||||||
|
finish_test
|
@@ -11,7 +11,7 @@
|
|||||||
#
|
#
|
||||||
# Test scripts for deliberate failures of mutex routines.
|
# Test scripts for deliberate failures of mutex routines.
|
||||||
#
|
#
|
||||||
# $Id: mutex2.test,v 1.3 2008/07/08 02:12:37 drh Exp $
|
# $Id: mutex2.test,v 1.4 2008/07/10 18:13:43 drh Exp $
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
@@ -84,4 +84,14 @@ do_test mutex2-2.10 {
|
|||||||
install_mutex_counters 0
|
install_mutex_counters 0
|
||||||
set disable_mutex_init 0
|
set disable_mutex_init 0
|
||||||
autoinstall_test_functions
|
autoinstall_test_functions
|
||||||
|
|
||||||
|
# Mutex allocation works now.
|
||||||
|
#
|
||||||
|
|
||||||
|
do_test mutex2-3.1 {
|
||||||
|
set ptr [alloc_dealloc_mutex]
|
||||||
|
expr {$ptr!=0}
|
||||||
|
} {1}
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
#
|
#
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
#
|
#
|
||||||
# $Id: permutations.test,v 1.10 2008/07/10 17:52:49 danielk1977 Exp $
|
# $Id: permutations.test,v 1.11 2008/07/10 18:13:43 drh Exp $
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
@@ -35,7 +35,7 @@ if {$::testmode eq "all"} {
|
|||||||
set ::testmode {
|
set ::testmode {
|
||||||
memsubsys1 memsubsys2 singlethread multithread onefile utf16 exclusive
|
memsubsys1 memsubsys2 singlethread multithread onefile utf16 exclusive
|
||||||
persistent_journal persistent_journal_error no_journal no_journal_error
|
persistent_journal persistent_journal_error no_journal no_journal_error
|
||||||
autovacuum_ioerr
|
autovacuum_ioerr no_mutex_try
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if {$::testmode eq "targets"} {
|
if {$::testmode eq "targets"} {
|
||||||
@@ -49,19 +49,23 @@ if {$::testmode eq "targets"} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
set EXCLUDE {
|
set EXCLUDE {
|
||||||
all.test async.test async2.test corrupt.test
|
all.test in2.test onefile.test
|
||||||
crash.test crash2.test crash3.test crash4.test
|
async2.test incrvacuum_ioerr.test permutations.test
|
||||||
crash6.test crash7.test exclusive3.test fts3.test
|
async.test jrnlmode2.test quick.test
|
||||||
fuzz.test fuzz_malloc.test in2.test jrnlmode3.test
|
autovacuum_crash.test jrnlmode3.test shared_err.test
|
||||||
loadext.test mallocAll.test malloc.test malloc2.test
|
autovacuum_ioerr.test jrnlmode4.test soak.test
|
||||||
malloc3.test malloc4.test memleak.test misc7.test
|
btree8.test loadext.test speed1p.test
|
||||||
misuse.test mutex2.test onefile.test quick.test
|
corrupt.test malloc2.test speed1.test
|
||||||
soak.test speed1.test speed1p.test speed2.test
|
crash2.test malloc3.test speed2.test
|
||||||
speed3.test speed4.test speed4p.test sqllimits1.test
|
crash3.test malloc4.test speed3.test
|
||||||
thread001.test thread002.test btree8.test utf16.test
|
crash4.test mallocAll.test speed4p.test
|
||||||
shared_err.test vtab_err.test veryquick.test incrvacuum_ioerr.test
|
crash6.test malloc.test speed4.test
|
||||||
autovacuum_crash.test permutations.test
|
crash7.test memleak.test sqllimits1.test
|
||||||
autovacuum_ioerr.test jrnlmode2.test jrnlmode4.test
|
crash.test memsubsys1.test thread001.test
|
||||||
|
exclusive3.test memsubsys2.test thread002.test
|
||||||
|
fts3.test misc7.test utf16.test
|
||||||
|
fuzz_malloc.test misuse.test veryquick.test
|
||||||
|
fuzz.test mutex2.test vtab_err.test
|
||||||
}
|
}
|
||||||
set ALLTESTS [list]
|
set ALLTESTS [list]
|
||||||
foreach filename [glob $testdir/*.test] {
|
foreach filename [glob $testdir/*.test] {
|
||||||
@@ -142,8 +146,6 @@ run_tests "memsubsys1" -description {
|
|||||||
sqlite3_config_pagecache 4096 24
|
sqlite3_config_pagecache 4096 24
|
||||||
sqlite3_config_scratch 25000 1
|
sqlite3_config_scratch 25000 1
|
||||||
sqlite3_initialize
|
sqlite3_initialize
|
||||||
} -exclude {
|
|
||||||
memsubsys1.test
|
|
||||||
} -shutdown {
|
} -shutdown {
|
||||||
catch {db close}
|
catch {db close}
|
||||||
sqlite3_shutdown
|
sqlite3_shutdown
|
||||||
@@ -162,8 +164,6 @@ run_tests "memsubsys2" -description {
|
|||||||
sqlite3_config_pagecache 512 5
|
sqlite3_config_pagecache 512 5
|
||||||
sqlite3_config_scratch 1000 1
|
sqlite3_config_scratch 1000 1
|
||||||
sqlite3_initialize
|
sqlite3_initialize
|
||||||
} -exclude {
|
|
||||||
memsubsys1.test
|
|
||||||
} -shutdown {
|
} -shutdown {
|
||||||
catch {db close}
|
catch {db close}
|
||||||
sqlite3_shutdown
|
sqlite3_shutdown
|
||||||
@@ -352,15 +352,17 @@ ifcapable mem3 {
|
|||||||
run_tests "memsys3" -description {
|
run_tests "memsys3" -description {
|
||||||
Run tests using the allocator in mem3.c.
|
Run tests using the allocator in mem3.c.
|
||||||
} -exclude {
|
} -exclude {
|
||||||
incrblob2.test manydb.test autovacuum.test bigrow.test
|
autovacuum.test delete3.test manydb.test
|
||||||
collate5.test delete3.test index2.test ioerr.test join3.test
|
bigrow.test incrblob2.test memdb.test
|
||||||
pagesize.test bitvec.test capi3.test memsubsys1.test limit.test
|
bitvec.test index2.test memsubsys1.test
|
||||||
memdb.test capi3c.test
|
capi3c.test ioerr.test memsubsys2.test
|
||||||
|
capi3.test join3.test pagesize.test
|
||||||
|
collate5.test limit.test
|
||||||
} -initialize {
|
} -initialize {
|
||||||
catch {db close}
|
catch {db close}
|
||||||
sqlite3_reset_auto_extension
|
sqlite3_reset_auto_extension
|
||||||
sqlite3_shutdown
|
sqlite3_shutdown
|
||||||
sqlite3_config_heap -memsys3 1000000 0
|
sqlite3_config_heap 1000000 0
|
||||||
install_malloc_faultsim 1
|
install_malloc_faultsim 1
|
||||||
sqlite3_initialize
|
sqlite3_initialize
|
||||||
autoinstall_test_functions
|
autoinstall_test_functions
|
||||||
@@ -378,10 +380,12 @@ ifcapable mem5 {
|
|||||||
run_tests "memsys5" -description {
|
run_tests "memsys5" -description {
|
||||||
Run tests using the allocator in mem5.c.
|
Run tests using the allocator in mem5.c.
|
||||||
} -exclude {
|
} -exclude {
|
||||||
incrblob2.test manydb.test autovacuum.test bigrow.test
|
autovacuum.test delete3.test manydb.test
|
||||||
collate5.test delete3.test index2.test ioerr.test join3.test
|
bigrow.test incrblob2.test memdb.test
|
||||||
pagesize.test bitvec.test capi3.test memsubsys1.test limit.test
|
bitvec.test index2.test memsubsys1.test
|
||||||
memdb.test capi3c.test func.test
|
capi3c.test ioerr.test memsubsys2.test
|
||||||
|
capi3.test join3.test pagesize.test
|
||||||
|
collate5.test limit.test
|
||||||
} -initialize {
|
} -initialize {
|
||||||
catch {db close}
|
catch {db close}
|
||||||
sqlite3_reset_auto_extension
|
sqlite3_reset_auto_extension
|
||||||
@@ -401,7 +405,8 @@ ifcapable mem5 {
|
|||||||
|
|
||||||
run_tests "memsys5-2" -description {
|
run_tests "memsys5-2" -description {
|
||||||
Run tests using the allocator in mem5.c in a different configuration.
|
Run tests using the allocator in mem5.c in a different configuration.
|
||||||
} -include { select1.test
|
} -include {
|
||||||
|
select1.test
|
||||||
} -initialize {
|
} -initialize {
|
||||||
catch {db close}
|
catch {db close}
|
||||||
sqlite3_reset_auto_extension
|
sqlite3_reset_auto_extension
|
||||||
@@ -420,6 +425,21 @@ ifcapable mem5 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ifcapable threadsafe {
|
||||||
|
run_tests "no_mutex_try" -description {
|
||||||
|
The sqlite3_mutex_try() interface always fails
|
||||||
|
} -initialize {
|
||||||
|
catch {db close}
|
||||||
|
sqlite3_shutdown
|
||||||
|
install_mutex_counters 1
|
||||||
|
set ::disable_mutex_try 1
|
||||||
|
} -shutdown {
|
||||||
|
catch {db close}
|
||||||
|
sqlite3_shutdown
|
||||||
|
install_mutex_counters 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# run_tests "crash_safe_append" -description {
|
# run_tests "crash_safe_append" -description {
|
||||||
# Run crash.test with persistent journals on a SAFE_APPEND file-system.
|
# Run crash.test with persistent journals on a SAFE_APPEND file-system.
|
||||||
# } -initialize {
|
# } -initialize {
|
||||||
@@ -464,4 +484,3 @@ rename do_test ""
|
|||||||
rename really_do_test do_test
|
rename really_do_test do_test
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user