improve get schemas test

This commit is contained in:
Kent Yao 2020-09-22 17:43:41 +08:00
parent 269f0ad7cc
commit efa78a92f1
2 changed files with 31 additions and 13 deletions

View File

@ -39,5 +39,5 @@ jobs:
- name: Build with Maven
run: |
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN"
mvn --no-transfer-progress clean install -pl :kyuubi-common,:kyuubi-ha,:kyuubi-main,:kyuubi-spark-sql-engine,:kyuubi-codecov -Dmaven.javadoc.skip=true -B -V
mvn --no-transfer-progress clean install -pl :kyuubi-common,:kyuubi-ha,:kyuubi-main,:kyuubi-download,:kyuubi-assembly,:kyuubi-spark-sql-engine,:kyuubi-codecov -Dmaven.javadoc.skip=true -B -V
bash <(curl -s https://codecov.io/bash)

View File

@ -17,7 +17,7 @@
package org.apache.kyuubi.engine.spark.operation
import java.sql.{Date, SQLException, Timestamp}
import java.sql.{Date, ResultSet, SQLException, Timestamp}
import scala.collection.JavaConverters._
@ -46,21 +46,39 @@ class SparkOperationSuite extends WithSparkSQLEngine {
}
test("get schemas") {
withDatabases("db1", "db2") { statement =>
statement.execute("CREATE DATABASE IF NOT EXISTS db1")
statement.execute("CREATE DATABASE IF NOT EXISTS db2")
def checkResult(rs: ResultSet, dbNames: Seq[String]): Unit = {
val expected = dbNames.iterator
while(rs.next() || expected.hasNext) {
assert(rs.getString("TABLE_SCHEM") === expected.next)
assert(rs.getString("TABLE_CATALOG").isEmpty)
}
// Make sure there are no more elements
assert(!rs.next())
assert(!expected.hasNext, "All expected schemas should be visited")
}
val dbs = Seq("db1", "db2", "db33", "db44")
val dbDflts = Seq("default", "global_temp")
withDatabases(dbs: _*) { statement =>
dbs.foreach(db => statement.execute(s"CREATE DATABASE IF NOT EXISTS $db"))
val metaData = statement.getConnection.getMetaData
Seq("", "%", null, ".*", "db#") foreach { pattern =>
val resultSet = metaData.getSchemas(null, pattern)
val expected =
Seq("db1", "db2", "default", spark.sharedState.globalTempViewManager.database).iterator
while(resultSet.next()) {
assert(resultSet.getString(TABLE_SCHEM) === expected.next)
assert(resultSet.getString(TABLE_CATALOG).isEmpty)
}
Seq("", "%", null, ".*", "_*", "_%", ".%") foreach { pattern =>
checkResult(metaData.getSchemas(null, pattern), dbs ++ dbDflts)
}
Seq("db%", "db*") foreach { pattern =>
checkResult(metaData.getSchemas(null, pattern), dbs)
}
Seq("db_", "db.") foreach { pattern =>
checkResult(metaData.getSchemas(null, pattern), dbs.take(2))
}
checkResult(metaData.getSchemas(null, "db1"), Seq("db1"))
checkResult(metaData.getSchemas(null, "db_not_exist"), Seq.empty)
val e = intercept[HiveSQLException](metaData.getSchemas(null, "*"))
assert(e.getCause.getMessage === "org.apache.kyuubi.KyuubiSQLException:" +
"Error operating GET_SCHEMAS: Dangling meta character '*' near index 0\n*\n^")