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>