Add the --soft-heap-limit=N option to the test scripts. Set this value to

enforce a soft heap limit across all tests.  This changes exposes several
new bugs. (CVS 4202)

FossilOrigin-Name: 8be845981654d2a846c95c699395af222b6c3b43
This commit is contained in:
drh 2007-08-10 16:41:08 +00:00
parent 915d2150f8
commit 3a7fb7c459
5 changed files with 54 additions and 19 deletions

View File

@ -1,5 +1,5 @@
C Fix\sdocumentation\stypos.\s\sTickets\s#2168\sand\s#2560.\s(CVS\s4201)
D 2007-08-09T00:00:26
C Add\sthe\s--soft-heap-limit=N\soption\sto\sthe\stest\sscripts.\s\sSet\sthis\svalue\sto\nenforce\sa\ssoft\sheap\slimit\sacross\sall\stests.\s\sThis\schanges\sexposes\sseveral\nnew\sbugs.\s(CVS\s4202)
D 2007-08-10T16:41:09
F Makefile.in 0c0e53720f658c7a551046442dd7afba0b72bfbe
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -273,7 +273,7 @@ F test/in.test 369cb2aa1eab02296b4ec470732fe8c131260b1d
F test/in2.test b1f447f4f0f67e9f83ff931e7e2e30873f9ea055
F test/incrblob.test 1e74ef0f6df83ec8071d727d8f30295f11de0677
F test/incrblob_err.test 2501bec57e317e7051451b5093b47fc61a96c85a
F test/incrvacuum.test 92d0efe609509c65804be016cb376d5ec5abb5a5
F test/incrvacuum.test 569347726ea5940c3359e3d8cabb3505595cb82f
F test/incrvacuum2.test 82397ceb5941cbe852fd29bb33fcdf5665bc80c2
F test/incrvacuum_ioerr.test cb331403b8dea3c5bae6163861ff25037b0df56a
F test/index.test e65df12bed94b2903ee89987115e1578687e9266
@ -308,7 +308,7 @@ F test/malloc.test 45a81af6328381d0630ab0a3d8cb8c58551603f7
F test/malloc2.test 4ed7d719542c4570dec9c2ebe2bbdf3a9f3b0d05
F test/malloc3.test e965954b6f808876a63d3101fd70370320b509a7
F test/malloc4.test 59cd02f71b363302a04c4e77b97c0a1572eaa210
F test/malloc5.test f228cb7101ae403327824d327a1f5651d83ef0f2
F test/malloc5.test 30eeb4c5222c85c62b523cf007001ece80fb3437
F test/malloc6.test 025ae0b78542e0ddd000d23f79d93e9be9ba0f15
F test/malloc7.test 1cf52834509eac7ebeb92105dacd4669f9ca9869
F test/malloc8.test e4054ca2a87ab1d42255bec009b177ba20b5a487
@ -376,7 +376,7 @@ F test/table.test dbdfd06aef054ad5aed8e57a782137d57d5c5528
F test/tableapi.test 036575a98dcce7c92e9f39056839bbad8a715412
F test/tclsqlite.test 593f3b30221e85786965d9e5670ae4f96b4e4159
F test/temptable.test c36f3e5a94507abb64f7ba23deeb4e1a8a8c3821
F test/tester.tcl 9382df472e0e86cbfddc44ab8c8cc02497bc9c8a
F test/tester.tcl 2ec34cd5b7916bb8f5dd33fa0e2e0412a499fdf4
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
F test/thread2.test 6d7b30102d600f51b4055ee3a5a19228799049fb
F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
@ -523,7 +523,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 3759a38fe8e8a873dc3aae8dc99ca1010551b50b
R fbc8a53c964f67498ae60776a27efd94
P 4333b231af8866e3d2d75bc64083b6c36c8da8d8
R 59a1470063d9ac8d446eb8a6fbd0d1f5
U drh
Z 404cedd8a438ac3496ecea6543b3ec13
Z 7db05446b00beee77c01beded332074f

View File

@ -1 +1 @@
4333b231af8866e3d2d75bc64083b6c36c8da8d8
8be845981654d2a846c95c699395af222b6c3b43

View File

