技术分享论坛_MySQL Community Server

技术分享论坛_MySQL Community Server作者:雷霞 爱可生测试团队负责人,专注于 MySQL 相关的测试工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 什么是 Mysql Tes…

技术分享 | MySQL Test 初探

作者:雷霞 爱可生测试团队负责人,专注于 MySQL 相关的测试工作。​ 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


什么是 Mysql Test?

Mysql Test 是 MySQL 发行版本中集成 all-in-one 测试框架,用于做 mysql 服务的单元,回归和一致性测试,并提供了运行单元测试和创建新单元测试的工具。

框架包括一组测试用例和用于运行它们的程序:perl 脚本(mysql-test-run.pl)和 c++ 二进制(mysqltest)。

  • perl 脚本:负责控制流程,包括启停、识别执行哪些用例、创建文件夹、收集结果等操作。
  • mysqltest:负责执行测试用例,包括读文件,解析特定语法,执行用例。

安装环境

OS:Ubuntu 18.04.1 LTS

1、下载 MySQL 源码包

本文采用的 MySQL 版本是 5.7.26,可根据需要自行选择版本

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26.tar.gz

代码100分

2、安装编译 MySQL 源码所需依赖包

代码100分apt install make cmake gcc g++ perl 
	bison libaio-dev libncurses5 
	libncurses5-dev libnuma-dev

如上步操作失败或速度过慢,可修改 /etc/apt/sources.list 换成国内的源

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

3、安装 boost 1.59

需要安装 boost 1.59 版本,系统默认的 1.65 版本不可用

代码100分wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
./bootstrap.sh
./b2 install

4、配置编译安装

cmake . -DBUILD_CONFIG=mysql_release -DCPACK_MONOLITHIC_INSTALL=ON -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQLX_TCP_PORT=33060 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQLX_UNIX_ADDR=/usr/local/mysql/mysqlx.sock -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DENABLE_DOWNLOADS=ON -DWITH_BOOST=system

make -j4
make install

编译完成后,在 MySQL 安装目录生成如下目录结构

drwxr-xr-x  2 root root   4096 Feb 12 04:24 collections/
drwxr-xr-x  4 root root   4096 Feb 12 04:24 extra/
drwxr-xr-x  2 root root  40960 Feb 12 04:24 include/
drwxr-xr-x  4 root root   4096 Feb 12 04:24 lib/
-rw-r--r--  1 root root    836 Apr 13  2019 lsan.supp
lrwxrwxrwx  1 root root     19 Feb 12 04:24 mtr -> ./mysql-test-run.pl*
-rwxr-xr-x  1 root root  36862 Apr 13  2019 mysql-stress-test.pl*
lrwxrwxrwx  1 root root     19 Feb 12 04:24 mysql-test-run -> ./mysql-test-run.pl*
-rwxr-xr-x  1 root root 220158 Apr 13  2019 mysql-test-run.pl*
drwxr-xr-x  2 root root  65536 Feb 16 10:22 r/
drwxr-xr-x  7 root root  12288 Feb 12 04:24 std_data/
drwxr-xr-x 46 root root   4096 Feb 12 04:24 suite/
drwxr-xr-x  2 root root  77824 Feb 16 10:22 t/
-rw-r--r--  1 root root  29730 Apr 13  2019 valgrind.supp
drwxr-xr-x  9 root root   4096 Mar  5 08:40 var/

第一个测试示例

我们通过一个最简单的例子来说明这个框架是怎么使用的。

1、创建测试用例

mysql-test/t 目录下创建一个文件名为 action_1st.test 的文件,

root@ubuntu:/usr/local/mysql/mysql-test# vim t/action_1st.test
--disable_warnings
DROP TABLE IF EXISTS t1;
SET @@sql_mode="NO_ENGINE_SUBSTITUTION";
--enable_warnings

SET SQL_WARNINGS=1;

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);

DROP TABLE t1; 

