tree: 397657f40ccabcf22d601b4f97a66cc5af12698b [path history] [tgz]
  1. conf/
  2. src/
  3. .gitignore
  4. pom.xml
  5. README.md
testutils/ptest2/README.md

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