Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 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) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
8be845981654d2a846c95c699395af22 |
User & Date: | drh 2007-08-10 16:41:09.000 |
Context
2007-08-10
| ||
19:46 | Update tests so that they work properly even if the soft-heap-limit is set low. (CVS 4203) (check-in: e01eb99edf user: drh tags: trunk) | |
16:41 | 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) (check-in: 8be8459816 user: drh tags: trunk) | |
2007-08-09
| ||
00:00 | Fix documentation typos. Tickets #2168 and #2560. (CVS 4201) (check-in: 4333b231af user: drh tags: trunk) | |
Changes
Changes to test/incrvacuum.test.
︙ | ︙ | |||
10 11 12 13 14 15 16 | #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the incremental vacuum feature. # # Note: There are also some tests for incremental vacuum and IO # errors in incrvacuum_ioerr.test. # | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the incremental vacuum feature. # # Note: There are also some tests for incremental vacuum and IO # errors in incrvacuum_ioerr.test. # # $Id: incrvacuum.test,v 1.13 2007/08/10 16:41:09 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # If this build of the library does not support auto-vacuum, omit this # whole file. ifcapable {!autovacuum || !pragma} { |
︙ | ︙ | |||
569 570 571 572 573 574 575 | # create a database, thereafter that database defaults to incremental # vacuum mode. # db close file delete -force test.db test.db-journal sqlite3 db test.db | > | | | | > > > > > > | > | 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 | # create a database, thereafter that database defaults to incremental # vacuum mode. # db close file delete -force test.db test.db-journal sqlite3 db test.db 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; } } {} do_test incrvacuum-11.3 { execsql { |
︙ | ︙ | |||
682 683 684 685 686 687 688 | execsql { PRAGMA auto_vacuum; } } {0} db2 close finish_test | < | 690 691 692 693 694 695 696 | execsql { PRAGMA auto_vacuum; } } {0} db2 close finish_test |
Changes to test/malloc5.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file contains test cases focused on the two memory-management APIs, # sqlite3_soft_heap_limit() and sqlite3_release_memory(). # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # # 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.11 2007/08/10 16:41:09 drh Exp $ #--------------------------------------------------------------------------- # NOTES ON EXPECTED BEHAVIOUR # #--------------------------------------------------------------------------- |
︙ | ︙ | |||
185 186 187 188 189 190 191 192 193 194 195 196 197 198 | # transaction execution. # # Before executing malloc5-4.* we save the value of the current soft heap # limit in variable ::soft_limit. The original value is restored after # running the tests. # set ::soft_limit [sqlite3_soft_heap_limit -1] do_test malloc5-4.1 { execsql {BEGIN;} execsql {DELETE FROM abc;} for {set i 0} {$i < 10000} {incr i} { execsql "INSERT INTO abc VALUES($i, $i, '[string repeat X 100]');" } execsql {COMMIT;} | > | 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | # transaction execution. # # Before executing malloc5-4.* we save the value of the current soft heap # limit in variable ::soft_limit. The original value is restored after # 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;} for {set i 0} {$i < 10000} {incr i} { execsql "INSERT INTO abc VALUES($i, $i, '[string repeat X 100]');" } execsql {COMMIT;} |
︙ | ︙ |
Changes to test/tester.tcl.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2001 September 15 # # 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 implements some common TCL routines used for regression # testing the SQLite library # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2001 September 15 # # 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 implements some common TCL routines used for regression # testing the SQLite library # # $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. # if {[sqlite3 -tcl-uses-utf]} { if {"\u1234"=="u1234"} { puts stderr "***** BUILD PROBLEM *****" |
︙ | ︙ | |||
39 40 41 42 43 44 45 46 47 48 49 50 51 52 | exit 1 } } set tcl_precision 15 set sqlite_pending_byte 0x0010000 # Use the pager codec if it is available # if {[sqlite3 -has-codec] && [info command sqlite_orig]==""} { rename sqlite3 sqlite_orig proc sqlite3 {args} { if {[llength $args]==2 && [string index [lindex $args 0] 0]!="-"} { lappend args -key {xyzzy} | > > > > > > > > > > > > > > > > > > > > | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | exit 1 } } 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]==""} { rename sqlite3 sqlite_orig proc sqlite3 {args} { if {[llength $args]==2 && [string index [lindex $args 0] 0]!="-"} { lappend args -key {xyzzy} |
︙ | ︙ | |||
174 175 176 177 178 179 180 181 182 183 184 185 186 187 | catch { pp_check_for_leaks } sqlite3 db {} # sqlite3_clear_tsd_memdebug db close if {$::sqlite3_tsd_count} { puts "Thread-specific data leak: $::sqlite3_tsd_count instances" incr nErr } else { puts "Thread-specific data deallocated properly" } incr nTest | > > > > > > > > | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | catch { pp_check_for_leaks } 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 } else { puts "Thread-specific data deallocated properly" } incr nTest |
︙ | ︙ | |||
476 477 478 479 480 481 482 | set s [expr $::sqlite_io_error_hit==0] set ::sqlite_io_error_hit 0 # One of two things must have happened. either # 1. We never hit the IO error and the SQL returned OK # 2. An IO error was hit and the SQL failed # | < | 504 505 506 507 508 509 510 511 512 513 514 515 516 517 | set s [expr $::sqlite_io_error_hit==0] set ::sqlite_io_error_hit 0 # One of two things must have happened. either # 1. We never hit the IO error and the SQL returned OK # 2. An IO error was hit and the SQL failed # expr { ($s && !$r && !$::go) || (!$s && $r && $::go) } } {1} # If an IO error occured, then the checksum of the database should # be the same as before the script that caused the IO error was run. if {$::go && $::ioerropts(-cksum)} { do_test $testname.$n.4 { |
︙ | ︙ |