On this page
单元测试并行执行
Warning
您可能正在寻找Hive PreCommit 补丁测试。
本页说明如何在 Hive(https://issues.apache.org/jira/browse/HIVE-1487)中使用并行测试。
Installation
Python modules
要使用并行测试,您必须安装带有“ argparse”和“ mako”的 Python
模块。您可以使用软件包 Management 器来执行此操作,也可以安装
手工制作模块。如果您使用的是 Python 2.7 或更高版本,则“ argparse”模块为
已经包含在内,您无需安装它。
Global installation
您可以使用“ easy_install”为所有用户全局安装模块:
sudo easy_install argparse
sudo easy_install mako
Local installation
如果您的计算机上没有 root 访问权限,或者您不想污染您的计算机
系统目录中,您可以将模块安装在主目录中。
easy_install --prefix "~/.python_modules" argparse
easy_install --prefix "~/.python_modules" mako
您必须更新“ PYTHONPATH”环境变量以包含
“~/ .python_modules”。您可以通过将这一行添加到“ .bashrc”中来做到这一点,或者
".zshrc":
export PYTHONPATH="${PYTHONPATH}:${HOME}/.python_modules/lib/pythonVERSION/site-packages"
其中“ VERSION”是您使用的 Python 版本,例如“ 2.6”或“ 2.7”
如果您使用的是 Python 2.6:
export PYTHONPATH="${PYTHONPATH}:${HOME}/.python_modules/lib/python2.6/site-packages"
SSH keys
您将必须设置 SSH,以便无需密码即可访问所有测试节点。
Configuration
Configuration file
您需要配置测试应在哪些主机上运行。你应该放
您的配置文件在“~/ .hive_ptest.conf”中。配置文件格式为
记录在与测试脚本一起分发的README文件中。
用于加速单元测试的配置参数
如果使用 Hive 配置参数,单元测试将运行得更快
hive.exec.submit.local.task.via.child设置为 true。有关详情,请参见HIVE-7271。
Usage
您可以通过运行以下命令查看所有可能的选项:
hive_repo/testutils/ptest/hivetest.py --help
测试差异版本
如果您想测试Phabricator的补丁,您可以
可以使用以下命令:
hive_repo/testutils/ptest/hivetest.py --test --revision D123
从文件系统测试补丁
您也可以从本地文件系统测试补丁。
hive_repo/testutils/ptest/hivetest.py --test --patch /path/to/my.patch
您可以根据需要提供多个补丁。它们将应用于
它们在命令行上的显示 Sequences 相同。
hive_repo/testutils/ptest/hivetest.py --test --patch first.patch second.patch
多次测试
多个用户可以使用同一配置文件运行并行测试,而无需
问题。如果您想以一个用户的身份同时运行不同的测试实例,您将
必须导出“ HIVE_PTEST_SUFFIX”环境变量并将其设置为一些
每个实例的唯一字符串。
README文件
与测试脚本一起分发,解释了此变量如何影响路径
在您的配置文件中定义。
HIVE_PTEST_SUFFIX=first_run hive_repo/testutils/ptest/hivetest.py --test &
HIVE_PTEST_SUFFIX=second_run hive_repo/testutils/ptest/hivetest.py --test &
Testing report
这里的路径假定您使用“~/ hivetests”作为“ master_base_path”;如果
您正在使用其他路径,请相应地更新路径。
测试运行结束后,将在以下位置生成测试报告:
“~/ hivetests/report/TIMESTAMP”;主文件名为“ report.html”。以来
JUnit 属性列表占用大量空间,默认情况下,它们是在
分开的“ .html”文件,并与“ report.html”链接。如果要生成
只需一个文件(例如,便于复制),您可以使用“ --one-file-report”
切换,属性将嵌入在“ report.html”中。请记住
而不是获得约 30 万个文件,您将获得一个可能超过 10MB 的文件。
如果要使用固定的报告名称而不是时间戳,则可以使用
“ --report-name”开关,例如:
hive_repo/testuitls/ptest/hivetest.py --test --revision D123 --report-name D123
这将在“~/ hivetests/report/D123”中生成报告。如果已经有一个
具有该名称的报告将被删除。
Tests output
将复制 TestCliDriver 和 TestNegativeCliDriver 运行中的“ .q.out”文件
到“~/ hivetests/report/TIMESTAMP/out”,因此它们在一个地方可用。
Hive logs
来自所有测试运行的“ hive.log”文件将被复制到
“~/ hivetests/report/TIMESTAMP/logs”,并将其重命名为
"hive-HOST-TESTCASE.log".
Possible issues
Minimr 测试(TestMinimrCliDriver,TestNegativeMinimrCliDriver 和
TestHBaseMinimrCliDriver)不能在一台计算机上同时运行。剧本
确保没有安排它们在同一时间在同一主机上同时运行
一次测试运行,但运行多个脚本(多个用户或一个用户测试
多个补丁)可能会碰撞并导致该测试失败
cases.