From 1703fa5593a06cb764bc689d45a794e812f78b3b Mon Sep 17 00:00:00 2001 From: HyukjinKwon Date: Fri, 30 Aug 2019 19:19:42 +0900 Subject: [PATCH 1/3] Add a clue to make it easier to debug via Jenkins's test results --- .../apache/spark/sql/SQLQueryTestSuite.scala | 65 ++++++++++--------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestSuite.scala index 77ec5546f429..28ca0edaef87 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQueryTestSuite.scala @@ -342,39 +342,44 @@ class SQLQueryTestSuite extends QueryTest with SharedSparkSession { stringToFile(resultFile, goldenOutput) } - // Read back the golden file. - val expectedOutputs: Seq[QueryOutput] = { - val goldenOutput = fileToString(new File(testCase.resultFile)) - val segments = goldenOutput.split("-- !query.+\n") - - // each query has 3 segments, plus the header - assert(segments.size == outputs.size * 3 + 1, - s"Expected ${outputs.size * 3 + 1} blocks in result file but got ${segments.size}. " + - s"Try regenerate the result files.") - Seq.tabulate(outputs.size) { i => - QueryOutput( - sql = segments(i * 3 + 1).trim, - schema = segments(i * 3 + 2).trim, - output = segments(i * 3 + 3).replaceAll("\\s+$", "") - ) + // This is a temporary workaround for SPARK-28894. The test names are truncated after + // the last dot due to a bug in SBT. This makes easier to debug via Jenkins test result + // report. See SPARK-28894. + withClue(s"${testCase.name}${System.lineSeparator()}") { + // Read back the golden file. + val expectedOutputs: Seq[QueryOutput] = { + val goldenOutput = fileToString(new File(testCase.resultFile)) + val segments = goldenOutput.split("-- !query.+\n") + + // each query has 3 segments, plus the header + assert(segments.size == outputs.size * 3 + 1, + s"Expected ${outputs.size * 3 + 1} blocks in result file but got ${segments.size}. " + + s"Try regenerate the result files.") + Seq.tabulate(outputs.size) { i => + QueryOutput( + sql = segments(i * 3 + 1).trim, + schema = segments(i * 3 + 2).trim, + output = segments(i * 3 + 3).replaceAll("\\s+$", "") + ) + } } - } - // Compare results. - assertResult(expectedOutputs.size, s"Number of queries should be ${expectedOutputs.size}") { - outputs.size - } - - outputs.zip(expectedOutputs).zipWithIndex.foreach { case ((output, expected), i) => - assertResult(expected.sql, s"SQL query did not match for query #$i\n${expected.sql}") { - output.sql - } - assertResult(expected.schema, - s"Schema did not match for query #$i\n${expected.sql}: $output") { - output.schema + // Compare results. + assertResult(expectedOutputs.size, s"Number of queries should be ${expectedOutputs.size}") { + outputs.size } - assertResult(expected.output, s"Result did not match for query #$i\n${expected.sql}") { - output.output + + outputs.zip(expectedOutputs).zipWithIndex.foreach { case ((output, expected), i) => + assertResult(expected.sql, s"SQL query did not match for query #$i\n${expected.sql}") { + output.sql + } + assertResult(expected.schema, + s"Schema did not match for query #$i\n${expected.sql}: $output") { + output.schema + } + assertResult(expected.output, s"Result did not match for query #$i\n${expected.sql}") { + output.output + } } } } From 28e7f2fc326270b63e9d15c1f366f96742f7e282 Mon Sep 17 00:00:00 2001 From: HyukjinKwon Date: Wed, 28 Aug 2019 16:14:48 +0900 Subject: [PATCH 2/3] Make multiple tests failed --- sql/core/src/test/resources/sql-tests/results/cast.sql.out | 2 +- .../sql-tests/results/describe-table-after-alter-table.sql.out | 2 +- .../resources/sql-tests/results/pgSQL/aggregates_part1.sql.out | 2 +- .../resources/sql-tests/results/pgSQL/aggregates_part3.sql.out | 2 +- .../src/test/resources/sql-tests/results/pgSQL/boolean.sql.out | 2 +- .../src/test/resources/sql-tests/results/pgSQL/date.sql.out | 2 +- .../src/test/resources/sql-tests/results/table-aliases.sql.out | 2 +- .../sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out | 2 +- .../test/resources/sql-tests/results/udf/udf-cross-join.sql.out | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/results/cast.sql.out b/sql/core/src/test/resources/sql-tests/results/cast.sql.out index adad21f04944..daf6f8cb217c 100644 --- a/sql/core/src/test/resources/sql-tests/results/cast.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/cast.sql.out @@ -55,7 +55,7 @@ SELECT CAST('1234567890123' AS int) -- !query 6 schema struct -- !query 6 output -NULL +NULL1 -- !query 7 diff --git a/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out b/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out index 7873085da506..06957c71cf62 100644 --- a/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out @@ -60,7 +60,7 @@ Type MANAGED Provider parquet Comment modified comment Table Properties [type=parquet] -Location [not included in comparison]sql/core/spark-warehouse/table_with_comment +Location [not included in comparison]sql/core/spark-warehouse/table_with_comment1 -- !query 4 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out index 29bafb42f579..567a2462b925 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out @@ -7,7 +7,7 @@ SELECT avg(four) AS avg_1 FROM onek -- !query 0 schema struct -- !query 0 output -1.5 +1.51 -- !query 1 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out index f102383cb4d8..e1c931f4bace 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out @@ -8,7 +8,7 @@ select max(min(unique1)) from tenk1 struct<> -- !query 0 output org.apache.spark.sql.AnalysisException -It is not allowed to use an aggregate function in the argument of another aggregate function. Please use the inner aggregate function in a sub-query.; +It is not allowed to use an aggregate function 1in the argument of another aggregate function. Please use the inner aggregate function in a sub-query.; -- !query 1 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out index c7903c8a34ef..bc778e1bdc80 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out @@ -15,7 +15,7 @@ SELECT true AS true -- !query 1 schema struct -- !query 1 output -true +true1 -- !query 2 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out index cb2be6d1cd22..1d6c473b39eb 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out @@ -147,7 +147,7 @@ struct 2000-04-01 2000-04-02 2000-04-03 -2038-04-08 +2038-04-081 2039-04-09 2040-04-10 diff --git a/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out b/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out index 1a2bd5ea91cd..7d7d5969a8c0 100644 --- a/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out @@ -68,7 +68,7 @@ SELECT * FROM (SELECT 1 AS a, 1 AS b) t(col1, col2) -- !query 7 schema struct -- !query 7 output -1 1 +1 11 -- !query 8 diff --git a/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out b/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out index a2f64717d73a..59e9e7c15b55 100644 --- a/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out @@ -47,7 +47,7 @@ SELECT udf(udf(sum(b))) AS avg_431_773 FROM aggtest -- !query 5 schema struct -- !query 5 output -431.77260909229517 +431.7726090922951711 -- !query 6 diff --git a/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out b/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out index 98d3ad37a8df..61e92359ddab 100644 --- a/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out @@ -48,7 +48,7 @@ SELECT * FROM nt1 cross join nt2 where udf(nt1.k) = udf(nt2.k) struct -- !query 3 output one 1 one 1 -one 1 one 5 +one 1 one 51 two 2 two 22 From a3c73c86bba940054b3434e876411ded24b6c2b3 Mon Sep 17 00:00:00 2001 From: HyukjinKwon Date: Fri, 30 Aug 2019 22:17:44 +0900 Subject: [PATCH 3/3] Revert "Make multiple tests failed" This reverts commit 28e7f2fc326270b63e9d15c1f366f96742f7e282. --- sql/core/src/test/resources/sql-tests/results/cast.sql.out | 2 +- .../sql-tests/results/describe-table-after-alter-table.sql.out | 2 +- .../resources/sql-tests/results/pgSQL/aggregates_part1.sql.out | 2 +- .../resources/sql-tests/results/pgSQL/aggregates_part3.sql.out | 2 +- .../src/test/resources/sql-tests/results/pgSQL/boolean.sql.out | 2 +- .../src/test/resources/sql-tests/results/pgSQL/date.sql.out | 2 +- .../src/test/resources/sql-tests/results/table-aliases.sql.out | 2 +- .../sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out | 2 +- .../test/resources/sql-tests/results/udf/udf-cross-join.sql.out | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/results/cast.sql.out b/sql/core/src/test/resources/sql-tests/results/cast.sql.out index daf6f8cb217c..adad21f04944 100644 --- a/sql/core/src/test/resources/sql-tests/results/cast.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/cast.sql.out @@ -55,7 +55,7 @@ SELECT CAST('1234567890123' AS int) -- !query 6 schema struct -- !query 6 output -NULL1 +NULL -- !query 7 diff --git a/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out b/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out index 06957c71cf62..7873085da506 100644 --- a/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/describe-table-after-alter-table.sql.out @@ -60,7 +60,7 @@ Type MANAGED Provider parquet Comment modified comment Table Properties [type=parquet] -Location [not included in comparison]sql/core/spark-warehouse/table_with_comment1 +Location [not included in comparison]sql/core/spark-warehouse/table_with_comment -- !query 4 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out index 567a2462b925..29bafb42f579 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part1.sql.out @@ -7,7 +7,7 @@ SELECT avg(four) AS avg_1 FROM onek -- !query 0 schema struct -- !query 0 output -1.51 +1.5 -- !query 1 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out index e1c931f4bace..f102383cb4d8 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/aggregates_part3.sql.out @@ -8,7 +8,7 @@ select max(min(unique1)) from tenk1 struct<> -- !query 0 output org.apache.spark.sql.AnalysisException -It is not allowed to use an aggregate function 1in the argument of another aggregate function. Please use the inner aggregate function in a sub-query.; +It is not allowed to use an aggregate function in the argument of another aggregate function. Please use the inner aggregate function in a sub-query.; -- !query 1 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out index bc778e1bdc80..c7903c8a34ef 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/boolean.sql.out @@ -15,7 +15,7 @@ SELECT true AS true -- !query 1 schema struct -- !query 1 output -true1 +true -- !query 2 diff --git a/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out b/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out index 1d6c473b39eb..cb2be6d1cd22 100644 --- a/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/pgSQL/date.sql.out @@ -147,7 +147,7 @@ struct 2000-04-01 2000-04-02 2000-04-03 -2038-04-081 +2038-04-08 2039-04-09 2040-04-10 diff --git a/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out b/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out index 7d7d5969a8c0..1a2bd5ea91cd 100644 --- a/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/table-aliases.sql.out @@ -68,7 +68,7 @@ SELECT * FROM (SELECT 1 AS a, 1 AS b) t(col1, col2) -- !query 7 schema struct -- !query 7 output -1 11 +1 1 -- !query 8 diff --git a/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out b/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out index 59e9e7c15b55..a2f64717d73a 100644 --- a/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/udf/pgSQL/udf-aggregates_part1.sql.out @@ -47,7 +47,7 @@ SELECT udf(udf(sum(b))) AS avg_431_773 FROM aggtest -- !query 5 schema struct -- !query 5 output -431.7726090922951711 +431.77260909229517 -- !query 6 diff --git a/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out b/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out index 61e92359ddab..98d3ad37a8df 100644 --- a/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/udf/udf-cross-join.sql.out @@ -48,7 +48,7 @@ SELECT * FROM nt1 cross join nt2 where udf(nt1.k) = udf(nt2.k) struct -- !query 3 output one 1 one 1 -one 1 one 51 +one 1 one 5 two 2 two 22