- Make mysql-test-run.pl restart a crashed/stopped process if it was expected it should crash.
- Added testcase for "crash_commit_before", which tests behaviour when server crashes just before commit.
* The testcase first write a small var/tmp/master0.expect file indicating expected crash
* Then sets "DEBUG" variable to for example "d,crash_commit_before" and then executes a commit.
* The server will crash and be brought back up by mysql-test-run.pl
* Test case will then wait for the process to come back online before continuing.
tests fail on FreeBSD.
The patch contains of the following:
- make Instance Manager, running in the daemon mode, dump
the pid of angel-process in the special file;
- default value of angel-pid-file-name is 'mysqlmanager.angel.pid';
- if ordinary (IM) pid-file-name is specified in the configuration,
angel-pid-file-name is updated according to the following
rule: extension of the basename of pid-file-name is replaced by
'.angel.pid.
For example:
- pid-file-name: /tmp/im.pid
=> angel-pid-file-name: /tmp/im.angel.pid
- pid-file-name: /tmp/im.txt
=> angel-pid-file-name: /tmp/im.angel.pid
- pid-file-name: /tmp/5.0/im
=> angel-pid-file-name: /tmp/5.0/im.angel.pid
- add support for configuration option to customize angel
pid file name;
- fix test suite to use angel pid to kill Instance Manager
by all means if something went wrong.
Background
----------
The problem is that on some OSes (FreeBSD for one) Instance
Manager does not get SIGTERM, so can not shutdown gracefully.
Test suite wasn't able to cope with it, so this leads to the
mess in test results.
The problem should be split into two:
- fix signal handling;
- fix test suite.
This patch fixes test suite so that it will be able to kill
uncooperative Instance Manager. In order to achieve this,
test suite needs to know PID of IM Angel process.
errorneously abort reporting failure to kill child processes, where in
reality the problem was merely that the child had become a zombie because
of missing waitpid() call.
Added --skip-im option handling
Don't terminate script if IM fails to create PID file
mtr_cases.pl:
Added --skip-im option handling
mtr_process.pl:
Kill left over 'mysqld' processes started by IM
Call mtr_timer_stop_all() at exit
mtr_report.pl, mysql-test-run.pl:
Added default/ps-protocol/embedded to abort and summary line
mtr_timer.pl:
Added function mtr_timer_stop_all()