Annotation of embedaddon/sqlite3/tool/soak1.tcl, revision 1.1
1.1 ! misho 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: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>