@ -14,7 +14,7 @@
# Note: There are also some tests for incremental vacuum and IO
# errors in incrvacuum_ioerr.test.
#
# $Id: incrvacuum.test,v 1.12 2007/06/25 08:16:58 danielk1977 Exp $
# $Id: incrvacuum.test,v 1.13 2007/08/10 16:41:09 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -573,11 +573,19 @@ db close
file delete -force test.db test.db-journal
sqlite3 db test.db
do_test incrvacuum-11.1 {
execsql {
PRAGMA auto_vacuum;
}
} {0}
ifcapable default_autovacuum {
do_test incrvacuum-11.1-av-dflt-on {
execsql {
PRAGMA auto_vacuum;
}
} {1}
} else {
do_test incrvacuum-11.1-av-dflt-off {
execsql {
PRAGMA auto_vacuum;
}
} {0}
}
do_test incrvacuum-11.2 {
execsql {
PRAGMA auto_vacuum = incremental;
@ -686,4 +694,3 @@ do_test incrvacuum-13.5 {
db2 close
finish_test

View File

@ -12,7 +12,7 @@
# This file contains test cases focused on the two memory-management APIs,
# sqlite3_soft_heap_limit() and sqlite3_release_memory().
#
# $Id: malloc5.test,v 1.10 2007/04/07 17:44:28 drh Exp $
# $Id: malloc5.test,v 1.11 2007/08/10 16:41:09 drh Exp $
#---------------------------------------------------------------------------
# NOTES ON EXPECTED BEHAVIOUR
@ -189,6 +189,7 @@ sqlite_malloc_outstanding -clearmaxbytes
# running the tests.
#
set ::soft_limit [sqlite3_soft_heap_limit -1]
execsql {PRAGMA cache_size=2000}
do_test malloc5-4.1 {
execsql {BEGIN;}
execsql {DELETE FROM abc;}

View File

@ -11,7 +11,7 @@
# This file implements some common TCL routines used for regression
# testing the SQLite library
#
# $Id: tester.tcl,v 1.81 2007/05/04 12:05:56 danielk1977 Exp $
# $Id: tester.tcl,v 1.82 2007/08/10 16:41:09 drh Exp $
# Make sure tclsqlite3 was compiled correctly. Abort now with an
# error message if not.
@ -43,6 +43,26 @@ if {[sqlite3 -tcl-uses-utf]} {
set tcl_precision 15
set sqlite_pending_byte 0x0010000
#
# Check the command-line arguments for a default soft-heap-limit.
# Store this default value in the global variable ::soft_limit and
# update the soft-heap-limit each time this script is run. In that
# way if an individual test file changes the soft-heap-limit, it
# will be reset at the start of the next test file.
#
if {![info exists soft_limit]} {
set soft_limit 0
for {set i 0} {$i<[llength $argv]} {incr i} {
if {[regexp {^--soft-heap-limit=(.+)$} [lindex $argv $i] all value]} {
if {$value!="off"} {
set soft_limit $value
}
set argv [lreplace $argv $i $i]
}
}
}
sqlite3_soft_heap_limit $soft_limit
# Use the pager codec if it is available
#
if {[sqlite3 -has-codec] && [info command sqlite_orig]==""} {
@ -178,6 +198,14 @@ proc finalize_testing {} {
sqlite3 db {}
# sqlite3_clear_tsd_memdebug
db close
set heaplimit [sqlite3_soft_heap_limit]
if {$heaplimit!=$::soft_limit} {
puts "soft-heap-limit changed by this script\
from $::soft_limit to $heaplimit"
} elseif {$heaplimit!="" && $heaplimit>0} {
puts "soft-heap-limit set to $heaplimit"
}
sqlite3_soft_heap_limit 0
if {$::sqlite3_tsd_count} {
puts "Thread-specific data leak: $::sqlite3_tsd_count instances"
incr nErr
@ -480,7 +508,6 @@ proc do_ioerr_test {testname args} {
# 1. We never hit the IO error and the SQL returned OK
# 2. An IO error was hit and the SQL failed
#
#puts "$s $r $::go - $msg"
expr { ($s && !$r && !$::go) || (!$s && $r && $::go) }
} {1}