你可以用mysqltest 语言编写你自己的测试案例。不幸地是,我们还没有写完相关方面完整地文档。但是,你可以查看我们现有的测试案例,并将它们作为范例。下面几点将有助于你入手:
测试位于 mysql-test/t/*.test
测试案例包括终止声明,测试案例类似于mysql命令行客户端的输入。 默认的声明是一个被发送到MySQL服务器的查询,除非这个声明被识别为内部命令(如 sleep)。
所有产生结果的查询,例如SELECT, SHOW, EXPLAIN等,必须在 @/path/to/result/file之前。那个文件必须包含期望的结果。生成结果文件的一个简单办法是在mysql-test目录运行mysqltest -r < t/test-case-name.test ,然后编辑生成的结果文件,如果需要,可将它们调整到想要的输出端。在那种情况下,要小心避免添加或删除任何不可见的字符,确保只改变文本和(或)删除行。如果插入一行,要确保插入的区域被一个硬标识隔开,且在行尾有一个硬标识。你可能会想要使用od -c来确保你的文本编辑器在编辑 步骤中没有搞乱任何东西。当你发现一个缺陷而不得不编辑mysqltest -r的输出时,我们真希望你不要编辑它。
为和我们的设置一致,你应该把你的结果文件放在mysql-test/r 目录,并取名为test_name.result。如果测试产生不止一个结果,你应该使用诸如 test_name.a.result,test_name.b.result等这样的名字。
如果声明返回一个错误,你可以在声明的前一行使用--error error-number来详细说明它。错误号可能是由“,”分开的可能错误号的列表。
如果你正编写一个重复的测试案例,你应该在测试文件的第一行写:source include/master-slave.inc;。用connection master; 和 connection slave;来切换主案例和从案例。如果你需要对一个替换的连接做点什么,对于主连接,用connection master1;,对于从连接,用connection slave1;。
如果需要在一个循环里做点什么,可以用些这样的内容:
let $1=1000; while ($1) { # do your queries here dec $1; }
在查询之间休眠,使用sleep命令。此命令支持几分之几秒,所以,例如你想要休眠1.3秒,你可以使用sleep 1.3; 命令。
对你的测试案例要运行带附加选项的从案例,以命令行方式把它们放在mysql-test/t/test_name-slave.opt。对于主案例,把它们放在mysql-test/t/test_name-master.opt。
如果对测试套件有问题,和想要献出一个测试案例,发送邮件信息到MySQL 内部插件 邮件列表。请参阅1.7.1.1节,“MySQL邮件列表”。 虽然这个列表不接受附件,你可以把相关文件通过ftp上传到:ftp://ftp.mysql.com/pub/mysql/upload/