Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
fb36c977
Commit
fb36c977
authored
Mar 11, 2009
by
Georgi Kodinov
Browse files
Options
Browse Files
Download
Plain Diff
merged 5.1-main -> 5.1-bugteam
parents
ba1b5eb4
11570d64
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
222 additions
and
63 deletions
+222
-63
mysql-test/Makefile.am
mysql-test/Makefile.am
+2
-2
mysql-test/collections/README
mysql-test/collections/README
+30
-0
mysql-test/collections/README.experimental
mysql-test/collections/README.experimental
+25
-0
mysql-test/collections/default.daily
mysql-test/collections/default.daily
+1
-0
mysql-test/collections/default.experimental
mysql-test/collections/default.experimental
+1
-0
mysql-test/collections/default.push
mysql-test/collections/default.push
+5
-0
mysql-test/collections/default.weekly
mysql-test/collections/default.weekly
+0
-0
mysql-test/include/check-warnings.test
mysql-test/include/check-warnings.test
+1
-1
mysql-test/lib/My/ConfigFactory.pm
mysql-test/lib/My/ConfigFactory.pm
+4
-4
mysql-test/lib/My/Platform.pm
mysql-test/lib/My/Platform.pm
+4
-6
mysql-test/lib/My/SafeProcess.pm
mysql-test/lib/My/SafeProcess.pm
+2
-0
mysql-test/lib/My/SafeProcess/safe_process.cc
mysql-test/lib/My/SafeProcess/safe_process.cc
+15
-1
mysql-test/lib/mtr_report.pm
mysql-test/lib/mtr_report.pm
+35
-5
mysql-test/lib/mtr_unique.pm
mysql-test/lib/mtr_unique.pm
+2
-0
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+95
-44
No files found.
mysql-test/Makefile.am
View file @
fb36c977
...
@@ -71,11 +71,11 @@ SUBDIRS = lib/My/SafeProcess
...
@@ -71,11 +71,11 @@ SUBDIRS = lib/My/SafeProcess
EXTRA_DIST
=
README
\
EXTRA_DIST
=
README
\
valgrind.supp
\
valgrind.supp
\
$(test_SCRIPTS)
\
$(test_SCRIPTS)
\
$(nobase_test_DATA)
$(nobase_test_DATA)
# List of directories containing test + result files and the
# List of directories containing test + result files and the
# related test data files that should be copied
# related test data files that should be copied
TEST_DIRS
=
t r include std_data std_data/parts
\
TEST_DIRS
=
t r include std_data std_data/parts
collections
\
std_data/ndb_backup50 std_data/ndb_backup51
\
std_data/ndb_backup50 std_data/ndb_backup51
\
std_data/ndb_backup51_data_be std_data/ndb_backup51_data_le
\
std_data/ndb_backup51_data_be std_data/ndb_backup51_data_le
\
std_data/funcs_1
\
std_data/funcs_1
\
...
...
mysql-test/collections/README
0 → 100644
View file @
fb36c977
This directory contains collections of test runs that we run during our
integration and release testing. Each file contains zero or more lines,
with one invocation of mysql-test-run.pl on each. These invocations are
written so that, with the assumption that perl is in your search path,
any collection can run as a shell script or a batch file, with the parent
mysql-test directory being the current working directory.
During integration testing, we choose the collection to run by following
these steps:
1) We choose the extension to look for, based on these rules:
- If we're running a per-push test, we choose ".push" as the extension.
- If we're running a daily test, we choose ".daily" as the extension.
- If we're running a weekly test, we choose ".weekly" as the extension.
2) If there is a collection that has the same name as the branch we're
testing plus the extension as determined in step 1, we choose that
collection.
3) If the branch is unknown or we have removed all characters from it
and still not found a matching collection, we choose the name "default"
plus the extension determined in step 1. If there is no such file,
we give up and don't test anything at all.
4) If we haven't found a collection yet, we remove the last character from
the branch name and go back to step 2.
5) The commands from the collection are run line by line via execv() or
similar system calls. They are not run as a shell script. Shell
expansions are not guaranteed to work and most likely won't.
mysql-test/collections/README.experimental
0 → 100644
View file @
fb36c977
The .experimental files in this directory contain names of test cases that
are still in development and whose failures should be considered expected,
instead of regressions.
These files are to be used with the --experimental option of
mysql-test-run.pl. Please look at its help screen for usage information.
The syntax is as follows:
1) One line per test case.
2) Empty lines and lines starting with a hash (#) are ignored.
3) If any other line contains a blank followed by a hash (#), the hash
and any subsequent characters are ignored.
4) The full test case name including the suite and execution mode
must be specified, for example:
main.alias 'row' # bug#00000
5) As an exception to item 4, the last character of the test case
specification may be an asterisk (*). In that case, all test cases that
start with the same characters up to the last letter before the asterisk
are considered experimental:
main.a* # get rid of main.alias, main.alibaba and main.agliolio
mysql-test/collections/default.daily
0 → 100644
View file @
fb36c977
perl mysql-test-run.pl --timer --force --comment=rpl_ndb_row --suite=rpl_ndb,ndb --mysqld=--binlog-format=row --experimental=collections/default.experimental
mysql-test/collections/default.experimental
0 → 100644
View file @
fb36c977
funcs_1.charset_collation_1 # depends on compile-time decisions
mysql-test/collections/default.push
0 → 100644
View file @
fb36c977
perl mysql-test-run.pl --timer --force --comment=n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --comment=ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --comment=embedded --embedded --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --comment=rpl_binlog_row --suite=rpl,binlog --mysqld=--binlog-format=row --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --comment=funcs_1 --suite=funcs_1 --experimental=collections/default.experimental
mysql-test/collections/default.weekly
0 → 100644
View file @
fb36c977
mysql-test/include/check-warnings.test
View file @
fb36c977
...
@@ -26,7 +26,7 @@ create temporary table error_log (
...
@@ -26,7 +26,7 @@ create temporary table error_log (
)
engine
=
myisam
;
)
engine
=
myisam
;
# Get the name of servers error log
# Get the name of servers error log
let
$log_error
=
query_get_value
(
show
variables
like
'log_error'
,
Value
,
1
)
;
let
$log_error
=
$MTR_LOG_ERROR
;
let
$log_warning
=
$log_error
.
warnings
;
let
$log_warning
=
$log_error
.
warnings
;
# Try tload the warnings into a temporary table,
# Try tload the warnings into a temporary table,
...
...
mysql-test/lib/My/ConfigFactory.pm
View file @
fb36c977
...
@@ -116,8 +116,8 @@ sub fix_tmpdir {
...
@@ -116,8 +116,8 @@ sub fix_tmpdir {
sub
fix_log_error
{
sub
fix_log_error
{
my
(
$self
,
$config
,
$group_name
,
$group
)
=
@_
;
my
(
$self
,
$config
,
$group_name
,
$group
)
=
@_
;
my
$dir
=
dirname
(
$group
->
value
('
datadir
'))
;
my
$dir
=
$self
->
{
ARGS
}
->
{
vardir
}
;
return
"
$dir
/
mysqld
.err
";
return
"
$dir
/
log/
$group_name
.err
";
}
}
sub
fix_log
{
sub
fix_log
{
...
@@ -203,7 +203,7 @@ my @mysqld_rules=
...
@@ -203,7 +203,7 @@ my @mysqld_rules=
{
'
#host
'
=>
\&
fix_host
},
{
'
#host
'
=>
\&
fix_host
},
{
'
port
'
=>
\&
fix_port
},
{
'
port
'
=>
\&
fix_port
},
{
'
socket
'
=>
\&
fix_socket
},
{
'
socket
'
=>
\&
fix_socket
},
{
'
log-error
'
=>
\&
fix_log_error
},
{
'
#
log-error
'
=>
\&
fix_log_error
},
{
'
log
'
=>
\&
fix_log
},
{
'
log
'
=>
\&
fix_log
},
{
'
log-slow-queries
'
=>
\&
fix_log_slow_queries
},
{
'
log-slow-queries
'
=>
\&
fix_log_slow_queries
},
{
'
#user
'
=>
sub
{
return
shift
->
{
ARGS
}
->
{
user
}
||
"";
}
},
{
'
#user
'
=>
sub
{
return
shift
->
{
ARGS
}
->
{
user
}
||
"";
}
},
...
@@ -389,7 +389,7 @@ sub post_check_embedded_group {
...
@@ -389,7 +389,7 @@ sub post_check_embedded_group {
my
@no_copy
=
my
@no_copy
=
(
(
'
log-error
',
# Embedded server writes stderr to mysqltest's log file
'
#
log-error
',
# Embedded server writes stderr to mysqltest's log file
'
slave-net-timeout
',
# Embedded server are not build with replication
'
slave-net-timeout
',
# Embedded server are not build with replication
);
);
...
...
mysql-test/lib/My/Platform.pm
View file @
fb36c977
...
@@ -113,8 +113,8 @@ sub check_socket_path_length {
...
@@ -113,8 +113,8 @@ sub check_socket_path_length {
# Create a tempfile name with same length as "path"
# Create a tempfile name with same length as "path"
my
$tmpdir
=
tempdir
(
CLEANUP
=>
0
);
my
$tmpdir
=
tempdir
(
CLEANUP
=>
0
);
my
$len
=
length
(
$path
)
-
length
(
$tmpdir
);
my
$len
=
length
(
$path
)
-
length
(
$tmpdir
)
-
1
;
my
$testfile
=
$tmpdir
.
"
x
"
x
(
$len
>
0
?
$len
:
1
);
my
$testfile
=
$tmpdir
.
"
/
"
.
"
x
"
x
(
$len
>
0
?
$len
:
1
);
my
$sock
;
my
$sock
;
eval
{
eval
{
$sock
=
new
IO::Socket::
UNIX
$sock
=
new
IO::Socket::
UNIX
...
@@ -126,17 +126,15 @@ sub check_socket_path_length {
...
@@ -126,17 +126,15 @@ sub check_socket_path_length {
die
"
Could not create UNIX domain socket: $!
"
die
"
Could not create UNIX domain socket: $!
"
unless
defined
$sock
;
unless
defined
$sock
;
die
"
UNIX domain socket pat
c
h was truncated
"
die
"
UNIX domain socket path was truncated
"
unless
(
$testfile
eq
$sock
->
hostpath
());
unless
(
$testfile
eq
$sock
->
hostpath
());
$truncated
=
0
;
# Yes, it worked!
$truncated
=
0
;
# Yes, it worked!
};
};
#print "check_socket_path_length, failed: ", $@, '\n' if ($@);
$sock
=
undef
;
# Close socket
$sock
=
undef
;
# Close socket
unlink
(
$testfile
);
# Remove the physical file
rmtree
(
$tmpdir
);
# Remove the tempdir and any socket file created
rmdir
(
$tmpdir
);
# Remove the tempdir
return
$truncated
;
return
$truncated
;
}
}
...
...
mysql-test/lib/My/SafeProcess.pm
View file @
fb36c977
...
@@ -117,6 +117,7 @@ sub new {
...
@@ -117,6 +117,7 @@ sub new {
my
$output
=
delete
(
$opts
{'
output
'});
my
$output
=
delete
(
$opts
{'
output
'});
my
$error
=
delete
(
$opts
{'
error
'});
my
$error
=
delete
(
$opts
{'
error
'});
my
$verbose
=
delete
(
$opts
{'
verbose
'});
my
$verbose
=
delete
(
$opts
{'
verbose
'});
my
$nocore
=
delete
(
$opts
{'
nocore
'});
my
$host
=
delete
(
$opts
{'
host
'});
my
$host
=
delete
(
$opts
{'
host
'});
my
$shutdown
=
delete
(
$opts
{'
shutdown
'});
my
$shutdown
=
delete
(
$opts
{'
shutdown
'});
my
$user_data
=
delete
(
$opts
{'
user_data
'});
my
$user_data
=
delete
(
$opts
{'
user_data
'});
...
@@ -137,6 +138,7 @@ sub new {
...
@@ -137,6 +138,7 @@ sub new {
push
(
@safe_args
,
$safe_script
)
if
defined
$safe_script
;
push
(
@safe_args
,
$safe_script
)
if
defined
$safe_script
;
push
(
@safe_args
,
"
--verbose
")
if
$verbose
>
0
;
push
(
@safe_args
,
"
--verbose
")
if
$verbose
>
0
;
push
(
@safe_args
,
"
--nocore
")
if
$nocore
;
# Point the safe_process at the right parent if running on cygwin
# Point the safe_process at the right parent if running on cygwin
push
(
@safe_args
,
"
--parent-pid=
"
.
Cygwin::
pid_to_winpid
(
$$
))
if
IS_CYGWIN
;
push
(
@safe_args
,
"
--parent-pid=
"
.
Cygwin::
pid_to_winpid
(
$$
))
if
IS_CYGWIN
;
...
...
mysql-test/lib/My/SafeProcess/safe_process.cc
View file @
fb36c977
...
@@ -45,6 +45,7 @@
...
@@ -45,6 +45,7 @@
#include <sys/types.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/wait.h>
#include <sys/resource.h>
#include <unistd.h>
#include <unistd.h>
#include <stdarg.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdio.h>
...
@@ -149,7 +150,8 @@ int main(int argc, char* const argv[] )
...
@@ -149,7 +150,8 @@ int main(int argc, char* const argv[] )
char
*
const
*
child_argv
=
0
;
char
*
const
*
child_argv
=
0
;
pid_t
own_pid
=
getpid
();
pid_t
own_pid
=
getpid
();
pid_t
parent_pid
=
getppid
();
pid_t
parent_pid
=
getppid
();
bool
nocore
=
false
;
/* Install signal handlers */
/* Install signal handlers */
signal
(
SIGTERM
,
handle_signal
);
signal
(
SIGTERM
,
handle_signal
);
signal
(
SIGINT
,
handle_signal
);
signal
(
SIGINT
,
handle_signal
);
...
@@ -181,6 +183,9 @@ int main(int argc, char* const argv[] )
...
@@ -181,6 +183,9 @@ int main(int argc, char* const argv[] )
start
++
;
/* Step past = */
start
++
;
/* Step past = */
if
((
parent_pid
=
atoi
(
start
))
==
0
)
if
((
parent_pid
=
atoi
(
start
))
==
0
)
die
(
"Invalid value '%s' passed to --parent-id"
,
start
);
die
(
"Invalid value '%s' passed to --parent-id"
,
start
);
}
else
if
(
strcmp
(
arg
,
"--nocore"
)
==
0
)
{
nocore
=
true
;
// Don't allow the process to dump core
}
}
else
else
die
(
"Unknown option: %s"
,
arg
);
die
(
"Unknown option: %s"
,
arg
);
...
@@ -218,6 +223,15 @@ int main(int argc, char* const argv[] )
...
@@ -218,6 +223,15 @@ int main(int argc, char* const argv[] )
// it and any childs(that hasn't changed group themself)
// it and any childs(that hasn't changed group themself)
setpgid
(
0
,
0
);
setpgid
(
0
,
0
);
if
(
nocore
)
{
struct
rlimit
corelim
=
{
0
,
0
};
if
(
setrlimit
(
RLIMIT_CORE
,
&
corelim
)
<
0
)
{
message
(
"setrlimit failed, errno=%d"
,
errno
);
}
}
// Signal that child is ready
// Signal that child is ready
buf
=
37
;
buf
=
37
;
write
(
pfd
[
1
],
&
buf
,
1
);
write
(
pfd
[
1
],
&
buf
,
1
);
...
...
mysql-test/lib/mtr_report.pm
View file @
fb36c977
...
@@ -69,6 +69,8 @@ sub _mtr_report_test_name ($) {
...
@@ -69,6 +69,8 @@ sub _mtr_report_test_name ($) {
print
_name
(),
_timestamp
();
print
_name
(),
_timestamp
();
printf
"
%-40s
",
$tname
;
printf
"
%-40s
",
$tname
;
return
$tname
;
}
}
...
@@ -105,20 +107,48 @@ sub mtr_report_test_passed ($) {
...
@@ -105,20 +107,48 @@ sub mtr_report_test_passed ($) {
sub
mtr_report_test
($)
{
sub
mtr_report_test
($)
{
my
(
$tinfo
)
=
@_
;
my
(
$tinfo
)
=
@_
;
_mtr_report_test_name
(
$tinfo
);
my
$test_name
=
_mtr_report_test_name
(
$tinfo
);
my
$comment
=
$tinfo
->
{'
comment
'};
my
$comment
=
$tinfo
->
{'
comment
'};
my
$logfile
=
$tinfo
->
{'
logfile
'};
my
$logfile
=
$tinfo
->
{'
logfile
'};
my
$warnings
=
$tinfo
->
{'
warnings
'};
my
$warnings
=
$tinfo
->
{'
warnings
'};
my
$result
=
$tinfo
->
{'
result
'};
my
$result
=
$tinfo
->
{'
result
'};
my
$retry
=
$tinfo
->
{'
retries
'}
?
"
retry-
"
:
"";
if
(
$result
eq
'
MTR_RES_FAILED
'){
if
(
$result
eq
'
MTR_RES_FAILED
'){
my
$timest
=
format_time
();
my
$timest
=
format_time
();
my
$fail
=
"
fail
";
if
(
$::opt_experimental
)
{
# Find out if this test case is an experimental one, so we can treat
# the failure as an expected failure instead of a regression.
for
my
$exp
(
@$::experimental_test_cases
)
{
if
(
$exp
ne
$test_name
)
{
# if the expression is not the name of this test case, but has
# an asterisk at the end, determine if the characters up to
# but excluding the asterisk are the same
if
(
$exp
ne
""
&&
substr
(
$exp
,
-
1
,
1
)
eq
"
*
"
)
{
$exp
=
substr
(
$exp
,
0
,
length
(
$exp
)
-
1
);
if
(
substr
(
$test_name
,
0
,
length
(
$exp
))
ne
$exp
)
{
# no match, try next entry
next
;
}
# if yes, fall through to set the exp-fail status
}
else
{
# no match, try next entry
next
;
}
}
$fail
=
"
exp-fail
";
last
;
}
}
if
(
$warnings
)
if
(
$warnings
)
{
{
mtr_report
("
[ fail ] Found warnings/errors in server log file!
");
mtr_report
("
[
$retry$
fail
] Found warnings/errors in server log file!
");
mtr_report
("
Test ended at
$timest
");
mtr_report
("
Test ended at
$timest
");
mtr_report
(
$warnings
);
mtr_report
(
$warnings
);
return
;
return
;
...
@@ -126,14 +156,14 @@ sub mtr_report_test ($) {
...
@@ -126,14 +156,14 @@ sub mtr_report_test ($) {
my
$timeout
=
$tinfo
->
{'
timeout
'};
my
$timeout
=
$tinfo
->
{'
timeout
'};
if
(
$timeout
)
if
(
$timeout
)
{
{
mtr_report
("
[ fail ] timeout after
$timeout
seconds
");
mtr_report
("
[
$retry$
fail
] timeout after
$timeout
seconds
");
mtr_report
("
Test ended at
$timest
");
mtr_report
("
Test ended at
$timest
");
mtr_report
("
\n
$tinfo
->{'comment'}
");
mtr_report
("
\n
$tinfo
->{'comment'}
");
return
;
return
;
}
}
else
else
{
{
mtr_report
("
[ fail ]
\n
Test ended at
$timest
");
mtr_report
("
[
$retry$
fail
]
\n
Test ended at
$timest
");
}
}
if
(
$logfile
)
if
(
$logfile
)
...
@@ -176,7 +206,7 @@ sub mtr_report_test ($) {
...
@@ -176,7 +206,7 @@ sub mtr_report_test ($) {
{
{
my
$timer_str
=
$tinfo
->
{
timer
}
||
"";
my
$timer_str
=
$tinfo
->
{
timer
}
||
"";
$tot_real_time
+=
(
$timer_str
/
1000
);
$tot_real_time
+=
(
$timer_str
/
1000
);
mtr_report
("
[ pass ]
",
sprintf
("
%5s
",
$timer_str
));
mtr_report
("
[
${retry}
pass ]
",
sprintf
("
%5s
",
$timer_str
));
# Show any problems check-testcase found
# Show any problems check-testcase found
if
(
defined
$tinfo
->
{'
check
'}
)
if
(
defined
$tinfo
->
{'
check
'}
)
...
...
mysql-test/lib/mtr_unique.pm
View file @
fb36c977
...
@@ -188,6 +188,8 @@ sub mtr_release_unique_id($) {
...
@@ -188,6 +188,8 @@ sub mtr_release_unique_id($) {
flock
SEM
,
LOCK_UN
or
warn
"
can't unlock
$file
.sem
";
flock
SEM
,
LOCK_UN
or
warn
"
can't unlock
$file
.sem
";
close
SEM
;
close
SEM
;
delete
$mtr_unique_ids
{
$$
};
}
}
...
...
mysql-test/mysql-test-run.pl
View file @
fb36c977
...
@@ -181,12 +181,18 @@ our $opt_client_debugger;
...
@@ -181,12 +181,18 @@ our $opt_client_debugger;
my
$config
;
# The currently running config
my
$config
;
# The currently running config
my
$current_config_name
;
# The currently running config file template
my
$current_config_name
;
# The currently running config file template
our
$opt_experimental
;
our
$experimental_test_cases
;
my
$baseport
;
my
$baseport
;
my
$opt_build_thread
=
$ENV
{'
MTR_BUILD_THREAD
'}
||
"
auto
";
my
$opt_build_thread
=
$ENV
{'
MTR_BUILD_THREAD
'}
||
"
auto
";
my
$build_thread
=
0
;
my
$opt_record
;
my
$opt_record
;
my
$opt_report_features
;
my
$opt_report_features
;
my
$opt_skip_core
;
our
$opt_check_testcases
=
1
;
our
$opt_check_testcases
=
1
;
my
$opt_mark_progress
;
my
$opt_mark_progress
;
...
@@ -677,14 +683,9 @@ sub run_worker ($) {
...
@@ -677,14 +683,9 @@ sub run_worker ($) {
report_option
('
name
',"
worker[
$thread_num
]
");
report_option
('
name
',"
worker[
$thread_num
]
");
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
#
Use auto build thread in all but first worker
#
Set different ports per thread
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
set_build_thread_ports
(
$thread_num
>
1
?
'
auto
'
:
$opt_build_thread
);
set_build_thread_ports
(
$thread_num
);
if
(
check_ports_free
()){
# Some port was not free(which one has already been printed)
mtr_error
("
Some port(s) was not free
")
}
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
# Turn off verbosity in workers, unless explicitly specified
# Turn off verbosity in workers, unless explicitly specified
...
@@ -804,7 +805,7 @@ sub command_line_setup {
...
@@ -804,7 +805,7 @@ sub command_line_setup {
'
big-test
'
=>
\
$opt_big_test
,
'
big-test
'
=>
\
$opt_big_test
,
'
combination=s
'
=>
\
@opt_combinations
,
'
combination=s
'
=>
\
@opt_combinations
,
'
skip-combinations
'
=>
\&
collect_option
,
'
skip-combinations
'
=>
\&
collect_option
,
'
experimental=s
'
=>
\
$opt_experimental
,
'
skip-im
'
=>
\&
ignore_option
,
'
skip-im
'
=>
\&
ignore_option
,
# Specify ports
# Specify ports
...
@@ -944,12 +945,12 @@ sub command_line_setup {
...
@@ -944,12 +945,12 @@ sub command_line_setup {
}
}
# Look for language files and charsetsdir, use same share
# Look for language files and charsetsdir, use same share
my
$path_share
=
mtr_path_exists
("
$basedir
/share/mysql
",
$path_language
=
mtr_path_exists
("
$basedir
/share/mysql/english
",
"
$basedir
/sql/share
",
"
$basedir
/sql/share/english
",
"
$basedir
/share
");
"
$basedir
/share/english
");
$path_language
=
mtr_path_exists
("
$path_share
/english
"
);
my
$path_share
=
dirname
(
$path_language
);
$path_charsetsdir
=
mtr_path_exists
("
$path_share
/charsets
");
$path_charsetsdir
=
mtr_path_exists
("
$path_share
/charsets
");
if
(
using_extern
())
if
(
using_extern
())
...
@@ -971,6 +972,33 @@ sub command_line_setup {
...
@@ -971,6 +972,33 @@ sub command_line_setup {
mtr_print_thick_line
('
#
');
mtr_print_thick_line
('
#
');
}
}
if
(
$opt_experimental
)
{
# read the list of experimental test cases from the file specified on
# the command line
open
(
FILE
,
"
<
",
$opt_experimental
)
or
mtr_error
("
Can't read experimental file:
$opt_experimental
");
mtr_report
("
Using experimental file:
$opt_experimental
");
$experimental_test_cases
=
[]
;
while
(
<
FILE
>
)
{
chomp
;
# remove comments (# foo) at the beginning of the line, or after a
# blank at the end of the line
s/( +|^)#.*$//
;
# remove whitespace
s/^ +//
;
s/ +$//
;
# if nothing left, don't need to remember this line
if
(
$_
eq
""
)
{
next
;
}
# remember what is left as the name of another test case that should be
# treated as experimental
print
"
-
$_
\n
";
push
@$experimental_test_cases
,
$_
;
}
close
FILE
;
}
foreach
my
$arg
(
@ARGV
)
foreach
my
$arg
(
@ARGV
)
{
{
if
(
$arg
=~
/^--skip-/
)
if
(
$arg
=~
/^--skip-/
)
...
@@ -1094,6 +1122,14 @@ sub command_line_setup {
...
@@ -1094,6 +1122,14 @@ sub command_line_setup {
$opt_shutdown_timeout
=
0
;
# Kill processes instead of nice shutdown
$opt_shutdown_timeout
=
0
;
# Kill processes instead of nice shutdown
}
}
# --------------------------------------------------------------------------
# Check parallel value
# --------------------------------------------------------------------------
if
(
$opt_parallel
<
1
)
{
mtr_error
("
0 or negative parallel value makes no sense, use positive number
");
}
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
# Record flag
# Record flag
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
...
@@ -1283,18 +1319,32 @@ sub command_line_setup {
...
@@ -1283,18 +1319,32 @@ sub command_line_setup {
# But a fairly safe range seems to be 5001 - 32767
# But a fairly safe range seems to be 5001 - 32767
#
#
sub
set_build_thread_ports
($)
{
sub
set_build_thread_ports
($)
{
my
$
build_
thread
=
shift
||
0
;
my
$thread
=
shift
||
0
;
if
(
lc
(
$build_thread
)
eq
'
auto
'
)
{
if
(
lc
(
$opt_build_thread
)
eq
'
auto
'
)
{
#mtr_report("Requesting build thread... ");
my
$found_free
=
0
;
$build_thread
=
mtr_get_unique_id
(
250
,
299
);
$build_thread
=
250
;
# Start attempts from here
if
(
!
defined
$build_thread
)
{
while
(
!
$found_free
)
mtr_error
("
Could not get a unique build thread id
");
{
$build_thread
=
mtr_get_unique_id
(
$build_thread
,
299
);
if
(
!
defined
$build_thread
)
{
mtr_error
("
Could not get a unique build thread id
");
}
$found_free
=
check_ports_free
(
$build_thread
);
# If not free, release and try from next number
mtr_release_unique_id
(
$build_thread
++
)
unless
$found_free
;
}
}
#mtr_report(" - got $build_thread");
}
else
{
$build_thread
=
$opt_build_thread
+
$thread
-
1
;
}
}
$ENV
{
MTR_BUILD_THREAD
}
=
$build_thread
;
$ENV
{
MTR_BUILD_THREAD
}
=
$build_thread
;
$opt_build_thread
=
$build_thread
;
if
(
!
check_ports_free
(
$build_thread
))
{
# Some port was not free(which one has already been printed)
mtr_error
("
Some port(s) was not free
")
}
# Calculate baseport
# Calculate baseport
$baseport
=
$build_thread
*
10
+
10000
;
$baseport
=
$build_thread
*
10
+
10000
;
...
@@ -2448,22 +2498,18 @@ sub kill_leftovers ($) {
...
@@ -2448,22 +2498,18 @@ sub kill_leftovers ($) {
# Check that all the ports that are going to
# Check that all the ports that are going to
# be used are free
# be used are free
#
#
sub
check_ports_free
sub
check_ports_free
($)
{
{
my
@ports_to_check
;
my
$bthread
=
shift
;
for
(
$baseport
..
$baseport
+
9
){
my
$portbase
=
$bthread
*
10
+
10000
;
push
(
@ports_to_check
,
$_
);
for
(
$portbase
..
$portbase
+
9
){
}
if
(
mtr_ping_port
(
$_
)){
#mtr_report("Checking ports...");
mtr_report
("
- 'localhost:
$_
' was not free
");
# print "@ports_to_check\n";
return
0
;
# One port was not free
foreach
my
$port
(
@ports_to_check
){
if
(
mtr_ping_port
(
$port
)){
mtr_report
("
- 'localhost:
$port
' was not free
");
return
1
;
# One port was not free
}
}
}
}
return
0
;
# All ports free
return
1
;
# All ports free
}
}
...
@@ -3482,7 +3528,10 @@ sub start_check_warnings ($$) {
...
@@ -3482,7 +3528,10 @@ sub start_check_warnings ($$) {
my
$name
=
"
warnings-
"
.
$mysqld
->
name
();
my
$name
=
"
warnings-
"
.
$mysqld
->
name
();
extract_warning_lines
(
$mysqld
->
value
('
log-error
'));
my
$log_error
=
$mysqld
->
value
('
#log-error
');
# To be communicated to the test
$ENV
{
MTR_LOG_ERROR
}
=
$log_error
;
extract_warning_lines
(
$log_error
);
my
$args
;
my
$args
;
mtr_init_args
(
\
$args
);
mtr_init_args
(
\
$args
);
...
@@ -3957,6 +4006,7 @@ sub mysqld_arguments ($$$) {
...
@@ -3957,6 +4006,7 @@ sub mysqld_arguments ($$$) {
mtr_add_arg
(
$args
,
"
%s
",
$arg
);
mtr_add_arg
(
$args
,
"
%s
",
$arg
);
}
}
}
}
$opt_skip_core
=
$found_skip_core
;
if
(
!
$found_skip_core
)
if
(
!
$found_skip_core
)
{
{
mtr_add_arg
(
$args
,
"
%s
",
"
--core-file
");
mtr_add_arg
(
$args
,
"
%s
",
"
--core-file
");
...
@@ -3996,6 +4046,12 @@ sub mysqld_start ($$) {
...
@@ -3996,6 +4046,12 @@ sub mysqld_start ($$) {
$path_vardir_trace
,
$mysqld
->
name
());
$path_vardir_trace
,
$mysqld
->
name
());
}
}
if
(
IS_WINDOWS
)
{
# Trick the server to send output to stderr, with --console
mtr_add_arg
(
$args
,
"
--console
");
}
if
(
$opt_gdb
||
$opt_manual_gdb
)
if
(
$opt_gdb
||
$opt_manual_gdb
)
{
{
gdb_arguments
(
\
$args
,
\
$exe
,
$mysqld
->
name
());
gdb_arguments
(
\
$args
,
\
$exe
,
$mysqld
->
name
());
...
@@ -4028,7 +4084,7 @@ sub mysqld_start ($$) {
...
@@ -4028,7 +4084,7 @@ sub mysqld_start ($$) {
# Remove the old pidfile if any
# Remove the old pidfile if any
unlink
(
$mysqld
->
value
('
pid-file
'));
unlink
(
$mysqld
->
value
('
pid-file
'));
my
$output
=
$mysqld
->
value
('
log-error
');
my
$output
=
$mysqld
->
value
('
#
log-error
');
if
(
$opt_valgrind
and
$opt_debug
)
if
(
$opt_valgrind
and
$opt_debug
)
{
{
# When both --valgrind and --debug is selected, send
# When both --valgrind and --debug is selected, send
...
@@ -4048,6 +4104,7 @@ sub mysqld_start ($$) {
...
@@ -4048,6 +4104,7 @@ sub mysqld_start ($$) {
error
=>
$output
,
error
=>
$output
,
append
=>
1
,
append
=>
1
,
verbose
=>
$opt_verbose
,
verbose
=>
$opt_verbose
,
nocore
=>
$opt_skip_core
,
host
=>
undef
,
host
=>
undef
,
shutdown
=>
sub
{
mysqld_stop
(
$mysqld
)
},
shutdown
=>
sub
{
mysqld_stop
(
$mysqld
)
},
);
);
...
@@ -4100,12 +4157,6 @@ sub server_need_restart {
...
@@ -4100,12 +4157,6 @@ sub server_need_restart {
return
0
;
return
0
;
}
}
if
(
$opt_embedded_server
)
{
mtr_verbose_restart
(
$server
,
"
no start or restart for embedded server
");
return
0
;
}
if
(
$tinfo
->
{'
force_restart
'}
)
{
if
(
$tinfo
->
{'
force_restart
'}
)
{
mtr_verbose_restart
(
$server
,
"
forced in .opt file
");
mtr_verbose_restart
(
$server
,
"
forced in .opt file
");
return
1
;
return
1
;
...
@@ -4335,7 +4386,7 @@ sub start_servers($) {
...
@@ -4335,7 +4386,7 @@ sub start_servers($) {
# Already started
# Already started
# Write start of testcase to log file
# Write start of testcase to log file
mark_log
(
$mysqld
->
value
('
log-error
'),
$tinfo
);
mark_log
(
$mysqld
->
value
('
#
log-error
'),
$tinfo
);
next
;
next
;
}
}
...
@@ -4394,7 +4445,7 @@ sub start_servers($) {
...
@@ -4394,7 +4445,7 @@ sub start_servers($) {
mkpath
(
$tmpdir
)
unless
-
d
$tmpdir
;
mkpath
(
$tmpdir
)
unless
-
d
$tmpdir
;
# Write start of testcase to log file
# Write start of testcase to log file
mark_log
(
$mysqld
->
value
('
log-error
'),
$tinfo
);
mark_log
(
$mysqld
->
value
('
#
log-error
'),
$tinfo
);
# Run <tname>-master.sh
# Run <tname>-master.sh
if
(
$mysqld
->
option
('
#!run-master-sh
')
and
if
(
$mysqld
->
option
('
#!run-master-sh
')
and
...
@@ -4445,7 +4496,7 @@ sub start_servers($) {
...
@@ -4445,7 +4496,7 @@ sub start_servers($) {
$tinfo
->
{
comment
}
=
$tinfo
->
{
comment
}
=
"
Failed to start
"
.
$mysqld
->
name
();
"
Failed to start
"
.
$mysqld
->
name
();
my
$logfile
=
$mysqld
->
value
('
log-error
');
my
$logfile
=
$mysqld
->
value
('
#
log-error
');
if
(
defined
$logfile
and
-
f
$logfile
)
if
(
defined
$logfile
and
-
f
$logfile
)
{
{
$tinfo
->
{
logfile
}
=
mtr_fromfile
(
$logfile
);
$tinfo
->
{
logfile
}
=
mtr_fromfile
(
$logfile
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment