From f4004601b00044e1d5c57e72c45b815f36feac3e Mon Sep 17 00:00:00 2001 From: Josh Rosen Date: Sun, 24 Jan 2016 11:29:27 -0800 Subject: [PATCH] [SPARK-12971] Fix Hive tests which fail in Hadoop-2.3 SBT build ErrorPositionSuite and one of the HiveComparisonTest tests have been consistently failing on the Hadoop 2.3 SBT build (but on no other builds). I believe that this is due to test isolation issues (e.g. tests sharing state via the sets of temporary tables that are registered to TestHive). This patch attempts to improve the isolation of these tests in order to address this issue. Author: Josh Rosen Closes #10884 from JoshRosen/fix-failing-hadoop-2.3-hive-tests. --- .../spark/sql/hive/ErrorPositionSuite.scala | 20 ++++++++++++++++--- .../hive/execution/HiveComparisonTest.scala | 6 +++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/ErrorPositionSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/ErrorPositionSuite.scala index 14a466cfe9486..4b6da7cd33692 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/ErrorPositionSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/ErrorPositionSuite.scala @@ -19,20 +19,34 @@ package org.apache.spark.sql.hive import scala.util.Try -import org.scalatest.BeforeAndAfter +import org.scalatest.BeforeAndAfterEach import org.apache.spark.sql.{AnalysisException, QueryTest} import org.apache.spark.sql.catalyst.parser.ParseDriver import org.apache.spark.sql.catalyst.util.quietly import org.apache.spark.sql.hive.test.TestHiveSingleton -class ErrorPositionSuite extends QueryTest with TestHiveSingleton with BeforeAndAfter { +class ErrorPositionSuite extends QueryTest with TestHiveSingleton with BeforeAndAfterEach { import hiveContext.implicits._ - before { + override protected def beforeEach(): Unit = { + super.beforeEach() + if (sqlContext.tableNames().contains("src")) { + sqlContext.dropTempTable("src") + } + Seq((1, "")).toDF("key", "value").registerTempTable("src") Seq((1, 1, 1)).toDF("a", "a", "b").registerTempTable("dupAttributes") } + override protected def afterEach(): Unit = { + try { + sqlContext.dropTempTable("src") + sqlContext.dropTempTable("dupAttributes") + } finally { + super.afterEach() + } + } + positionTest("ambiguous attribute reference 1", "SELECT a from dupAttributes", "a") diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala index 2e0a8698e6ffe..207bb814f0a27 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala @@ -150,7 +150,11 @@ abstract class HiveComparisonTest """.stripMargin }) - super.afterAll() + try { + TestHive.reset() + } finally { + super.afterAll() + } } protected def prepareAnswer(