Annotation of embedaddon/sqlite3/tool/soak1.tcl, revision 1.1.1.1

1.1       misho       1: #!/usr/bin/tclsh
                      2: #
                      3: # Usage:
                      4: #
                      5: #    tclsh soak1.tcl local-makefile.mk ?target? ?scenario?
                      6: #
                      7: # This generates many variations on local-makefile.mk (by modifing
                      8: # the OPT = lines) and runs them will fulltest, one by one.  The
                      9: # constructed makefiles are named "soak1.mk".
                     10: #
                     11: # If ?target? is provided, that is the makefile target that is run.
                     12: # The default is "fulltest"
                     13: #
                     14: # If ?scenario? is provided, it is the name of a single scenario to
                     15: # be run.   All other scenarios are skipped.
                     16: #
                     17: set localmake [lindex $argv 0]
                     18: set target [lindex $argv 1]
                     19: set scene [lindex $argv 2]
                     20: if {$target==""} {set target fulltest}
                     21: if {$scene==""} {set scene all}
                     22: 
                     23: set in [open $localmake]
                     24: set maketxt [read $in]
                     25: close $in
                     26: regsub -all {\\\n} $maketxt {} maketxt
                     27: #set makefilename "soak1-[expr {int(rand()*1000000000)}].mk"
                     28: set makefilename "soak1.mk"
                     29: 
                     30: # Generate a makefile
                     31: #
                     32: proc generate_makefile {pattern} {
                     33:   global makefilename maketxt
                     34:   set out [open $makefilename w]
                     35:   set seen_opt 0
                     36:   foreach line [split $maketxt \n] {
                     37:     if {[regexp {^ *#? *OPTS[ =+]} $line]} {
                     38:       if {!$seen_opt} {
                     39:          puts $out "OPTS += -DSQLITE_NO_SYNC=1"
                     40:          foreach x $pattern {
                     41:            puts $out "OPTS += -D$x"
                     42:          }
                     43:          set seen_opt 1
                     44:       }
                     45:     } else {
                     46:       puts $out $line
                     47:     }
                     48:   }
                     49:   close $out
                     50: }
                     51: 
                     52: # Run a test
                     53: #
                     54: proc scenario {id title pattern} {
                     55:   global makefilename target scene
                     56:   if {$scene!="all" && $scene!=$id && $scene!=$title} return
                     57:   puts "**************** $title ***************"
                     58:   generate_makefile $pattern
                     59:   exec make -f $makefilename clean >@stdout 2>@stdout
                     60:   exec make -f $makefilename $target >@stdout 2>@stdout
                     61: }
                     62: 
                     63: ###############################################################################
                     64: # Add new scenarios here
                     65: #
                     66: scenario 0 {Default} {}
                     67: scenario 1 {Debug} {
                     68:   SQLITE_DEBUG=1
                     69:   SQLITE_MEMDEBUG=1
                     70: }
                     71: scenario 2 {Everything} {
                     72:   SQLITE_DEBUG=1
                     73:   SQLITE_MEMDEBUG=1
                     74:   SQLITE_ENABLE_MEMORY_MANAGEMENT=1
                     75:   SQLITE_ENABLE_COLUMN_METADATA=1
                     76:   SQLITE_ENABLE_LOAD_EXTENSION=1 HAVE_DLOPEN=1
                     77:   SQLITE_ENABLE_MEMORY_MANAGEMENT=1
                     78: }
                     79: scenario 3 {Customer-1} {
                     80:   SQLITE_DEBUG=1 SQLITE_MEMDEBUG=1
                     81:   SQLITE_THREADSAFE=1 SQLITE_OS_UNIX=1
                     82:   SQLITE_DISABLE_LFS=1
                     83:   SQLITE_DEFAULT_AUTOVACUUM=1
                     84:   SQLITE_DEFAULT_PAGE_SIZE=1024
                     85:   SQLITE_MAX_PAGE_SIZE=4096
                     86:   SQLITE_DEFAULT_CACHE_SIZE=64
                     87:   SQLITE_DEFAULT_TEMP_CACHE_SIZE=32
                     88:   SQLITE_TEMP_STORE=3
                     89:   SQLITE_OMIT_PROGRESS_CALLBACK=1
                     90:   SQLITE_OMIT_LOAD_EXTENSION=1
                     91:   SQLITE_OMIT_VIRTUALTABLE=1
                     92:   SQLITE_ENABLE_IOTRACE=1
                     93: }
                     94: scenario 4 {Small-Cache} {
                     95:   SQLITE_DEBUG=1 SQLITE_MEMDEBUG=1
                     96:   SQLITE_THREADSAFE=1 SQLITE_OS_UNIX=1
                     97:   SQLITE_DEFAULT_AUTOVACUUM=1
                     98:   SQLITE_DEFAULT_PAGE_SIZE=1024
                     99:   SQLITE_MAX_PAGE_SIZE=2048
                    100:   SQLITE_DEFAULT_CACHE_SIZE=13
                    101:   SQLITE_DEFAULT_TEMP_CACHE_SIZE=11
                    102:   SQLITE_TEMP_STORE=1
                    103: }

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