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 第一次执行失败时会自动重部署集群进行重试。




