apache-hive / 3.1.1 / reference / Unit_Test_Parallel_Execution.html

单元测试并行执行

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.