Revise the initialization and shutdown logic so that it no longer keeps

a recursive mutex allocated for the whole interval but instead releases
the mutex as soon as possible.  Do not reset status values upon initialization. (CVS 5559)

FossilOrigin-Name: 697fe7a3167c22a3232ce154e9d47cf75af613c4
This commit is contained in:
drh
2008-08-12 15:21:11 +00:00
parent 44a376f6b4
commit 93ed56d9ea
7 changed files with 146 additions and 67 deletions
+23 -1
View File
@@ -11,7 +11,7 @@
#
# This file contains tests of the memory allocation subsystem
#
# $Id: memsubsys1.test,v 1.8 2008/08/04 20:13:27 drh Exp $
# $Id: memsubsys1.test,v 1.9 2008/08/12 15:21:12 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@@ -46,12 +46,27 @@ proc build_test_db {testname pragmas} {
integrity_check $testname.2
}
# Reset all of the highwater marks.
#
proc reset_highwater_marks {} {
sqlite3_status SQLITE_STATUS_MEMORY_USED 1
sqlite3_status SQLITE_STATUS_MALLOC_SIZE 1
sqlite3_status SQLITE_STATUS_PAGECACHE_USED 1
sqlite3_status SQLITE_STATUS_PAGECACHE_OVERFLOW 1
sqlite3_status SQLITE_STATUS_PAGECACHE_SIZE 1
sqlite3_status SQLITE_STATUS_SCRATCH_USED 1
sqlite3_status SQLITE_STATUS_SCRATCH_OVERFLOW 1
sqlite3_status SQLITE_STATUS_SCRATCH_SIZE 1
sqlite3_status SQLITE_STATUS_PARSER_STACK 1
}
# Test 1: Both PAGECACHE and SCRATCH are shut down.
#
db close
sqlite3_shutdown
sqlite3_config_lookaside 0 0
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-1 {PRAGMA page_size=1024}
do_test memsubsys1-1.3 {
set pg_used [lindex [sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0] 2]
@@ -68,6 +83,7 @@ db close
sqlite3_shutdown
sqlite3_config_pagecache 1024 20
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-2 {PRAGMA page_size=1024}
#show_memstats
do_test memsubsys1-2.3 {
@@ -89,6 +105,7 @@ db close
sqlite3_shutdown
sqlite3_config_pagecache 512 20
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-3.1 {PRAGMA page_size=1024}
#show_memstats
do_test memsubsys1-3.1.3 {
@@ -104,6 +121,7 @@ db close
sqlite3_shutdown
sqlite3_config_pagecache 2048 20
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-3.2 {PRAGMA page_size=2048}
#show_memstats
do_test memsubsys1-3.2.3 {
@@ -123,6 +141,7 @@ sqlite3_shutdown
sqlite3_config_pagecache 1024 50
sqlite3_config_scratch 6000 2
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-4 {PRAGMA page_size=1024}
#show_memstats
do_test memsubsys1-4.3 {
@@ -149,6 +168,7 @@ sqlite3_shutdown
sqlite3_config_pagecache 4096 24
sqlite3_config_scratch 6000 2
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-5 {PRAGMA page_size=4096}
#show_memstats
do_test memsubsys1-5.3 {
@@ -174,6 +194,7 @@ sqlite3_shutdown
sqlite3_config_pagecache 4096 24
sqlite3_config_scratch 25000 1
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-6 {PRAGMA page_size=4096}
#show_memstats
do_test memsubsys1-6.3 {
@@ -198,6 +219,7 @@ sqlite3_shutdown
sqlite3_config_pagecache 4096 24
sqlite3_config_scratch 25000 1
sqlite3_initialize
reset_highwater_marks
build_test_db memsubsys1-7 {
PRAGMA page_size=4096;
PRAGMA cache_size=10;
+17 -1
View File
@@ -11,7 +11,7 @@
#
# This file contains tests of the memory allocation subsystem.
#
# $Id: memsubsys2.test,v 1.1 2008/07/10 18:13:43 drh Exp $
# $Id: memsubsys2.test,v 1.2 2008/08/12 15:21:12 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@@ -45,6 +45,20 @@ proc build_test_db {testname pragmas} {
integrity_check $testname.2
}
# Reset all of the highwater marks.
#
proc reset_highwater_marks {} {
sqlite3_status SQLITE_STATUS_MEMORY_USED 1
sqlite3_status SQLITE_STATUS_MALLOC_SIZE 1
sqlite3_status SQLITE_STATUS_PAGECACHE_USED 1
sqlite3_status SQLITE_STATUS_PAGECACHE_OVERFLOW 1
sqlite3_status SQLITE_STATUS_PAGECACHE_SIZE 1
sqlite3_status SQLITE_STATUS_SCRATCH_USED 1
sqlite3_status SQLITE_STATUS_SCRATCH_OVERFLOW 1
sqlite3_status SQLITE_STATUS_SCRATCH_SIZE 1
sqlite3_status SQLITE_STATUS_PARSER_STACK 1
}
# Test 1: Verify that calling sqlite3_malloc(0) returns a NULL
# pointer.
#
@@ -77,6 +91,7 @@ db close
sqlite3_shutdown
sqlite3_config_memstatus 0
sqlite3_initialize
reset_highwater_marks
set highwater [sqlite3_memory_highwater 0]
do_test memsubsys2-3.1 {
set highwater
@@ -114,6 +129,7 @@ do_test memsubsys2-3.9 {
sqlite3_shutdown
sqlite3_config_memstatus 1
sqlite3_initialize
reset_highwater_marks
set highwater [sqlite3_memory_highwater 0]
do_test memsubsys2-4.1 {
set highwater