polardbxengine/mysql-test/suite/xengine_stress/rqg/simplify-grammar_template.cfg

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'
}