Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Modify a few test scripts to avoid leaving the sqlite3Config structure in a non-default state. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
562687d9f56bf4bb0f5f07f97cbbb764 |
User & Date: | dan 2015-07-24 14:17:17.027 |
References
2015-07-24
| ||
18:22 | Fix a test script bug introduced by [562687d9]. (check-in: a343745d99 user: dan tags: trunk) | |
Context
2015-07-24
| ||
15:49 | More robust handling of zeroblob() with oversized arguments. Fix fuzzcheck so that it can be run with limited heap memory. (check-in: 4e3e516a42 user: drh tags: trunk) | |
14:17 | Modify a few test scripts to avoid leaving the sqlite3Config structure in a non-default state. (check-in: 562687d9f5 user: dan tags: trunk) | |
00:02 | Update RBU description comment in the header file. No changes to code. (check-in: 119883a21b user: mistachkin tags: trunk) | |
Changes
Changes to src/test_malloc.c.
︙ | ︙ | |||
935 936 937 938 939 940 941 | static int test_config_pagecache( void * clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[] ){ int sz, N, rc; | | < | > > > > > > > > < < < < | 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 | static int test_config_pagecache( void * clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[] ){ int sz, N, rc; Tcl_Obj *pRes; static char *buf = 0; if( objc!=3 ){ Tcl_WrongNumArgs(interp, 1, objv, "SIZE N"); return TCL_ERROR; } if( Tcl_GetIntFromObj(interp, objv[1], &sz) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &N) ) return TCL_ERROR; free(buf); buf = 0; /* Set the return value */ pRes = Tcl_NewObj(); Tcl_ListObjAppendElement(0, pRes, Tcl_NewIntObj(sqlite3GlobalConfig.szPage)); Tcl_ListObjAppendElement(0, pRes, Tcl_NewIntObj(sqlite3GlobalConfig.nPage)); Tcl_SetObjResult(interp, pRes); if( sz<0 ){ rc = sqlite3_config(SQLITE_CONFIG_PAGECACHE, 0, 0, 0); }else{ buf = malloc( sz*N ); rc = sqlite3_config(SQLITE_CONFIG_PAGECACHE, buf, sz, N); } return TCL_OK; } /* ** Usage: sqlite3_config_alt_pcache INSTALL_FLAG DISCARD_CHANCE PRNG_SEED ** ** Set up the alternative test page cache. Install if INSTALL_FLAG is |
︙ | ︙ |
Changes to test/fuzz3.test.
︙ | ︙ | |||
17 18 19 20 21 22 23 | set testdir [file dirname $argv0] source $testdir/tester.tcl # These tests deal with corrupt database files # database_may_be_corrupt | < < | < < < | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | set testdir [file dirname $argv0] source $testdir/tester.tcl # These tests deal with corrupt database files # database_may_be_corrupt test_set_config_pagecache 0 0 expr srand(123) proc rstring {n} { set str s while {[string length $str] < $n} { |
︙ | ︙ | |||
172 173 174 175 176 177 178 179 | purge_pcache modify_database $iOld do_test fuzz3-$ii.$iNew.[incr iTest] { db_checksum } $::cksum } finish_test | > > | 167 168 169 170 171 172 173 174 175 176 | purge_pcache modify_database $iOld do_test fuzz3-$ii.$iNew.[incr iTest] { db_checksum } $::cksum } test_restore_config_pagecache finish_test |
Changes to test/lookaside.test.
︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 | # connection is opened. This will not work if there is any "presql" # configured (SQL run within the [sqlite3] wrapper in tester.tcl). if {[info exists ::G(perm:presql)]} { finish_test return } catch {db close} sqlite3_shutdown | > > < | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # connection is opened. This will not work if there is any "presql" # configured (SQL run within the [sqlite3] wrapper in tester.tcl). if {[info exists ::G(perm:presql)]} { finish_test return } test_set_config_pagecache 0 0 catch {db close} sqlite3_shutdown sqlite3_config_scratch 0 0 sqlite3_initialize autoinstall_test_functions sqlite3 db test.db # Make sure sqlite3_db_config() and sqlite3_db_status are working. # |
︙ | ︙ | |||
125 126 127 128 129 130 131 132 | db close sqlite3_shutdown catch sqlite3_config_error } {0} sqlite3_initialize autoinstall_test_functions finish_test | > | 126 127 128 129 130 131 132 133 134 | db close sqlite3_shutdown catch sqlite3_config_error } {0} sqlite3_initialize autoinstall_test_functions test_restore_config_pagecache finish_test |
Changes to test/malloc5.test.
︙ | ︙ | |||
16 17 18 19 20 21 22 | # the configured soft heap limit could cause sqlite to upgrade database # locks and flush dirty pages to the file system. As of 3.6.2, this is # no longer the case. In version 3.6.2, sqlite3_release_memory() only # reclaims clean pages. This test file has been updated accordingly. # # $Id: malloc5.test,v 1.22 2009/04/11 19:09:54 drh Exp $ | < < < < < > > | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | # the configured soft heap limit could cause sqlite to upgrade database # locks and flush dirty pages to the file system. As of 3.6.2, this is # no longer the case. In version 3.6.2, sqlite3_release_memory() only # reclaims clean pages. This test file has been updated accordingly. # # $Id: malloc5.test,v 1.22 2009/04/11 19:09:54 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/malloc_common.tcl db close # Only run these tests if memory debugging is turned on. # if {!$MEMDEBUG} { puts "Skipping malloc5 tests: not compiled with -DSQLITE_MEMDEBUG..." finish_test return } # Skip these tests if OMIT_MEMORY_MANAGEMENT was defined at compile time. ifcapable !memorymanage { finish_test return } test_set_config_pagecache 0 100 sqlite3_soft_heap_limit 0 sqlite3 db test.db db eval {PRAGMA cache_size=1} do_test malloc5-1.1 { # Simplest possible test. Call sqlite3_release_memory when there is exactly |
︙ | ︙ | |||
411 412 413 414 415 416 417 418 419 | sqlite3_release_memory 31459 list [nPage db] [nPage db2] } {1 3} db2 close sqlite3_soft_heap_limit $::soft_limit finish_test catch {db close} | > | 408 409 410 411 412 413 414 415 416 417 | sqlite3_release_memory 31459 list [nPage db] [nPage db2] } {1 3} db2 close sqlite3_soft_heap_limit $::soft_limit test_restore_config_pagecache finish_test catch {db close} |
Changes to test/memsubsys1.test.
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # by default when a new database connection is opened. As a result, it # will not work with the "memsubsys1" permutation. # if {[permutation] == "memsubsys1"} { finish_test return } # 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} { | > > | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # by default when a new database connection is opened. As a result, it # will not work with the "memsubsys1" permutation. # if {[permutation] == "memsubsys1"} { finish_test return } test_set_config_pagecache 0 0 # 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} { |
︙ | ︙ | |||
306 307 308 309 310 311 312 | } } {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} db close sqlite3_shutdown sqlite3_config_memstatus 1 | < > > | 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 | } } {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} db close sqlite3_shutdown sqlite3_config_memstatus 1 sqlite3_config_scratch 0 0 sqlite3_config_lookaside 100 500 sqlite3_config serialized sqlite3_initialize autoinstall_test_functions test_restore_config_pagecache finish_test |
Changes to test/pcache2.test.
︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # # This file is focused on testing the pcache module. # # $Id: pcache2.test,v 1.5 2009/07/18 14:36:24 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Set up a pcache memory pool so that we can easily track how many # pages are being used for cache. # do_test pcache2-1.1 { db close sqlite3_reset_auto_extension | > > | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # # This file is focused on testing the pcache module. # # $Id: pcache2.test,v 1.5 2009/07/18 14:36:24 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl test_set_config_pagecache 0 0 # Set up a pcache memory pool so that we can easily track how many # pages are being used for cache. # do_test pcache2-1.1 { db close sqlite3_reset_auto_extension |
︙ | ︙ | |||
74 75 76 77 78 79 80 81 | sqlite3_reset_auto_extension sqlite3_shutdown sqlite3_config_pagecache 0 0 sqlite3_config serialized sqlite3_initialize autoinstall_test_functions finish_test | > | 76 77 78 79 80 81 82 83 84 | sqlite3_reset_auto_extension sqlite3_shutdown sqlite3_config_pagecache 0 0 sqlite3_config serialized sqlite3_initialize autoinstall_test_functions test_restore_config_pagecache finish_test |
Changes to test/permutations.test.
︙ | ︙ | |||
413 414 415 416 417 418 419 420 421 | # causes the effective limit on the page-cache to be just 24 pages. # test_suite "memsubsys1" -description { Tests using pre-allocated page and scratch blocks } -files [ test_set $::allquicktests -exclude ioerr5.test malloc5.test mmap1.test ] -initialize { catch {db close} sqlite3_shutdown | > < > < > < > < | 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 | # causes the effective limit on the page-cache to be just 24 pages. # test_suite "memsubsys1" -description { Tests using pre-allocated page and scratch blocks } -files [ test_set $::allquicktests -exclude ioerr5.test malloc5.test mmap1.test ] -initialize { test_set_config_pagecache 4096 24 catch {db close} sqlite3_shutdown sqlite3_config_scratch 25000 1 sqlite3_initialize autoinstall_test_functions } -shutdown { test_restore_config_pagecache catch {db close} sqlite3_shutdown sqlite3_config_scratch 0 0 sqlite3_initialize autoinstall_test_functions } # Run some tests using pre-allocated page and scratch blocks. This time # the allocations are too small to use in most cases. # # Both ioerr5.test and malloc5.test are excluded because they test the # sqlite3_soft_heap_limit() and sqlite3_release_memory() functionality. # This functionality is disabled if a pre-allocated page block is provided. # test_suite "memsubsys2" -description { Tests using small pre-allocated page and scratch blocks } -files [ test_set $::allquicktests -exclude ioerr5.test malloc5.test ] -initialize { test_set_config_pagecache 512 5 catch {db close} sqlite3_shutdown sqlite3_config_scratch 1000 1 sqlite3_initialize autoinstall_test_functions } -shutdown { test_restore_config_pagecache catch {db close} sqlite3_shutdown sqlite3_config_scratch 0 0 sqlite3_initialize autoinstall_test_functions } # Run all tests with the lookaside allocator disabled. # |
︙ | ︙ |
Changes to test/tester.tcl.
︙ | ︙ | |||
2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 | sqlite3 db $dbfile } proc db_delete_and_reopen {{file test.db}} { catch { db close } foreach f [glob -nocomplain test.db*] { forcedelete $f } sqlite3 db $file } # If the library is compiled with the SQLITE_DEFAULT_AUTOVACUUM macro set # to non-zero, then set the global variable $AUTOVACUUM to 1. set AUTOVACUUM $sqlite_options(default_autovacuum) # Make sure the FTS enhanced query syntax is disabled. set sqlite_fts3_enable_parentheses 0 | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 | sqlite3 db $dbfile } proc db_delete_and_reopen {{file test.db}} { catch { db close } foreach f [glob -nocomplain test.db*] { forcedelete $f } sqlite3 db $file } # Close any connections named [db], [db2] or [db3]. Then use sqlite3_config # to configure the size of the PAGECACHE allocation using the parameters # provided to this command. Save the old PAGECACHE parameters in a global # variable so that [test_restore_config_pagecache] can restore the previous # configuration. # # Before returning, reopen connection [db] on file test.db. # proc test_set_config_pagecache {sz nPg} { catch {db close} catch {db2 close} catch {db3 close} sqlite3_shutdown set ::old_pagecache_config [sqlite3_config_pagecache $sz $nPg] sqlite3_initialize autoinstall_test_functions sqlite3 db test.db } # Close any connections named [db], [db2] or [db3]. Then use sqlite3_config # to configure the size of the PAGECACHE allocation to the size saved in # the global variable by an earlier call to [test_set_config_pagecache]. # # Before returning, reopen connection [db] on file test.db. # proc test_restore_config_pagecache {} { catch {db close} catch {db2 close} catch {db3 close} sqlite3_shutdown eval sqlite3_config_pagecache $::old_pagecache_config unset ::old_pagecache_config sqlite3_initialize autoinstall_test_functions sqlite3 db test.db } # If the library is compiled with the SQLITE_DEFAULT_AUTOVACUUM macro set # to non-zero, then set the global variable $AUTOVACUUM to 1. set AUTOVACUUM $sqlite_options(default_autovacuum) # Make sure the FTS enhanced query syntax is disabled. set sqlite_fts3_enable_parentheses 0 |
︙ | ︙ |
Changes to test/zeroblob.test.
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !incrblob { finish_test return } # When zeroblob() is used for the last field of a column, then the # content of the zeroblob is never instantiated on the VDBE stack. # But it does get inserted into the database correctly. # db eval {PRAGMA cache_size=10} sqlite3_memory_highwater 1 unset -nocomplain memused set memused [sqlite3_memory_used] do_test zeroblob-1.1 { execsql { CREATE TABLE t1(a,b,c,d); } set ::sqlite3_max_blobsize 0 execsql { INSERT INTO t1 VALUES(2,3,4,zeroblob(1000000)); } set ::sqlite3_max_blobsize } {10} do_test zeroblob-1.1.1 { expr {[sqlite3_memory_highwater]<$::memused+25000} } {1} do_test zeroblob-1.2 { execsql { SELECT length(d) FROM t1 } | > > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !incrblob { finish_test return } test_set_config_pagecache 0 0 # When zeroblob() is used for the last field of a column, then the # content of the zeroblob is never instantiated on the VDBE stack. # But it does get inserted into the database correctly. # db eval {PRAGMA cache_size=10} sqlite3_memory_highwater 1 unset -nocomplain memused set memused [sqlite3_memory_used] do_test zeroblob-1.1 { execsql { CREATE TABLE t1(a,b,c,d); } set ::sqlite3_max_blobsize 0 execsql { INSERT INTO t1 VALUES(2,3,4,zeroblob(1000000)); } set ::sqlite3_max_blobsize } {10} do_test zeroblob-1.1.1 { expr {[sqlite3_memory_highwater]<$::memused+25000} } {1} do_test zeroblob-1.2 { execsql { SELECT length(d) FROM t1 } |
︙ | ︙ | |||
261 262 263 264 265 266 267 268 | db eval { CREATE TABLE t10(a,b,c); } catchsql {INSERT INTO t10 VALUES(zeroblob(1e9),zeroblob(1e9),zeroblob(1e9))} } {1 {string or blob too big}} finish_test | > | 264 265 266 267 268 269 270 271 272 | db eval { CREATE TABLE t10(a,b,c); } catchsql {INSERT INTO t10 VALUES(zeroblob(1e9),zeroblob(1e9),zeroblob(1e9))} } {1 {string or blob too big}} test_restore_config_pagecache finish_test |