File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / soak.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: # 2007 May 24
    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 is the driver for the "soak" tests. It is a peer of the
   12: # quick.test and all.test scripts.
   13: #
   14: # $Id: soak.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
   15: 
   16: set testdir [file dirname $argv0]
   17: source $testdir/tester.tcl
   18: rename finish_test really_finish_test
   19: proc finish_test {} {}
   20: 
   21: # By default, guarantee that the tests will run for at least 1 hour.
   22: #
   23: set TIMEOUT 3600
   24: 
   25: # Process command-line arguments. 
   26: #
   27: if {[llength $argv]>0} {
   28:   foreach {name value} $argv {
   29:     switch -- $name {
   30:       -timeout {
   31:         set TIMEOUT $value
   32:       }
   33:       default {
   34:          puts stderr "Unknown option: $name"
   35:          exit
   36:       }
   37:     }
   38:   }
   39: }
   40: set argv [list]
   41: 
   42: # Test plan:
   43: #
   44: # The general principle is to run those SQLite tests that use
   45: # pseudo-random data in some way over and over again for a very 
   46: # long time. The number of tests run depends on the value of 
   47: # global variable $TIMEOUT - tests are run for at least $TIMEOUT 
   48: # seconds.
   49: #
   50: #   fuzz.test     (pseudo-random SQL statements)
   51: #   trans.test    (pseudo-random changes to a database followed by rollbacks)
   52: #   fuzz_malloc.test
   53: #   corruptC.test (pseudo-random corruption to a database)
   54: #
   55: # Many database changes maintaining some kind of invariant. 
   56: # Storing checksums etc.
   57: #
   58: 
   59: # List of test files that are run by this file.
   60: #
   61: set SOAKTESTS {
   62:   fuzz.test
   63:   fuzz_malloc.test
   64:   trans.test
   65:   corruptC.test
   66: }
   67: 
   68: set G(isquick) 1
   69: 
   70: set soak_starttime  [clock seconds]
   71: set soak_finishtime [expr {$soak_starttime + $TIMEOUT}]
   72: 
   73: # Loop until the timeout is reached or an error occurs.
   74: #
   75: for {set iRun 0} {[clock seconds] < $soak_finishtime} {incr iRun} {
   76: 
   77:   set iIdx [expr {$iRun % [llength $SOAKTESTS]}]
   78:   source [file join $testdir [lindex $SOAKTESTS $iIdx]]
   79:   catch {db close}
   80: 
   81:   if {$sqlite_open_file_count>0} {
   82:     puts "$tail did not close all files: $sqlite_open_file_count"
   83:     fail_test $tail
   84:     set sqlite_open_file_count 0
   85:   }
   86: 
   87:   if {[set_test_counter errors]>0} break
   88: }
   89: 
   90: really_finish_test

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