Annotation of embedaddon/sqlite3/test/lookaside.test, revision 1.1.1.1

1.1       misho       1: # 2008 August 01
                      2: #
                      3: # The author disclaims copyright to this source code.  In place of
                      4: # a legal notice, here is a blessing:
                      5: #
                      6: #    May you do good and not evil.
                      7: #    May you find forgiveness for yourself and forgive others.
                      8: #    May you share freely, never taking more than you give.
                      9: #
                     10: #***********************************************************************
                     11: #
                     12: # Tests for the lookaside memory allocator.
                     13: #
                     14: # $Id: lookaside.test,v 1.10 2009/04/09 01:23:49 drh Exp $
                     15: 
                     16: set testdir [file dirname $argv0]
                     17: source $testdir/tester.tcl
                     18: 
                     19: ifcapable !lookaside {
                     20:   finish_test
                     21:   return
                     22: }
                     23: 
                     24: # The tests in this file configure the lookaside allocator after a 
                     25: # connection is opened. This will not work if there is any "presql"
                     26: # configured (SQL run within the [sqlite3] wrapper in tester.tcl).
                     27: if {[info exists ::G(perm:presql)]} {
                     28:   finish_test
                     29:   return
                     30: }
                     31: 
                     32: catch {db close}
                     33: sqlite3_shutdown
                     34: sqlite3_config_pagecache 0 0
                     35: sqlite3_config_scratch 0 0
                     36: sqlite3_initialize
                     37: autoinstall_test_functions
                     38: sqlite3 db test.db
                     39: 
                     40: # Make sure sqlite3_db_config() and sqlite3_db_status are working.
                     41: #
                     42: do_test lookaside-1.1 {
                     43:   catch {sqlite3_config_error db}
                     44: } {0}
                     45: 
                     46: do_test lookaside-1.2 {
                     47:   sqlite3_db_config_lookaside db 1 18 18
                     48: } {0}
                     49: do_test lookaside-1.3.1 {
                     50:   sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 0
                     51: } {0 0 0}
                     52: do_test lookaside-1.3.2 {
                     53:   sqlite3_db_status db DBSTATUS_LOOKASIDE_HIT 0
                     54: } {0 0 0}
                     55: do_test lookaside-1.3.3 {
                     56:   sqlite3_db_status db DBSTATUS_LOOKASIDE_MISS_SIZE 0
                     57: } {0 0 0}
                     58: do_test lookaside-1.3.4 {
                     59:   sqlite3_db_status db DBSTATUS_LOOKASIDE_MISS_FULL 0
                     60: } {0 0 0}
                     61: 
                     62: do_test lookaside-1.4 {
                     63:   db eval {CREATE TABLE t1(w,x,y,z);}
                     64:   foreach {x y z} [sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 0] break
                     65:   set p [lindex [sqlite3_db_status db DBSTATUS_LOOKASIDE_HIT 0] 2]
                     66:   set q [lindex [sqlite3_db_status db DBSTATUS_LOOKASIDE_MISS_SIZE 0] 2]
                     67:   set r [lindex [sqlite3_db_status db DBSTATUS_LOOKASIDE_MISS_FULL 0] 2]
                     68:   expr {$x==0 && $y<$z && $z==18 && $p>0 && $q>0 && $r>0}
                     69: } {0}
                     70: do_test lookaside-1.5 {
                     71:   foreach {x y z} [sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 1] break
                     72:   expr {$x==0 && $y<$z && $z==18}
                     73: } {0}
                     74: do_test lookaside-1.6 {
                     75:   foreach {x y z} [sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 0] break
                     76:   expr {$x==0 && $y==$z && $y<18}
                     77: } {1}
                     78: do_test lookaside-1.7 {
                     79:   db cache flush
                     80:   foreach {x y z} [sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 0] break
                     81:   expr {$x==0 && $y==0 && $z<18}
                     82: } {1}
                     83: do_test lookaside-1.8 {
                     84:   db cache flush
                     85:   foreach {x y z} [sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 1] break
                     86:   expr {$x==0 && $y==0 && $z<18}
                     87: } {1}
                     88: do_test lookaside-1.9 {
                     89:   db cache flush
                     90:   sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 0
                     91: } {0 0 0}
                     92: 
                     93: do_test lookaside-2.1 {
                     94:   sqlite3_db_config_lookaside db 0 100 1000
                     95: } {0}
                     96: do_test lookaside-2.2 {
                     97:   db eval {CREATE TABLE t2(x);}
                     98:   foreach {x y z} [sqlite3_db_status db DBSTATUS_LOOKASIDE_USED 0] break
                     99:   expr {$x==0 && $y<$z && $z>10 && $z<100}
                    100: } {1}
                    101: do_test lookaside-2.3 {
                    102:   sqlite3_db_config_lookaside db 0 50 50
                    103: } {5}  ;# SQLITE_BUSY
                    104: do_test lookaside-2.4 {
                    105:   db cache flush
                    106:   sqlite3_db_config_lookaside db 0 50 50
                    107: } {0}  ;# SQLITE_OK
                    108: do_test lookaside-2.5 {
                    109:   sqlite3_db_config_lookaside db 0 -1 50
                    110: } {0}  ;# SQLITE_OK
                    111: do_test lookaside-2.6 {
                    112:   sqlite3_db_config_lookaside db 0 50 -1
                    113: } {0}  ;# SQLITE_OK
                    114: 
                    115: # sqlite3_db_status() with an invalid verb returns an error.
                    116: #
                    117: do_test lookaside-3.1 {
                    118:   sqlite3_db_status db 99999 0
                    119: } {1 0 0}
                    120: 
                    121: # Test that an invalid verb on sqlite3_config() is detected and
                    122: # reported as an error.
                    123: #
                    124: do_test lookaside-4.1 {
                    125:   db close
                    126:   sqlite3_shutdown
                    127:   catch sqlite3_config_error
                    128: } {0}
                    129: sqlite3_initialize
                    130: autoinstall_test_functions
                    131: 
                    132: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>