diff --git testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ExecutionPhase.java testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ExecutionPhase.java index 8a64499..2015187 100644 --- testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ExecutionPhase.java +++ testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ExecutionPhase.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -28,7 +29,9 @@ import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; +import com.google.common.base.Joiner; import org.apache.hive.ptest.execution.conf.Host; +import org.apache.hive.ptest.execution.conf.QFileTestBatch; import org.apache.hive.ptest.execution.conf.TestBatch; import org.apache.hive.ptest.execution.context.ExecutionContext; import org.slf4j.Logger; @@ -116,13 +119,27 @@ public void execute() throws Throwable { } JUnitReportParser parser = new JUnitReportParser(logger, batchLogDir); executedTests.addAll(parser.getAllExecutedTests()); - failedTests.addAll(parser.getAllFailedTests()); + for (String failedTest : parser.getAllFailedTests()) { + failedTests.add(failedTest + " (batchId=" + batch.getBatchId() + ")"); + } + // if the TEST*.xml was not generated or was corrupt, let someone know if (parser.getTestClassesWithReportAvailable().size() < batch.getTestClasses().size()) { Set expTestClasses = new HashSet<>(batch.getTestClasses()); expTestClasses.removeAll(parser.getTestClassesWithReportAvailable()); for (String testClass : expTestClasses) { - failedTests.add(testClass + " - did not produce a TEST-*.xml file"); + StringBuilder messageBuilder = new StringBuilder(); + messageBuilder.append(testClass).append(" - did not produce a TEST-*.xml file (likely timed out)") + .append(" (batchId=").append(batch.getBatchId()).append(")"); + if (batch instanceof QFileTestBatch) { + Collection tests = ((QFileTestBatch)batch).getTests(); + if (tests.size() != 0) { + messageBuilder.append("\n\t["); + messageBuilder.append(Joiner.on(",").join(tests)); + messageBuilder.append("]"); + } + } + failedTests.add(messageBuilder.toString()); } } } diff --git testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/QFileTestBatch.java testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/QFileTestBatch.java index 405c44b..ced83bf 100644 --- testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/QFileTestBatch.java +++ testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/QFileTestBatch.java @@ -20,11 +20,13 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import com.google.common.base.Joiner; import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; public class QFileTestBatch extends TestBatch { @@ -33,7 +35,7 @@ private final String queryFilesProperty; private final String name; private final String moduleName; - private final Set tests; + private final List tests; private final boolean isParallel; public QFileTestBatch(AtomicInteger batchIdCounter, String testCasePropertyName, String driver, @@ -43,7 +45,8 @@ public QFileTestBatch(AtomicInteger batchIdCounter, String testCasePropertyName, this.testCasePropertyName = testCasePropertyName; this.driver = driver; this.queryFilesProperty = queryFilesProperty; - this.tests = tests; + // Store as a list to have a consistent order between getTests, and the test argument generation. + this.tests = Lists.newArrayList(tests); String name = Joiner.on("-").join(getBatchId(), driver, Joiner.on("-").join( Iterators.toArray(Iterators.limit(tests.iterator(), 3), String.class))); if(tests.size() > 3) { @@ -66,6 +69,10 @@ public String getTestArguments() { Joiner.on(",").join(tests)); } + public Collection getTests() { + return Collections.unmodifiableList(tests); + } + @Override public String toString() { return "QFileTestBatch [batchId=" + getBatchId() + ", size=" + tests.size() + ", driver=" + diff --git testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestExecutionPhase.java testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestExecutionPhase.java index 558d5ae..24c811e 100644 --- testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestExecutionPhase.java +++ testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestExecutionPhase.java @@ -126,7 +126,7 @@ public void testFailingQFile() throws Throwable { Assert.assertEquals(1, sshCommandExecutor.getMatchCount()); Approvals.verify(getExecutedCommands()); Assert.assertEquals(Sets.newHashSet("SomeTest." + QFILENAME), executedTests); - Assert.assertEquals(Sets.newHashSet("SomeTest." + QFILENAME), failedTests); + Assert.assertEquals(Sets.newHashSet("SomeTest." + QFILENAME + " (batchId=1)"), failedTests); } @Test public void testPassingUnitTest() throws Throwable { @@ -147,10 +147,10 @@ public void testFailingUnitTest() throws Throwable { Assert.assertEquals(1, sshCommandExecutor.getMatchCount()); Approvals.verify(getExecutedCommands()); Assert.assertEquals(Sets.newHashSet("SomeTest." + QFILENAME), executedTests); - Assert.assertEquals(Sets.newHashSet("SomeTest." + QFILENAME), failedTests); + Assert.assertEquals(Sets.newHashSet("SomeTest." + QFILENAME + " (batchId=1)"), failedTests); } - @Test(timeout = 2000000) + @Test(timeout = 20000) public void testTimedOutUnitTest() throws Throwable { setupUnitTest(3); copyTestOutput("SomeTest-success.xml", succeededLogDir, testBatch.getName(), "TEST-TestClass-0.xml"); @@ -158,6 +158,6 @@ public void testTimedOutUnitTest() throws Throwable { getPhase().execute(); Approvals.verify(getExecutedCommands()); Assert.assertEquals(1, failedTests.size()); - Assert.assertEquals("TestClass-2 - did not produce a TEST-*.xml file", failedTests.iterator().next()); + Assert.assertEquals("TestClass-2 - did not produce a TEST-*.xml file (likely timed out) (batchId=1)", failedTests.iterator().next()); } } \ No newline at end of file diff --git testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepGit.approved.txt testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepGit.approved.txt index 29d2413..ecdd063 100644 --- testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepGit.approved.txt +++ testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepGit.approved.txt @@ -87,11 +87,11 @@ cd /some/working/dir/ if [[ "${buildTool}" == "maven" ]] then rm -rf /some/working/dir/maven/org/apache/hive - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven -X -Phadoop-2 + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven -X -Phadoop-2 if [[ -d "itests" ]] then cd itests - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven -X -Phadoop-2 + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven -X -Phadoop-2 fi elif [[ "${buildTool}" == "ant" ]] then diff --git testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepHadoop1.approved.txt testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepHadoop1.approved.txt index 361b9bb..650a5b9 100644 --- testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepHadoop1.approved.txt +++ testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepHadoop1.approved.txt @@ -99,11 +99,11 @@ cd /some/working/dir/ cd .. fi done - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs if [[ -d "itests" ]] then cd itests - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs fi elif [[ "maven" == "ant" ]] then diff --git testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepNone.approved.txt testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepNone.approved.txt index 5f494ee..4678ebd 100644 --- testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepNone.approved.txt +++ testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepNone.approved.txt @@ -87,11 +87,11 @@ cd /some/working/dir/ if [[ "ant" == "maven" ]] then rm -rf /some/working/dir/maven/org/apache/hive - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs if [[ -d "itests" ]] then cd itests - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs fi elif [[ "ant" == "ant" ]] then diff --git testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepSvn.approved.txt testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepSvn.approved.txt index 9de17af..4d428f4 100644 --- testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepSvn.approved.txt +++ testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/TestScripts.testPrepSvn.approved.txt @@ -87,11 +87,11 @@ cd /some/working/dir/ if [[ "maven" == "maven" ]] then rm -rf /some/working/dir/maven/org/apache/hive - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs if [[ -d "itests" ]] then cd itests - mvn -B clean install -DskipTests -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs + mvn -B clean install -DskipTests -T 4 -q -Dmaven.repo.local=/some/working/dir/maven $mavenArgs $mavenBuildArgs fi elif [[ "maven" == "ant" ]] then