166 lines
5.4 KiB
INI
166 lines
5.4 KiB
INI
# Copyright (C) 2008 Sun Microsystems, Inc. All rights reserved. Use
|
|
# is subject to license terms.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; version 2 of the License.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
|
# USA
|
|
|
|
use GenTest::Constants;
|
|
use GenTest::Grammar;
|
|
|
|
# Configuration file template for util/simplify-grammar_by_pattern.pl
|
|
#
|
|
# Please
|
|
# - copy this file to for example 1.cfg and
|
|
# - adjust the settings so that they fit to your usage case and
|
|
# environment
|
|
#
|
|
|
|
{
|
|
|
|
# desired_status_codes
|
|
#---------------------
|
|
# List of expected status codes.
|
|
# Status codes are described in lib/GenTest/Constants.pm
|
|
# STATUS_ANY_ERROR means that any RQG error would cause the
|
|
# simplification to continue, e.g. both deadlocks and crashes will be
|
|
# considered together.
|
|
#
|
|
desired_status_codes => [+STATUS_ANY_ERROR],
|
|
|
|
# expected_output
|
|
#----------------
|
|
# List of string patterns which all need to occur within the RQG output
|
|
# after a successful simplification. The search patterns are usually
|
|
# derived from a backtrace.
|
|
# Example 1:
|
|
# Starting point is a crash of a server which was compiled with debug.
|
|
# @expected_output =>
|
|
# [
|
|
# 'mysql_execute_command .* at sql_parse.cc\:4441',
|
|
# 'mysql_parse .* at sql_parse.cc\:5991',
|
|
# 'dispatch_command .* at sql_parse.cc\:1074'
|
|
# ];
|
|
# Please be careful when using source file line numbers in search patterns
|
|
# - They increase the selectivity of the search.
|
|
# - There is a significant risk that the line numbers do no more fit
|
|
# if the source code of the server gets changed.
|
|
# Example 2:
|
|
# Starting point is a crash of a server which was compiled without debug.
|
|
# expected_output => [
|
|
# '0x0000000000413f61',
|
|
# '0x00000000004429a0',
|
|
# '0x0000000000453f0f'
|
|
# ]
|
|
# Just some adresses looks ugly but it works quite good.
|
|
# Example 3:
|
|
# If just hunt for some status code ( -> desired_status_codes ) use
|
|
# expected_output => [ ]
|
|
|
|
expected_output => [
|
|
'mysql_execute_command .* at sql_parse.cc',
|
|
'mysql_parse .* at sql_parse.cc',
|
|
'dispatch_command .* at sql_parse.cc'
|
|
],
|
|
|
|
# initial_grammar_file
|
|
#---------------------
|
|
# File which should be used as the base for the simplification process.
|
|
|
|
initial_grammar_file => 'conf/WL5004_sql.yy',
|
|
|
|
# rqg_options
|
|
#------------
|
|
# runall.pl (RQG) options which should be used
|
|
|
|
rqg_options => {
|
|
basedir => '/work2/6.0/mysql-6.0-codebase-bugfixing1/',
|
|
threads => 30,
|
|
queries => 3000,
|
|
duration => 60,
|
|
mysqld => {
|
|
'table-lock-wait-timeout' => 1,
|
|
'innodb-lock-wait-timeout' => 1,
|
|
'log-output' => 'file'
|
|
},
|
|
reporter => 'Deadlock,Backtrace,Shutdown',
|
|
gendata => 'conf/WL5004_data.zz'
|
|
},
|
|
|
|
|
|
# grammar_flags
|
|
#--------------
|
|
# Set "grammar_flags" to GRAMMAR_FLAG_COMPACT_RULES so that rules such
|
|
# as rule: a | a | a | a | a | a | b are compressed to rule: a | b
|
|
# before simplification. This will speed up the process as each
|
|
# instance of "a" will not be removed separately until they are all
|
|
# gone.
|
|
|
|
grammar_flags => +GRAMMAR_FLAG_COMPACT_RULES,
|
|
|
|
# trials
|
|
#-------
|
|
# This is the number of times the oracle() will run the RQG in order to get to
|
|
# the desired status code and/or desired strings (expected_output).
|
|
# If the error is sporadic, several runs may be required to know if the bug
|
|
# is still present in the simplified grammar or not.
|
|
# The "seed" value gets incremented per trial.
|
|
|
|
trials => 10,
|
|
|
|
# search_var_size
|
|
#----------------
|
|
# Number of bytes (counted from the end of the output file) to be used during
|
|
# search for expected_output We suck the last "search_var_size" Bytes of the file
|
|
# to be searched into a variable.
|
|
# A too huge "search_var_size" could cause problems.
|
|
# The relevant zone within the file is maybe
|
|
# - smaller
|
|
# If our search pattern is unfortunately a bit unspecific and if it
|
|
# could also occur within irrelevant zones of the file than we might
|
|
# get false positives. Decreasing "search_var_size" might help.
|
|
# - bigger
|
|
# We might get false negatives. Increasing "search_var_size" might
|
|
# help but I am unsure if any OS and PERL implementation supports
|
|
# such a monstrous variable.
|
|
|
|
search_var_size => 1000000,
|
|
|
|
# initial_seed
|
|
#-------------
|
|
# Initial seed value to use. This increases the likelihood that the RQG run
|
|
# with the initial grammar reaches the desired result.
|
|
|
|
initial_seed => 852,
|
|
|
|
# vardir_prefix
|
|
#---------------
|
|
# "Server activity" should happen in "vardir" which is a subdirecty of
|
|
# "vardir_prefix".
|
|
# Important points are:
|
|
# - free space within the filesystem
|
|
# - performance of the filesystem
|
|
# Simplification gets a significant speed up if we could use a memory
|
|
# based filesystem.
|
|
|
|
vardir_prefix => '/dev/shm',
|
|
|
|
# storage_prefix
|
|
#---------------
|
|
# Grammars and logs of the simplification process get stored within a
|
|
# subdirectory of "storage_prefix".
|
|
|
|
storage_prefix => './storage'
|
|
|
|
}
|