drh | 2df37c0 | 2007-06-15 18:43:37 +0000 | [diff] [blame] | 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 |
drh | 2df37c0 | 2007-06-15 18:43:37 +0000 | [diff] [blame] | 78 | } |
| 79 | scenario 3 {Customer-1} { |
drh | b3905ab | 2007-06-16 14:19:36 +0000 | [diff] [blame] | 80 | SQLITE_DEBUG=1 SQLITE_MEMDEBUG=1 |
danielk1977 | b06a0b6 | 2008-06-26 10:54:12 +0000 | [diff] [blame] | 81 | SQLITE_THREADSAFE=1 SQLITE_OS_UNIX=1 |
drh | 2df37c0 | 2007-06-15 18:43:37 +0000 | [diff] [blame] | 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 |
danielk1977 | b06a0b6 | 2008-06-26 10:54:12 +0000 | [diff] [blame] | 88 | SQLITE_TEMP_STORE=3 |
drh | 2df37c0 | 2007-06-15 18:43:37 +0000 | [diff] [blame] | 89 | SQLITE_OMIT_PROGRESS_CALLBACK=1 |
| 90 | SQLITE_OMIT_LOAD_EXTENSION=1 |
| 91 | SQLITE_OMIT_VIRTUALTABLE=1 |
| 92 | SQLITE_ENABLE_IOTRACE=1 |
| 93 | } |
drh | b3905ab | 2007-06-16 14:19:36 +0000 | [diff] [blame] | 94 | scenario 4 {Small-Cache} { |
| 95 | SQLITE_DEBUG=1 SQLITE_MEMDEBUG=1 |
danielk1977 | b06a0b6 | 2008-06-26 10:54:12 +0000 | [diff] [blame] | 96 | SQLITE_THREADSAFE=1 SQLITE_OS_UNIX=1 |
drh | b3905ab | 2007-06-16 14:19:36 +0000 | [diff] [blame] | 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 |
danielk1977 | b06a0b6 | 2008-06-26 10:54:12 +0000 | [diff] [blame] | 102 | SQLITE_TEMP_STORE=1 |
drh | b3905ab | 2007-06-16 14:19:36 +0000 | [diff] [blame] | 103 | } |