mtr Running Test Cases

Running Test Cases

Typically, you run the test suite either from within a source tree (after MySQL has been built), or on a host where the MySQL server distribution has been installed.
通常,您可以在源树中(在MySQL构建之后)运行测试套件,或者在安装了MySQL服务器分发版的主机上运行测试套件。

(If you find that the test suite is not included in your distribution, look for a similar distribution with -test in the name and install that as well.)
(如果您发现该测试套件不包含在您的发行版中,请查找名称中带有-test的类似发行版并安装它。)

To run tests, your current working directory should be the mysql-test directory of your source tree or installed distribution. In a source distribution, mysql-test is under the root of the source tree. In a binary distribution, the location of mysql-test depends on the distribution layout. The program that runs the test suite, mysql-test-run.pl, will figure out whether you are in a source tree or an installed directory tree.
要运行测试,当前的工作目录应该是源代码树或安装的发行版的mysql-test目录。在源码发布中,mysql-test位于源码树的根下。在二进制发行版中,mysql-test的位置取决于发行版的布局。运行测试套件的程序mysql-test-run.pl将确定您是在源代码树中还是在已安装的目录树中。

To run the test suite, change location into your mysql-test directory and invoke the mysql-test-run.pl script:
要运行测试套件,将位置更改到你的mysql-test目录,并调用mysql-test-run.pl脚本:

shell> cd mysql-test
shell> ./mysql-test-run.pl

mysql-test-run.pl accepts options on the command line. For example:
mysql-test-run.pl 接收命令行参数,例如:

shell> ./mysql-test-run.pl --force --suite=binlog

By default, mysql-test-run.pl exits if a test case fails. --force causes execution to continue regardless of test case failure.
默认情况下,如果测试用例失败,mysql-test-run.pl将退出。——force导致执行继续,不管测试用例失败。

For a full list of the supported options, see mysql-test-run.pl — Run MySQL Test Suite.
有关支持的选项的完整列表,请参阅 mysql-test-run.pl - Run MySQL测试套件。

To run one or more specific test cases, name them on the mysql-test-run.pl command line. Test case files have names like t/test_name.test, where test_name is the name of the test case, but each name given on the command line should be the test case name, not the full test case file name. The following command runs the test case named rpl_abcd, which has a test file of t/rpl_abcd.test:
要运行一个或多个特定的测试用例,请在mysql-test-run.pl命令行中为它们命名。测试用例文件的名称类似于t/test_name。test_name是测试用例的名称,但是命令行上给出的每个名称都应该是测试用例名称,而不是完整的测试用例文件名。运行名为rpl_abcd的测试用例,测试文件为t/rpl_abcd.test:

shell> ./mysql-test-run.pl rpl_abcd

To run a family of test cases for which the names share a common prefix, use the --do-test option:
要运行名称共享一个公共前缀的一系列测试用例,使用——do-test选项:

shell> ./mysql-test-run.pl --do-test=prefix

For example, the following command runs the events tests (test cases that have names beginning with events):
例如,以下命令运行事件测试(名称以事件开头的测试用例):

shell> ./mysql-test-run.pl --do-test=events

To run a specific named testsuite with all the test cases in it, use the --suite option:
要运行包含所有测试用例的特定命名测试套件,使用——suite选项:

shell> ./mysql-test-run.pl --suite=suite_name

For example, the following command runs the replication tests located in the rpl suite:
例如,以下命令运行位于rpl套件中的复制测试:

shell> ./mysql-test-run.pl --suite=rpl

mysql-test-run.pl starts the MySQL server, sets up the environment for calling the mysqltest program, and invokes mysqltest to run the test case. For each test case to be run, mysqltest handles operations such as reading input from the test case file, creating server connections, and sending SQL statements to servers.
mysql-test-run.pl启动MySQL服务器,设置调用mysqltest程序的环境,并调用mysqltest来运行测试用例。对于要运行的每个测试用例,mysqltest处理诸如从测试用例文件中读取输入、创建服务器连接以及向服务器发送SQL语句等操作。

The language used in test case files is a mix of commands that the mysqltest program understands and SQL statements. Input that mysqltest doesn't understand is assumed to consist of SQL statements to be sent to the database server. This makes the test case language familiar to those that know how to write SQL and powerful enough to add the control needed to write test cases.
测试用例文件中使用的语言是mysqltest程序理解的命令和SQL语句的混合。假设mysqltest不能理解的输入包含要发送到数据库服务器的SQL语句。这使得测试用例语言对那些知道如何编写SQL的人来说很熟悉,而且它的功能足够强大,可以添加编写测试用例所需的控件。

You need not start a MySQL server first before running tests. Instead, the mysql-test-run.pl program will start the server or servers as needed. Any servers started for the test run use ports in the range from 13000 by default.
在运行测试之前,不需要先启动MySQL服务器。相反,mysql-test-run.pl程序将根据需要启动服务器。默认情况下,为测试运行启动的任何服务器都使用13000范围内的端口。

Running Tests in Parallel

It is possible to run more than one instance of mysql-test-run.pl simultaneously on the same machine. Both will by default use server ports from 13000 but will coordinate used port numbers as well as check for availibility, to avoid conflicts.
可以在同一台机器上同时运行多个mysql-test-run.pl实例。两者都将默认使用13000起的服务器端口,但将协调使用的端口号,并检查可用性,以避免冲突。

Running several instances from the same mysql-test directory is possible but problematic. You must the use the --vardir to set different log directories for each instance. Even so, you can get into trouble becuse they will write .reject files to the same directories.
从同一个mysql-test目录运行几个实例是可能的,但有问题。您必须使用——vardir为每个实例设置不同的日志目录。即使这样,您也会遇到麻烦,因为它们会将.reject文件写入相同的目录。

It is also possible to have a single mysql-test-run.pl run tests in several threads in parallel. Execution of the tests will be distributed among the threads. This is achieved using the --parallel option, with the number of threads as argument. The special value auto will ask mysql-test-run.pl to pick a value automatically, based on system information. The parallel option may also be given using the environment variable MTR_PARALLEL.
也可以让一个mysql-test-run.pl并行地在几个线程中运行测试。测试的执行将分布在各个线程之间。这可以使用——parallel选项,并使用线程数作为参数。这个特殊值auto会要求mysql-test-run.pl根据系统信息自动选择一个值。parallel选项也可以使用环境变量MTR_PARALLEL给出。

Note

  • Test cases which use not_parallel.inc are run at the end with a parallel value of 1 overriding the --parallel option value. Such test cases will be executed at the end of the test run one at a time.
    使用not_parallel的测试用例。在末尾使用并行值1覆盖——parallel选项值运行Inc。这样的测试用例将在测试运行结束时一次执行一个。

你可能感兴趣的:(mtr Running Test Cases)