diff --git a/kyuubi-server/src/test/scala/org/apache/kyuubi/operation/KyuubiOperationPerUserSuite.scala b/kyuubi-server/src/test/scala/org/apache/kyuubi/operation/KyuubiOperationPerUserSuite.scala index d2b270778..32aa966be 100644 --- a/kyuubi-server/src/test/scala/org/apache/kyuubi/operation/KyuubiOperationPerUserSuite.scala +++ b/kyuubi-server/src/test/scala/org/apache/kyuubi/operation/KyuubiOperationPerUserSuite.scala @@ -17,6 +17,8 @@ package org.apache.kyuubi.operation +import org.scalatest.time.SpanSugar._ + import org.apache.kyuubi.WithKyuubiServer import org.apache.kyuubi.config.KyuubiConf @@ -27,4 +29,30 @@ class KyuubiOperationPerUserSuite extends WithKyuubiServer with JDBCTests { override protected val conf: KyuubiConf = { KyuubiConf().set(KyuubiConf.ENGINE_SHARE_LEVEL, "user") } + + test("ensure two connections in user mode share the same engine") { + var r1: String = null + var r2: String = null + new Thread { + override def run(): Unit = withJdbcStatement() { statement => + val res = statement.executeQuery("set spark.app.name") + assert(res.next()) + r1 = res.getString("value") + } + }.start() + + new Thread { + override def run(): Unit = withJdbcStatement() { statement => + val res = statement.executeQuery("set spark.app.name") + assert(res.next()) + r2 = res.getString("value") + } + }.start() + + eventually(timeout(120.seconds), interval(100.milliseconds)) { + assert(r1 != null && r2 != null) + } + + assert(r1 === r2) + } }