| OLD | NEW |
| (Empty) |
| 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 } | |
| OLD | NEW |