123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #!/usr/bin/tclsh
- #
- # Usage:
- #
- # tclsh soak1.tcl local-makefile.mk ?target? ?scenario?
- #
- # This generates many variations on local-makefile.mk (by modifing
- # the OPT = lines) and runs them will fulltest, one by one. The
- # constructed makefiles are named "soak1.mk".
- #
- # If ?target? is provided, that is the makefile target that is run.
- # The default is "fulltest"
- #
- # If ?scenario? is provided, it is the name of a single scenario to
- # be run. All other scenarios are skipped.
- #
- set localmake [lindex $argv 0]
- set target [lindex $argv 1]
- set scene [lindex $argv 2]
- if {$target==""} {set target fulltest}
- if {$scene==""} {set scene all}
- set in [open $localmake]
- set maketxt [read $in]
- close $in
- regsub -all {\\\n} $maketxt {} maketxt
- #set makefilename "soak1-[expr {int(rand()*1000000000)}].mk"
- set makefilename "soak1.mk"
- # Generate a makefile
- #
- proc generate_makefile {pattern} {
- global makefilename maketxt
- set out [open $makefilename w]
- set seen_opt 0
- foreach line [split $maketxt \n] {
- if {[regexp {^ *#? *OPTS[ =+]} $line]} {
- if {!$seen_opt} {
- puts $out "OPTS += -DSQLITE_NO_SYNC=1"
- foreach x $pattern {
- puts $out "OPTS += -D$x"
- }
- set seen_opt 1
- }
- } else {
- puts $out $line
- }
- }
- close $out
- }
- # Run a test
- #
- proc scenario {id title pattern} {
- global makefilename target scene
- if {$scene!="all" && $scene!=$id && $scene!=$title} return
- puts "**************** $title ***************"
- generate_makefile $pattern
- exec make -f $makefilename clean >@stdout 2>@stdout
- exec make -f $makefilename $target >@stdout 2>@stdout
- }
- ###############################################################################
- # Add new scenarios here
- #
- scenario 0 {Default} {}
- scenario 1 {Debug} {
- SQLITE_DEBUG=1
- SQLITE_MEMDEBUG=1
- }
- scenario 2 {Everything} {
- SQLITE_DEBUG=1
- SQLITE_MEMDEBUG=1
- SQLITE_ENABLE_MEMORY_MANAGEMENT=1
- SQLITE_ENABLE_COLUMN_METADATA=1
- SQLITE_ENABLE_LOAD_EXTENSION=1 HAVE_DLOPEN=1
- SQLITE_ENABLE_MEMORY_MANAGEMENT=1
- }
- scenario 3 {Customer-1} {
- SQLITE_DEBUG=1 SQLITE_MEMDEBUG=1
- SQLITE_THREADSAFE=1 SQLITE_OS_UNIX=1
- SQLITE_DISABLE_LFS=1
- SQLITE_DEFAULT_AUTOVACUUM=1
- SQLITE_DEFAULT_PAGE_SIZE=1024
- SQLITE_MAX_PAGE_SIZE=4096
- SQLITE_DEFAULT_CACHE_SIZE=64
- SQLITE_DEFAULT_TEMP_CACHE_SIZE=32
- SQLITE_TEMP_STORE=3
- SQLITE_OMIT_PROGRESS_CALLBACK=1
- SQLITE_OMIT_LOAD_EXTENSION=1
- SQLITE_OMIT_VIRTUALTABLE=1
- SQLITE_ENABLE_IOTRACE=1
- }
- scenario 4 {Small-Cache} {
- SQLITE_DEBUG=1 SQLITE_MEMDEBUG=1
- SQLITE_THREADSAFE=1 SQLITE_OS_UNIX=1
- SQLITE_DEFAULT_AUTOVACUUM=1
- SQLITE_DEFAULT_PAGE_SIZE=1024
- SQLITE_MAX_PAGE_SIZE=2048
- SQLITE_DEFAULT_CACHE_SIZE=13
- SQLITE_DEFAULT_TEMP_CACHE_SIZE=11
- SQLITE_TEMP_STORE=1
- }
|