| Index: third_party/sqlite/sqlite-src-3080704/tool/soak1.tcl | 
| diff --git a/third_party/sqlite/sqlite-src-3080704/tool/soak1.tcl b/third_party/sqlite/sqlite-src-3080704/tool/soak1.tcl | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..846f905935c20e2a26cb74719a915ba838126718 | 
| --- /dev/null | 
| +++ b/third_party/sqlite/sqlite-src-3080704/tool/soak1.tcl | 
| @@ -0,0 +1,103 @@ | 
| +#!/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 | 
| +} | 
|  |