暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第 2 章:OceanBase 开发环境搭建 2.4 如何运行测试

223

2.4 如何运行测试

如何运行单元测试

前提条件

运行单元测试需要完全编译源码,有关如何编译源码,详情请参见 2.1 如何编译 OceanBase 源码

操作步骤


运行所有单元测试

调试构建 OceanBase 项目前,需要打开 build_debug 文件夹并执行如下构建命令:

cd build_debug/unittest/
make -j 4
./run_tests.sh


说明

  • 您需先编译 OceanBase 源码之后才会出现 build_debug 文件夹。

  • 因为需运行的测试案例过多,上述构建命令可能需要一个多小时才能执行完成。


执行单个单元测试

若要运行特定的单元测试,可以找到对应单元测试所在的目录,编译后执行对应的二进制文件。

下面以 test_base64_encode 为例进行示范,test_base64_encode 测试文件位于 unittest/sql/common 目录下,执行如下命令:

cd build_debug/unittest/sql/common
make -j 4
./test_base64_encode


如何运行 mysqltest

前提条件

在运行 mysqltest 前需要先启动一个集群,推荐使用 OBD 启动集群,详情请参考:https://www.oceanbase.com/docs/community/observer-cn/V3.1.4/10000000000449874

此外,在开始运行 mysqltest 之前,我们需要理解以下两个名词的含义。

  • case:执行 mysqltest 的最小单元,一个 case 至少包含一个测试文件和一个结果文件。

  • suite:case 的集合被称为 suite。

操作步骤

我们提供了三种不同的测试模式,分别是全量测试、单 suite 测试和单 case 测试。下面将分别对这三种测试模式进行介绍。


全量测试

若要执行 mysql_test/test_suite 路径下的所有测试,可参考如下命令:

cd tools/deploy
obd test mysqltest <deploy name> --all --auto-retry
# 如果执行obd命令时不处于当前目录请使用 --suite-dir 选项
# 一些case中包含是相当路径,不在当前目录执行可能会导致失败

参数说明:

  • 参数 deploy name 为部署配置名称,可以理解为配置文件名称。

  • 选项 --suite-dir 为 suite 所在目录,默认为 ./mysql_test/test_suite

  • 选项 --all 为执行 --suite-dir 下全部 suite。

  • 选项 --auto-retry 开启后,当 case 第一次执行失败时会自动重部署集群进行重试。


单 suite 测试

若要对 mysql_test/test_suite 下指定 suite 执行测试,可参考如下命令:

cd tools/deploy
obd test mysqltest <deploy name> --suite <suite_name>  --auto-retry
# 如果执行 OBD 命令时不处于当前目录请使用 --suite-dir 选项
# 一些 case 中包含是相当路径,不在当前目录执行可能会导致失败

参数说明:

  • 参数 deploy name 为部署配置名称,可以理解为配置文件名称。

  • 选项 --suite-dir 为 suite 所在目录,默认为 ./mysql_test/test_suite

  • 选项 --suite 为要执行 suite 的集合,多个 suite 之间使用英文逗号(,)间隔。

  • 选项 --auto-retry 开启后,当 case 第一次执行失败时会自动重部署集群进行重试。


单 case 测试

若要对特定 case 进行测试,例如 mysql_test/test_suite/alter/t/alter_log_archive_option.test,可参考如下命令:

cd tools/deploy
obd test mysqltest <deploy name> --test-dir ./mysql_test/test_suite/alter/t --result-dir ./mysql_test/test_suite/alter/r --test-set alter_log_archive_option --auto-retry
# 如果执行 OBD 命令时不处于当前目录请调整 --test-dir 和 --result-dir
# 一些 case 中包含是相当路径,不在当前目录执行可能会导致失败

参数说明:

  • 参数 deploy name 为部署配置名称,可以理解为配置文件名称。

  • 选项 --test-dir 为 test 文件所在目录,默认为 ./t

  • 选项 --result-dir 为 result 文件所在目录,默认为 ./r

  • 选项 --test-set 为要执行 case 的集合,多个 case 之间使用英文逗号(,)间隔。

  • 选项 --auto-retry 开启后,当 case 第一次执行失败时会自动重部署集群进行重试。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论