mirror of
				https://github.com/sqlite/sqlite.git
				synced 2025-10-24 09:53:10 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			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 modifying
 | |
| # 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
 | |
| }
 |