add more test

This commit is contained in:
Kent Yao 2018-05-30 16:32:15 +08:00
parent 31847bc230
commit 19c95d25da
2 changed files with 24 additions and 2 deletions

View File

@ -22,7 +22,7 @@ import java.security.PrivilegedExceptionAction
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import scala.collection.mutable.{HashSet => MHSet} import scala.collection.mutable.{HashSet => MHSet}
import scala.concurrent.{Await, Promise, TimeoutException} import scala.concurrent.{Await, Promise}
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration.Duration import scala.concurrent.duration.Duration
import scala.util.control.NonFatal import scala.util.control.NonFatal

View File

@ -17,7 +17,8 @@
package yaooqinn.kyuubi.spark package yaooqinn.kyuubi.spark
import scala.concurrent.TimeoutException import scala.concurrent.{Promise, TimeoutException}
import scala.concurrent.ExecutionContext.Implicits.global
import org.apache.hadoop.security.UserGroupInformation import org.apache.hadoop.security.UserGroupInformation
import org.apache.spark._ import org.apache.spark._
@ -26,6 +27,7 @@ import org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException
import yaooqinn.kyuubi.KyuubiSQLException import yaooqinn.kyuubi.KyuubiSQLException
import yaooqinn.kyuubi.server.KyuubiServer import yaooqinn.kyuubi.server.KyuubiServer
import yaooqinn.kyuubi.ui.KyuubiServerMonitor
import yaooqinn.kyuubi.utils.ReflectUtils import yaooqinn.kyuubi.utils.ReflectUtils
class SparkSessionWithUGISuite extends SparkFunSuite { class SparkSessionWithUGISuite extends SparkFunSuite {
@ -68,11 +70,17 @@ class SparkSessionWithUGISuite extends SparkFunSuite {
val se = e.getSuppressed.head val se = e.getSuppressed.head
assert(se.isInstanceOf[SparkException]) assert(se.isInstanceOf[SparkException])
assert(se.getMessage.startsWith("Only one SparkContext")) assert(se.getMessage.startsWith("Only one SparkContext"))
assert(sparkSessionWithUGI.sparkSession === null)
assert(System.getProperty("SPARK_YARN_MODE") === null)
assert(SparkSessionCacheManager.get.getAndIncrease(userName1).isEmpty)
} }
test("test init failed with no such database") { test("test init failed with no such database") {
val sparkSessionWithUGI = new SparkSessionWithUGI(user, conf) val sparkSessionWithUGI = new SparkSessionWithUGI(user, conf)
intercept[NoSuchDatabaseException](sparkSessionWithUGI.init(Map("use:database" -> "fakedb"))) intercept[NoSuchDatabaseException](sparkSessionWithUGI.init(Map("use:database" -> "fakedb")))
assert(ReflectUtils.getFieldValue(sparkSessionWithUGI,
"yaooqinn$kyuubi$spark$SparkSessionWithUGI$$initialDatabase") === Some("use fakedb"))
assert(SparkSessionCacheManager.get.getAndIncrease(userName).nonEmpty)
} }
test("test init success with empty session conf") { test("test init success with empty session conf") {
@ -105,6 +113,7 @@ class SparkSessionWithUGISuite extends SparkFunSuite {
assert(sparkSessionWithUGI.sparkSession.conf.get("spark.foo") === "bar") assert(sparkSessionWithUGI.sparkSession.conf.get("spark.foo") === "bar")
assert(sparkSessionWithUGI.sparkSession.conf.get("spark.hadoop.foo") === "bar") assert(sparkSessionWithUGI.sparkSession.conf.get("spark.hadoop.foo") === "bar")
assert(!sparkSessionWithUGI.sparkSession.sparkContext.getConf.contains(KyuubiSparkUtil.KEYTAB)) assert(!sparkSessionWithUGI.sparkSession.sparkContext.getConf.contains(KyuubiSparkUtil.KEYTAB))
assert(KyuubiServerMonitor.getListener(userName1).nonEmpty)
sparkSessionWithUGI.sparkSession.stop() sparkSessionWithUGI.sparkSession.stop()
} }
@ -144,4 +153,17 @@ class SparkSessionWithUGISuite extends SparkFunSuite {
test("testIsPartiallyConstructed") { test("testIsPartiallyConstructed") {
assert(!SparkSessionWithUGI.isPartiallyConstructed(userName)) assert(!SparkSessionWithUGI.isPartiallyConstructed(userName))
} }
test("stop sparkcontext") {
val sparkSessionWithUGI = new SparkSessionWithUGI(user, conf)
sparkSessionWithUGI.init(Map.empty)
val promise = ReflectUtils.getFieldValue(sparkSessionWithUGI,
"yaooqinn$kyuubi$spark$SparkSessionWithUGI$$promisedSparkContext")
.asInstanceOf[Promise[SparkContext]]
val future = promise.future
ReflectUtils.invokeMethod(sparkSessionWithUGI, "stopContext")
future.foreach { sc =>
assert(sc.isStopped)
}
}
} }