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