OLD | NEW |
| (Empty) |
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 } | |
OLD | NEW |