104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
#!/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
 | 
						|
}
 |