/mysql-test/r 目录下创建一个 action_1st.resul 的文件

root@ubuntu:/usr/local/mysql/mysql-test# vim r/action_1st.result 
DROP TABLE IF EXISTS t1;
SET @@sql_mode="NO_ENGINE_SUBSTITUTION";
SET SQL_WARNINGS=1;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
DROP TABLE t1;

2、执行并查看运行效果

执行测试用例

root@ubuntu:/usr/local/mysql/mysql-test# ./mtr action_1st.test 
Logging: ./mtr  action_1st.test
MySQL Version 5.7.26
Checking supported features...
 - SSL connections supported
Collecting tests...
Checking leftover processes...
Removing old var directory...
Creating var directory "/usr/local/mysql/mysql-test/var"...
Installing system database...
Using parallel: 1

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

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
worker[1] mysql-test-run: WARNING: running this script as _root_ will cause some tests to be skipped
[100%] main.action_1st                          [ pass ]     12
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.012 of 4 seconds executing testcases

Completed: All 1 tests were successful.

测试用例运行时,mysqltest 会将 mysql-test/t/action_1st.test 的执行结果与 mysql-test/r/action_1st.result 作差异对笔 diff。如果预期结果与实际结果不同,测试用例失败,如上图所示,测试用例的执行结果与预期结果一致。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9252.html

(0)
上一篇 2023-02-12 14:00
下一篇 2023-02-12

相关推荐

  • Python字符串操作:轻松处理文本数据

    Python字符串操作:轻松处理文本数据对于在Python中处理文本数据的工程师来说,熟练掌握字符串操作是至关重要的。字符串操作可以让我们轻松地处理各种文本数据,使我们能够编写出更高效、更可靠的代码。这篇文章将从几个方面详细阐述Python中的字符串操作。

    2024-03-08
    83
  • 提高Python代码可读性的技巧

    提高Python代码可读性的技巧可读性是每个开发人员必须具备的技能之一,因为可读性良好的代码可以帮助其他人更好地理解你的代码,并且能够减少代码中的错误。本文将介绍一些可以提高Python代码可读性的技巧。

    2024-03-01
    98
  • 如何打开Python?

    如何打开Python?Python是一种高级编程语言,它流行于各种应用程序、Web应用程序和大数据分析等领域。在本篇文章中,我们将详细介绍如何打开Python,并从多个方面进行阐述。

    2024-09-03
    22
  • 用Python实现判断质数的简单算法

    用Python实现判断质数的简单算法在数学中,质数(prime number)又称素数,指在大于1的自然数中,除了1和该数自身以外不再有其他因数的自然数。例如2、3、5、7等都是质数,而4、6、8等则不是质数。判断一个数是否是质数在数学中是一个重要的问题,也是计算机科学中经典的问题之一。

    2024-07-30
    27
  • Python代码如何运行

    Python代码如何运行Python是一门用途广泛的编程语言,运行Python程序有多种方式。无论是在终端中运行还是在集成开发环境(IDE)中运行,Python程序都可以通过解释器执行。本文将介绍如何使用解释器来运行Python代码,以及其他一些与运行Python代码相关的知识。

    2024-08-18
    36
  • MySQL 安全管理[通俗易懂]

    MySQL 安全管理[通俗易懂]权限表 MySQL 服务器通过权限表来控制用户对数据库的访问,由 mysql_install_db 脚本初始化,MySQL 会根据这些权限表的内容为每个用户赋予相应的权限 1. user 表 user

    2023-05-14
    147
  • .NET MAUI (微软 .Net 6 跨多平台应用 UI)框架的研究学习「建议收藏」

    .NET MAUI (微软 .Net 6 跨多平台应用 UI)框架的研究学习「建议收藏」.NET MAUI

    2023-06-13
    149
  • centos安装mysql5.7

    centos安装mysql5.7切换yum源网易yum源:wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.163.com/.help/CentOS7-Base-163.r…

    2023-04-04
    158

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注