~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/randgen/bughunt_template.cfg

Merged Stewart's kick-ass randgen branch - randgen is in the tree

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2008 Sun Microsystems, Inc. All rights reserved.  Use
 
2
# is subject to license terms.
 
3
#
 
4
# This program is free software; you can redistribute it and/or modify
 
5
# it under the terms of the GNU General Public License as published by
 
6
# the Free Software Foundation; version 2 of the License.
 
7
#
 
8
# This program is distributed in the hope that it will be useful, but
 
9
# WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 
11
# General Public License for more details.
 
12
#
 
13
# You should have received a copy of the GNU General Public License
 
14
# along with this program; if not, write to the Free Software
 
15
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
 
16
# USA
 
17
 
 
18
# Configuration file template for  util/bughunt.pl
 
19
#
 
20
# Please
 
21
# - copy this file to for example bughunt1.cfg and
 
22
# - adjust the settings so that they fit to your usage case and
 
23
#   environment
 
24
#
 
25
 
 
26
{
 
27
 
 
28
# desired_status_codes
 
29
#---------------------
 
30
# List of status codes we are hunting for.
 
31
# Status codes are described in lib/GenTest/Constants.pm
 
32
# STATUS_ANY_ERROR means any RQG error like for example deadlock or server crash.
 
33
#
 
34
 
 
35
   desired_status_codes => [+STATUS_ANY_ERROR],
 
36
 
 
37
# expected_output
 
38
#----------------
 
39
# String pattern which needs to occur within the RQG output.
 
40
# The search pattern is usually derived from a backtrace.
 
41
# Example 1:
 
42
#   Starting point is a crash of a server which was compiled with debug.
 
43
#    @expected_output =>
 
44
#    [
 
45
#      'mysql_execute_command .* at sql_parse.cc\:4441',
 
46
#      'mysql_parse .* at sql_parse.cc\:5991',
 
47
#      'dispatch_command .* at sql_parse.cc\:1074'
 
48
#    ];
 
49
#   Please be careful when using source file line numbers in search patterns
 
50
#   - They increase the selectivity of the search.
 
51
#   - There is a significant risk that the line numbers do no more fit
 
52
#     if the source code of the server gets changed.
 
53
# Example 2:
 
54
#   Starting point is a crash of a server which was compiled without debug.
 
55
#    expected_output => [
 
56
#       '0x0000000000413f61',
 
57
#       '0x00000000004429a0',
 
58
#       '0x0000000000453f0f'
 
59
#    ]
 
60
#    Just some adresses looks ugly but it works quite good.
 
61
# Example 3:
 
62
#   If you just hunt for some status code ( -> desired_status_codes ) use
 
63
#   expected_output => [ ]
 
64
#
 
65
 
 
66
   expected_outputs => [ '' ],
 
67
 
 
68
# grammar
 
69
#--------
 
70
# RQG grammar file which should be used for the bug hunting process.
 
71
#
 
72
 
 
73
   grammar  => 'conf/runtime/WL5004_sql.yy',
 
74
   gendata  => 'conf/runtime/WL5004_data.zz',
 
75
 
 
76
# rqg_options
 
77
#------------
 
78
# runall.pl (RQG) options which should be used
 
79
#
 
80
 
 
81
   rqg_options => {
 
82
      # rpl_mode => 'mixed',
 
83
      threads  => 10,
 
84
      queries  => 10000,
 
85
      duration => 1200,
 
86
      reporter => 'Deadlock,Backtrace,ErrorLog'
 
87
   },
 
88
 
 
89
# basedir
 
90
#--------
 
91
# Main installation directory of the server software
 
92
#
 
93
 
 
94
  basedir  => '/work2/5.1/mysql-5.1-rep+3/',
 
95
 
 
96
# Mysqld options
 
97
#---------------
 
98
# Mysql server options passed to RQG in addition to the rqg_options
 
99
#
 
100
 
 
101
   mysqld => {
 
102
      'loose-innodb-lock-wait-timeout' => 1,
 
103
      'lock-wait-timeout'              => 1,
 
104
      # 'plugin-dir'                     => '/work2/5.1/mysql-5.1-rep+3/plugin/semisync/.libs',
 
105
      # 'plugin-load'                    => 'rpl_semi_sync_master=libsemisync_master.so:rpl_semi_sync_slave=libsemisync_slave.so',
 
106
      # 'rpl_semi_sync_master_enabled'   => 1,
 
107
      # 'rpl_semi_sync_slave_enabled'    => 1,
 
108
      'log-output'                     => 'none'
 
109
   },
 
110
 
 
111
# trials
 
112
#-------
 
113
# This is the number of times the oracle() will run the RQG in order to get to
 
114
# the desired status code and/or desired string (expected_output).
 
115
# If an error is sporadic, several runs may be required to show that this error
 
116
# is present.
 
117
# The "mask" and "seed" values get incremented per trial.
 
118
#
 
119
 
 
120
   trials => 50,
 
121
 
 
122
#--------------------------------------------------------------------------
 
123
# PARAMETERS AFFECTING THE VARIATIONS OF THE TEST PERFORMED DURING BUG HUNT
 
124
#--------------------------------------------------------------------------
 
125
 
 
126
# Seed affects which alternative of a grammar element or random value is selected
 
127
#--------------------------------------------------------------------------------
 
128
# The variation of the seed value has a smaller impact than the masking of grammar
 
129
# element alternatives.
 
130
#
 
131
# initial_seed
 
132
#-------------
 
133
# Seed value to use for the first RQG run. The seed value changes per RQG run.
 
134
#
 
135
 
 
136
   initial_seed => 1,
 
137
 
 
138
# Masking of alternatives within grammar elements
 
139
#------------------------------------------------
 
140
# Masking has a much bigger impact on what gets finally executed than a variation
 
141
# of the seed value. It could destroy well balanced ratios between for example
 
142
# DROP and CREATE or DELETE and INSERT. The final outcome might be an exceptional
 
143
# growth of the stored data or most statements meeting no or empty tables.
 
144
# If you want to switch off "masking" for all RQG runs than please
 
145
# set "mask_level => 0"
 
146
#
 
147
# mask_level
 
148
#-------------------
 
149
# Level within the grammar hierarchy till which masking has to be applied.
 
150
# This value is to be used for all RQG runs.
 
151
# A value of 0 causes that no masking will be applied.
 
152
# Values > 30 affect most probably all grammar elements.
 
153
#
 
154
 
 
155
  mask_level => 0,
 
156
 
 
157
# initial_mask
 
158
#-------------
 
159
# Masking value to be used for the first RQG run. The mask value changes per RQG run.
 
160
# Though a value of 0 causes that no masking gets applied for the current RQG run,
 
161
# a successing run will be withg masking.
 
162
#
 
163
 
 
164
   initial_mask => 0,
 
165
 
 
166
 
 
167
 
 
168
# vardir_prefix
 
169
#--------------
 
170
# "Server activity" should happen in "vardir" which is a subdirecty of
 
171
# "vardir_prefix".
 
172
# Important points are:
 
173
# - Sufficient free space within the filesystem
 
174
# - performance of the filesystem
 
175
# RQG runs get a significant speed up if a memory based filesystem is used.
 
176
#
 
177
 
 
178
   vardir_prefix => '/dev/shm',
 
179
 
 
180
# storage_prefix
 
181
#---------------
 
182
# Grammars and logs of RQG runs which showed the errors and output we are hunting
 
183
# for are stored in a subdirectory of "storage_prefix".
 
184
#
 
185
 
 
186
   storage_prefix => './storage',
 
187
 
 
188
# search_var_size
 
189
#----------------
 
190
# Number of bytes (counted from the end of the output file) to be used during
 
191
# search for expected_output We suck the last "search_var_size" Bytes of the file
 
192
# to be searched into a variable.
 
193
# A too huge "search_var_size" could cause problems.
 
194
# The relevant zone within the file is maybe
 
195
# - smaller
 
196
#   If our search pattern is unfortunately a bit unspecific and if it
 
197
#   could also occur within irrelevant zones of the file than we might
 
198
#   get false positives. Decreasing "search_var_size" might help.
 
199
# - bigger
 
200
#   We might get false negatives. Increasing "search_var_size" might
 
201
#   help but I am unsure if any OS and PERL implementation supports
 
202
#   such a monstrous variable.
 
203
#
 
204
 
 
205
   search_var_size => 1000000
 
206
 
 
207
}