mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Add a script for "soak" testing. (CVS 4074)
FossilOrigin-Name: d4ea1287a8b013a97fcb55bb7f7feba427222bab
This commit is contained in:
92
tool/soak1.tcl
Normal file
92
tool/soak1.tcl
Normal file
@ -0,0 +1,92 @@
|
||||
#!/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
|
||||
SQLITE_ENABLE_REDEF_IO=1
|
||||
}
|
||||
scenario 3 {Customer-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
|
||||
TEMP_STORE=3
|
||||
SQLITE_OMIT_PROGRESS_CALLBACK=1
|
||||
SQLITE_OMIT_LOAD_EXTENSION=1
|
||||
SQLITE_OMIT_VIRTUALTABLE=1
|
||||
SQLITE_ENABLE_IOTRACE=1
|
||||
}
|
Reference in New Issue
Block a user