mysql test suite_MySQL Test Suite使用

MySQL自动测试套件(The MySQL Test Suite)用于对MySQL程序进行测试,包括各种功能与存储引擎。包含于MySQL与MariaDB版本代码中,位于mysql-test目录下。总体测试脚本为mysql-test-run.pl。该perl脚本通过调用各种已有的测试脚本,将测试结果与预置的result文件做对比来判断测试是否通过。(任何一点差异都会导致测试失败,包括预期之外的warning)

一、主要目录介绍

include

包含.inc文件,用于测试开始时判断是否满足测试条件,在测试用通过source命令引入

如hava_innodb.inc:

1

2

3

4

if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'innodb' AND support IN ('YES', 'DEFAULT', 'ENABLED')`)

{

--skip Test requires InnoDB.

}

如不满足,则会跳过需要该验证的测试。

suite

包含所有测试suite,每一个suite为一个测试用例集,具体用例集在2节介绍

t

1、测试文件

例:1st.test

1

2

3

4

5

#

# Check that we haven't any strange new tables or databases

#

show databases;

show tables in mysql;

上面内容即为1st这个测试用例的测试脚本

2、配置文件

例:innodb_bug53674-master.opt

–loose-innodb-locks-unsafe-for-binlog –binlog-format=mixed

为该测试需要的特殊配置项

3、脚本文件,在测试开始之前执行的脚本

例:rpl_misc_functions-slave.sh

rm -f $MYSQLTEST_VARDIR/master-data/test/rpl_misc_functions.outfile

r

结果文件,判断是否通过的依据

使用上面的例子:1st.result

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

show databases;

Database

information_schema

mtr

mysql

performance_schema

test

show tables in mysql;

Tables_in_mysql

column_stats

columns_priv

db

event

func

general_log

gtid_slave_pos

help_category

help_keyword

help_relation

help_topic

host

index_stats

innodb_index_stats

innodb_table_stats

plugin

proc

procs_priv

proxies_priv

roles_mapping

servers

slow_log

table_stats

tables_priv

time_zone

time_zone_leap_second

time_zone_name

time_zone_transition

time_zone_transition_type

user

执行完1st用例会严格比对该文件。完全一致则测试通过。

std_date

有些测试需要用到一些标准数据。

var

测试默认使用该文件夹下的my.cnf文件

二、测试用例集

./mysql-test-run.pl不带任何参数表示执行所有测试用例集。使用—suite=suitename来指定单独执行suitename目录下的所有测试用例。

测试用例集包括:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

main:主要测试用例

archive

binlog

csv

encryption:加密功能

engines

federated

funcs_1:额外功能(包括视图、存储过程、INFORMATION_SCHEMA等)

funcs_2:额外功能(字符集等)

galera

galera_3nodes

handler

heap

innodb

innodb_fts:innodb全文索引

innodb_zip:innodb压缩

jp:日本字符相关测试

large_tests:

maria

mtr

mtr2

multi_source

ndb

optimizer_unfixed_bugs

parts

percona

perfschema

perfschema_stress

plugins

roles

rpl

storage_engine

stress

sys_vars

unit

vcol

wsrep

三、主要参数

force:默认情况下,只要遇到一个用例出错,测试程序就会退出,在指定force的情况下,测试程序会继续执行下面的测试(但是最多发现10个错误还是会退出)

suite:指定使用的测试suite

do-test:会以输入的字符串进行匹配用例执行

skip-test:会以输入的字符串进行匹配跳过用例执行

big-test:执行标记为big的测试用例。因为用例较大、耗时较长,标记为big的用例默认不会执行。输入两遍big-test则只执行标记为big的测试用例

recored:重新生成结果文件

mysqld:传递启动参数给mysqld,每个参数需要分别指定一个mysqld

其他还有很多选项,可以使用./mtr –help查看

如果需要在服务启动前执行一些脚本,可以写在 t/testname.sh文件中,由mtr自动执行。

四、测试举例

例1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

[lzk@redhat64-26 mysql-test]$ ./mtr  --force --big-test --suite=archive

Logging: ./mtr  --force --big-test --suite=archive

vardir: /home/lzk/mysql-test/var

Checking leftover processes...

Removing old var directory...

Creating var directory '/home/lzk/mysql-test/var'...

Checking supported features...

MariaDB Version 10.1.12-MariaDB

- SSL connections supported

Using suites: archive

Collecting tests...

Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT

--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019

archive.archive_debug                    [ skipped ]  Requires debug build

archive.partition_archive                [ pass ]     74

archive.archive_no_symlink               [ pass ]      5

archive.archive-big                      [ pass ]  298619

archive.archive                          [ pass ]    417

archive.archive_bitfield                 [ pass ]     37

archive.archive_gis                      [ pass ]     66

archive.archive_symlink                  [ pass ]     11

archive.discover                         [ pass ]     47

archive.discover_5438                    [ pass ]      7

archive.mysqlhotcopy_archive             [ pass ]   1035

archive.repair                           [ pass ]      3

archive.archive_plugin                   [ pass ]      6

--------------------------------------------------------------------------

The servers were restarted 3 times

Spent 300.327 of 309 seconds executing testcases

Completed: All 12 tests were successful.

1 tests were skipped, 0 by the test itself.

可以看出共完成12个测试用例,全部通过。1个用例必须在debug模式下测试,所以跳过。测试过程中服务重启3次。测试默认使用16000-16019端口。

例2:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

[lzk@redhat64-26 mysql-test]$  ./mtr binlog_innodb_row

Logging: ./mtr  binlog_innodb_row

vardir: /home/lzk/mysql-test/var

Checking leftover processes...

- found old pid 28610 in 'mysqld.1.pid', killing it...

process did not exist!

Removing old var directory...

Creating var directory '/home/lzk/mysql-test/var'...

Checking supported features...

MariaDB Version 10.1.12-MariaDB

- SSL connections supported

klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_550)

Collecting tests...

Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT

--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019

binlog.binlog_innodb_row 'innodb_plugin,row' [ pass ]   3361

binlog.binlog_innodb_row 'row,xtradb'    [ pass ]   3349

--------------------------------------------------------------------------

The servers were restarted 1 times

Spent 6.710 of 17 seconds executing testcases

Completed: All 2 tests were successful.

每个测试结束前,mtr会检索error日志,如果发现warning或error,则测试失败。

再来看两个失败用例:

(截取部分日志)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

innodb.innodb_bug53674 'innodb_plugin'   [ fail ]  Found warnings/errors in server log file!

Test ended at 2016-03-24 20:57:36

line

2016-03-24 20:57:35 7fd0fc6fc7e0 InnoDB: Warning: Using innodb_locks_unsafe_for_binlog is DEPRECATED. This option may be removed in future releases. Please use READ COMMITTED transaction isolation level instead, see http://dev.mysql.com/doc/refman/5.6/en/set-transaction.html.

^ Found warnings in /home/lzk/mysql-test/var/log/mysqld.1.err

ok

- saving '/home/lzk/mysql-test/var/log/innodb.innodb_bug53674-innodb_plugin/' to '/home/lzk/mysql-test/var/log/innodb.innodb_bug53674-innodb_plugin/'

innodb.innodb_bug53674 'xtradb'          [ fail ]  Found warnings/errors in server log file!

Test ended at 2016-03-24 20:57:37

line

2016-03-24 20:57:36 7f274c58b7e0 InnoDB: Warning: Using innodb_locks_unsafe_for_binlog is DEPRECATED. This option may be removed in future releases. Please use READ COMMITTED transaction isolation level instead, see http://dev.mysql.com/doc/refman/5.6/en/set-transaction.html.

^ Found warnings in /home/lzk/mysql-test/var/log/mysqld.1.err

ok

- saving '/home/lzk/mysql-test/var/log/innodb.innodb_bug53674-xtradb/' to '/home/lzk/mysql-test/var/log/innodb.innodb_bug53674-xtradb/'

分析日志可以看出是在测试过程中在错误日志中发现了warnings/errors。原因是使用了废弃的参数innodb_locks_unsafe_for_binlog导致warning。

找到并修改配置文件:innodb_bug53674-master.opt

将–loose-innodb-locks-unsafe-for-binlog –binlog-format=mixed

修改为:–transaction-isolation=READ-COMMITTED –binlog-format=mixed

重新测试:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

[lzk@redhat64-26 mysql-test]$ ./mtr innodb_bug53674

Logging: ./mtr  innodb_bug53674

vardir: /home/lzk/mysql-test/var

Checking leftover processes...

Removing old var directory...

Creating var directory '/home/lzk/mysql-test/var'...

Checking supported features...

MariaDB Version 10.1.12-MariaDB

- SSL connections supported

klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_550)

Collecting tests...

Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT

--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019

innodb.innodb_bug53674 'innodb_plugin'   [ pass ]    211

innodb.innodb_bug53674 'xtradb'          [ pass ]    205

--------------------------------------------------------------------------

The servers were restarted 1 times

Spent 0.416 of 10 seconds executing testcases

Completed: All 2 tests were successful.

不再有warning,测试通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值