File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / memleak.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: # 2001 September 15
    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: # This file runs all tests.
   12: #
   13: # $Id: memleak.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
   14: 
   15: set testdir [file dirname $argv0]
   16: source $testdir/tester.tcl
   17: rename finish_test memleak_finish_test
   18: proc finish_test {} {
   19:   catch {db close}
   20:   memleak_check
   21: }
   22: 
   23: if {[file exists ./sqlite_test_count]} {
   24:   set COUNT [exec cat ./sqlite_test_count]
   25: } else {
   26:   set COUNT 3
   27: }
   28: 
   29: # LeakList will hold a list of the number of unfreed mallocs after
   30: # each round of the test.  This number should be constant.  If it
   31: # grows, it may mean there is a memory leak in the library.
   32: #
   33: set LeakList {}
   34: 
   35: set EXCLUDE {
   36:   all.test
   37:   quick.test
   38:   misuse.test
   39:   memleak.test
   40:   btree2.test
   41:   async.test
   42:   async2.test
   43:   trans.test
   44:   crash.test
   45:   autovacuum_crash.test
   46: }
   47: # Test files btree2.test and btree4.test don't work if the 
   48: # SQLITE_DEFAULT_AUTOVACUUM macro is defined to true (because they depend
   49: # on tables being allocated starting at page 2).
   50: #
   51: ifcapable default_autovacuum {
   52:   lappend EXCLUDE btree2.test
   53:   lappend EXCLUDE btree4.test
   54: }
   55: 
   56: if {[sqlite3 -has-codec]} {
   57:   # lappend EXCLUDE 
   58: }
   59: if {[llength $argv]>0} {
   60:   set FILELIST $argv
   61:   set argv {}
   62: } else {
   63:   set FILELIST [lsort -dictionary [glob $testdir/*.test]]
   64: }
   65: 
   66: foreach testfile $FILELIST {
   67:   set tail [file tail $testfile]
   68:   if {[lsearch -exact $EXCLUDE $tail]>=0} continue
   69:   set LeakList {}
   70:   for {set COUNTER 0} {$COUNTER<$COUNT} {incr COUNTER} {
   71:     source $testfile
   72:     if {[info exists Leak]} {
   73:       lappend LeakList $Leak
   74:     }
   75:   }
   76:   if {$LeakList!=""} {
   77:     puts -nonewline memory-leak-test-$tail...
   78:     incr_ntest
   79:     foreach x $LeakList {
   80:       if {$x!=[lindex $LeakList 0]} {
   81:          puts " failed! ($LeakList)"
   82:          fail_test memory-leak-test-$tail
   83:          break
   84:        }
   85:     }
   86:     puts " Ok"
   87:   }
   88: }
   89: memleak_finish_test
   90: 
   91: # Run the malloc tests and the misuse test after memory leak detection.
   92: # Both tests leak memory.
   93: #
   94: #catch {source $testdir/misuse.test}
   95: #catch {source $testdir/malloc.test}
   96: 
   97: memleak_finish_test

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