blob: f7d6d18a6e3b806eddbcb3a34110ead3a24e2ea1 [file] [log] [blame] [view]
# About
Hive-ptest is a parallel testing framework for executing the Hive unit tests. If you'd like
to dive into the code, start with org.apache.hive.ptest.RunTests.
# Building
Approvals is required for testing and must be manually installed:
http://sourceforge.net/projects/approvaltests/files/ApprovalTests.Java/
Example:
cd /tmp
wget http://people.apache.org/~brock/ApprovalTests.013/ApprovalTests.jar
mvn install:install-file -Dfile=/tmp/ApprovalTests.jar -DgroupId=approvaltests \
-DartifactId=ApprovalsJava -Dversion=013 -Dpackaging=jar
# Building
mvn clean package
# Sizing
We utilize 8 servers for this process and trunk builds complete in 1 hour. Each slave
has 8 physical cores with hyperthreading enabled and 48GB of ram. Each slave is allowed
8 test "threads". I had used more than 8 threads but Zookeeper timed out randomly.
# Configuring
* Create a user such as hiveptest on the master and all slaves.
* Setup passwordless ssh form the master to all slaves.
* Ensure that SSH connection attempts won't fail.
On all slaves add the following to /etc/ssh/sshd_config:
MaxAuthTries 100
MaxSessions 100
MaxStartups 100
# Install git, svn, make, patch, java, ant, and maven
Recent version of git, svn, make, patch, java, ant and maven should be installed. Additionally
environment variables such as MAVEN_OPTS and ANT_OPTS should be configured with large leap sizes:
$ for item in java maven ant; do echo $item; cat /etc/profile.d/${item}.sh;done
java
export JAVA_HOME=$(readlink -f /usr/java/default)
export PATH=$JAVA_HOME/bin:$PATH
maven
export M2_HOME=$(readlink -f /usr/local/apache-maven)
export PATH=$M2_HOME/bin:$PATH
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=256M"
ant
export ANT_HOME=$(readlink -f /usr/local/apache-ant)
export PATH=$ANT_HOME/bin:$PATH
export ANT_OPTS="-Xmx1g -XX:MaxPermSize=256m"
# Ensure umask is setup to 0022
$ cat /etc/profile.d/umask.sh
umask 0022
# On all slaves ensure that nproc and nofile are set to high values
# rm /etc/security/limits.d/90-nproc.conf
# cat /etc/security/limits.d/nproc.conf
* soft nproc 32768
* hard nproc 65536
root soft nproc 32768
root hard nproc 65536
# cat /etc/security/limits.d/nofile.conf
* soft nofile 32768
* hard nofile 32768
root soft nofile 32768
root hard nofile 32768
# If using the Cloud Host Provider:
Ensure the user running the tests has strict host/key checking disabled:
$ cat ~/.ssh/config
StrictHostKeyChecking no
ConnectTimeout 20
ServerAliveInterval 1
# Configure properties file
See conf/example-apache-trunk.properties
# Execute
mvn dependency:copy-dependencies
java -Xms4g -Xmx4g -cp "target/hive-ptest-1.0-classes.jar:target/dependency/*" org.apache.hive.ptest.execution.PTest --properties apache-trunk.properties