From d4e50d6e92c24b98f4d671ff7d1cc38d58e60f80 Mon Sep 17 00:00:00 2001 From: beliefer Date: Fri, 1 May 2020 19:31:48 +0800 Subject: [PATCH 1/3] Improve ExpressionsSchemaSuite --- .../apache/spark/sql/ExpressionsSchemaSuite.scala | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala index dd72473f0ea6c..722ed1852abe2 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala @@ -156,14 +156,16 @@ class ExpressionsSchemaSuite extends QueryTest with SharedSparkSession { stringToFile(resultFile, goldenOutput) } + val outputSize = outputs.size val expectedOutputs: Seq[QueryOutput] = { - val goldenOutput = fileToString(resultFile) - val lines = goldenOutput.split("\n") + val expectedGoldenOutput = fileToString(resultFile) + val lines = expectedGoldenOutput.split("\n") + val expectedSize = lines.size // The header of golden file has one line, plus four lines of the summary and three // lines of the header of schema table. - assert(lines.size == outputs.size + 8, - s"Expected ${outputs.size + 8} blocks in result file but got ${lines.size}. " + + assert(expectedSize == outputSize + 8, + s"Expected $outputSize blocks in result file but got $outputSize. " + s"Try regenerate the result files.") Seq.tabulate(outputs.size) { i => @@ -177,7 +179,8 @@ class ExpressionsSchemaSuite extends QueryTest with SharedSparkSession { } // Compare results. - assert(expectedOutputs.size == outputs.size, s"Number of queries not equals") + assert(expectedOutputs.size == outputSize, + "The number of queries not equals the number of expected queries.") outputs.zip(expectedOutputs).foreach { case (output, expected) => assert(expected.sql == output.sql, "SQL query did not match") From bf7f621552a1aea0687616d023982a8cfdd66816 Mon Sep 17 00:00:00 2001 From: beliefer Date: Fri, 1 May 2020 20:42:09 +0800 Subject: [PATCH 2/3] Fix --- .../scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala index 722ed1852abe2..e31c693bf5197 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala @@ -165,7 +165,7 @@ class ExpressionsSchemaSuite extends QueryTest with SharedSparkSession { // The header of golden file has one line, plus four lines of the summary and three // lines of the header of schema table. assert(expectedSize == outputSize + 8, - s"Expected $outputSize blocks in result file but got $outputSize. " + + s"Expected $expectedSize blocks in result file but got $outputSize. " + s"Try regenerate the result files.") Seq.tabulate(outputs.size) { i => From 951bf24a0d52ce0b84410636b7caeba136c4bf75 Mon Sep 17 00:00:00 2001 From: beliefer Date: Mon, 4 May 2020 12:28:34 +0800 Subject: [PATCH 3/3] Optimize code --- .../spark/sql/ExpressionsSchemaSuite.scala | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala index e31c693bf5197..6d6cbf7508d1b 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/ExpressionsSchemaSuite.scala @@ -136,19 +136,19 @@ class ExpressionsSchemaSuite extends QueryTest with SharedSparkSession { } } + val header = Seq( + s"", + "## Summary", + s" - Number of queries: ${outputs.size}", + s" - Number of expressions that missing example: ${missingExamples.size}", + s" - Expressions missing examples: ${missingExamples.mkString(",")}", + "## Schema of Built-in Functions", + "| Class name | Function name or alias | Query example | Output schema |", + "| ---------- | ---------------------- | ------------- | ------------- |" + ) + if (regenerateGoldenFiles) { - val missingExampleStr = missingExamples.mkString(",") - val goldenOutput = { - s"\n" + - "## Summary\n" + - s" - Number of queries: ${outputs.size}\n" + - s" - Number of expressions that missing example: ${missingExamples.size}\n" + - s" - Expressions missing examples: $missingExampleStr\n" + - "## Schema of Built-in Functions\n" + - "| Class name | Function name or alias | Query example | Output schema |\n" + - "| ---------- | ---------------------- | ------------- | ------------- |\n" + - outputBuffer.mkString("\n") - } + val goldenOutput = (header ++ outputBuffer).mkString("\n") val parent = resultFile.getParentFile if (!parent.exists()) { assert(parent.mkdirs(), "Could not create directory: " + parent) @@ -157,19 +157,18 @@ class ExpressionsSchemaSuite extends QueryTest with SharedSparkSession { } val outputSize = outputs.size + val headerSize = header.size val expectedOutputs: Seq[QueryOutput] = { val expectedGoldenOutput = fileToString(resultFile) val lines = expectedGoldenOutput.split("\n") val expectedSize = lines.size - // The header of golden file has one line, plus four lines of the summary and three - // lines of the header of schema table. - assert(expectedSize == outputSize + 8, - s"Expected $expectedSize blocks in result file but got $outputSize. " + - s"Try regenerate the result files.") + assert(expectedSize == outputSize + headerSize, + s"Expected $expectedSize blocks in result file but got " + + s"${outputSize + headerSize}. Try regenerate the result files.") - Seq.tabulate(outputs.size) { i => - val segments = lines(i + 8).split('|') + Seq.tabulate(outputSize) { i => + val segments = lines(i + headerSize).split('|') QueryOutput( className = segments(1).trim, funcName = segments(2).trim,