diff --git a/client-http/src/test/scala/org/apache/livy/client/http/HttpClientSpec.scala b/client-http/src/test/scala/org/apache/livy/client/http/HttpClientSpec.scala
index df0cea5f9..54ab56419 100644
--- a/client-http/src/test/scala/org/apache/livy/client/http/HttpClientSpec.scala
+++ b/client-http/src/test/scala/org/apache/livy/client/http/HttpClientSpec.scala
@@ -30,7 +30,8 @@ import scala.concurrent.{ExecutionContext, Future}
import org.mockito.ArgumentCaptor
import org.mockito.Matchers.{eq => meq, _}
import org.mockito.Mockito._
-import org.scalatest.{BeforeAndAfterAll, FunSpecLike}
+import org.scalatest.BeforeAndAfterAll
+import org.scalatest.funspec.AnyFunSpecLike
import org.scalatra.LifeCycle
import org.scalatra.servlet.ScalatraListener
@@ -49,7 +50,7 @@ import org.apache.livy.utils.AppInfo
* module, which implements the client session backend. The client servlet has some functionality
* overridden to avoid creating sub-processes for each seession.
*/
-class HttpClientSpec extends FunSpecLike with BeforeAndAfterAll with LivyBaseUnitTestSuite {
+class HttpClientSpec extends AnyFunSpecLike with BeforeAndAfterAll with LivyBaseUnitTestSuite {
import HttpClientSpec._
diff --git a/client-http/src/test/scala/org/apache/livy/client/http/LivyConnectionSpec.scala b/client-http/src/test/scala/org/apache/livy/client/http/LivyConnectionSpec.scala
index 5fda61065..cfa62d755 100644
--- a/client-http/src/test/scala/org/apache/livy/client/http/LivyConnectionSpec.scala
+++ b/client-http/src/test/scala/org/apache/livy/client/http/LivyConnectionSpec.scala
@@ -25,15 +25,16 @@ import org.eclipse.jetty.security._
import org.eclipse.jetty.security.UserStore
import org.eclipse.jetty.security.authentication.BasicAuthenticator
import org.eclipse.jetty.util.security._
-import org.scalatest.{BeforeAndAfterAll, FunSpecLike}
-import org.scalatest.Matchers._
+import org.scalatest.BeforeAndAfterAll
+import org.scalatest.funspec.AnyFunSpecLike
+import org.scalatest.matchers.should.Matchers._
import org.scalatra.servlet.ScalatraListener
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
import org.apache.livy.client.common.TestUtils
import org.apache.livy.server.WebServer
-class LivyConnectionSpec extends FunSpecLike with BeforeAndAfterAll with LivyBaseUnitTestSuite {
+class LivyConnectionSpec extends AnyFunSpecLike with BeforeAndAfterAll with LivyBaseUnitTestSuite {
describe("LivyConnection") {
def basicAuth(username: String, password: String, realm: String): SecurityHandler = {
val roles = Array("user")
diff --git a/core/src/test/scala/org/apache/livy/EOLUtilsSuite.scala b/core/src/test/scala/org/apache/livy/EOLUtilsSuite.scala
index 8ee73a117..3d6bd99ec 100644
--- a/core/src/test/scala/org/apache/livy/EOLUtilsSuite.scala
+++ b/core/src/test/scala/org/apache/livy/EOLUtilsSuite.scala
@@ -17,9 +17,9 @@
package org.apache.livy
-import org.scalatest.FunSuite
+import org.scalatest.funsuite.AnyFunSuite
-class EOLUtilsSuite extends FunSuite with LivyBaseUnitTestSuite {
+class EOLUtilsSuite extends AnyFunSuite with LivyBaseUnitTestSuite {
test("check EOL") {
val s1 = "test\r\ntest"
diff --git a/integration-test/src/main/scala/org/apache/livy/test/framework/BaseIntegrationTestSuite.scala b/integration-test/src/main/scala/org/apache/livy/test/framework/BaseIntegrationTestSuite.scala
index d238f1e5a..8e75515dc 100644
--- a/integration-test/src/main/scala/org/apache/livy/test/framework/BaseIntegrationTestSuite.scala
+++ b/integration-test/src/main/scala/org/apache/livy/test/framework/BaseIntegrationTestSuite.scala
@@ -38,9 +38,11 @@ import org.apache.http.client.params.AuthPolicy
import org.apache.http.impl.auth.BasicSchemeFactory
import org.apache.http.impl.auth.SPNegoSchemeFactory
import org.apache.http.impl.client.DefaultHttpClient
-import org.scalatest._
+import org.scalatest.BeforeAndAfterAll
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
-abstract class BaseIntegrationTestSuite extends FunSuite with Matchers with BeforeAndAfterAll {
+abstract class BaseIntegrationTestSuite extends AnyFunSuite with Matchers with BeforeAndAfterAll {
import scala.concurrent.ExecutionContext.Implicits.global
var cluster: Cluster = _
diff --git a/pom.xml b/pom.xml
index 218b43153..738c166ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,12 +98,21 @@
0.9.3
2.26.0
4.0.2
- 3.1.0
+
+ 4.2.19
1.10.19
4.1.86.Final
UTF-8
- 3.0.8
- 2.6.5
+
+ 3.2.9
+
+ 3.2.9.0
+ 2.8.4
1.8
12.1.9
@@ -263,6 +272,15 @@
test
+
+
+ org.scalatestplus
+ mockito-3-4_${scala.binary.version}
+ ${scalatestplus.mockito.version}
+ test
+
+
org.scalatra
scalatra-scalatest_${scala.binary.version}
diff --git a/repl/scala-2.12/src/test/scala/org/apache/livy/repl/SparkInterpreterSpec.scala b/repl/scala-2.12/src/test/scala/org/apache/livy/repl/SparkInterpreterSpec.scala
index d92203473..fbad108f4 100644
--- a/repl/scala-2.12/src/test/scala/org/apache/livy/repl/SparkInterpreterSpec.scala
+++ b/repl/scala-2.12/src/test/scala/org/apache/livy/repl/SparkInterpreterSpec.scala
@@ -17,11 +17,12 @@
package org.apache.livy.repl
-import org.scalatest._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.LivyBaseUnitTestSuite
-class SparkInterpreterSpec extends FunSpec with Matchers with LivyBaseUnitTestSuite {
+class SparkInterpreterSpec extends AnyFunSpec with Matchers with LivyBaseUnitTestSuite {
describe("SparkInterpreter") {
val interpreter = new SparkInterpreter(null)
diff --git a/repl/src/test/scala/org/apache/livy/repl/BaseInterpreterSpec.scala b/repl/src/test/scala/org/apache/livy/repl/BaseInterpreterSpec.scala
index b3d4d5ab6..a4345fa9f 100644
--- a/repl/src/test/scala/org/apache/livy/repl/BaseInterpreterSpec.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/BaseInterpreterSpec.scala
@@ -17,11 +17,12 @@
package org.apache.livy.repl
-import org.scalatest.{FlatSpec, Matchers}
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.LivyBaseUnitTestSuite
-abstract class BaseInterpreterSpec extends FlatSpec with Matchers with LivyBaseUnitTestSuite {
+abstract class BaseInterpreterSpec extends AnyFlatSpec with Matchers with LivyBaseUnitTestSuite {
def createInterpreter(): Interpreter
diff --git a/repl/src/test/scala/org/apache/livy/repl/BaseSessionSpec.scala b/repl/src/test/scala/org/apache/livy/repl/BaseSessionSpec.scala
index 5122310cb..4d052006f 100644
--- a/repl/src/test/scala/org/apache/livy/repl/BaseSessionSpec.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/BaseSessionSpec.scala
@@ -26,8 +26,9 @@ import scala.language.postfixOps
import org.apache.spark.SparkConf
import org.json4s._
-import org.scalatest.{FlatSpec, Matchers}
import org.scalatest.concurrent.Eventually._
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.LivyBaseUnitTestSuite
import org.apache.livy.client.common.TestUtils
@@ -36,7 +37,7 @@ import org.apache.livy.rsc.driver.{Statement, StatementState}
import org.apache.livy.sessions._
abstract class BaseSessionSpec(kind: Kind)
- extends FlatSpec with Matchers with LivyBaseUnitTestSuite {
+ extends AnyFlatSpec with Matchers with LivyBaseUnitTestSuite {
implicit val formats = DefaultFormats
diff --git a/repl/src/test/scala/org/apache/livy/repl/PythonInterpreterSpec.scala b/repl/src/test/scala/org/apache/livy/repl/PythonInterpreterSpec.scala
index dc8083f9d..61e27ad6f 100644
--- a/repl/src/test/scala/org/apache/livy/repl/PythonInterpreterSpec.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/PythonInterpreterSpec.scala
@@ -20,8 +20,10 @@ package org.apache.livy.repl
import org.apache.spark.SparkConf
import org.json4s.{DefaultFormats, JNull, JValue}
import org.json4s.JsonDSL._
-import org.scalatest._
+import org.scalatest.{BeforeAndAfterAll, Outcome}
import org.scalatest.Inside.inside
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.rsc.driver.SparkEntries
import org.apache.livy.sessions._
diff --git a/repl/src/test/scala/org/apache/livy/repl/PythonSessionSpec.scala b/repl/src/test/scala/org/apache/livy/repl/PythonSessionSpec.scala
index 170d3c723..f42a13c37 100644
--- a/repl/src/test/scala/org/apache/livy/repl/PythonSessionSpec.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/PythonSessionSpec.scala
@@ -19,7 +19,9 @@ package org.apache.livy.repl
import org.json4s.Extraction
import org.json4s.jackson.JsonMethods.parse
-import org.scalatest._
+import org.scalatest.{BeforeAndAfterAll, Outcome}
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.sessions._
diff --git a/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala b/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
index 836ae5235..66947d6af 100644
--- a/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
@@ -26,15 +26,15 @@ import scala.language.postfixOps
import org.apache.spark.launcher.SparkLauncher
import org.json4s._
import org.json4s.jackson.JsonMethods._
-import org.scalatest.FunSuite
import org.scalatest.concurrent.Eventually._
+import org.scalatest.funsuite.AnyFunSuite
import org.apache.livy._
import org.apache.livy.client.common.TestUtils
import org.apache.livy.rsc.{PingJob, RSCClient, RSCConf}
import org.apache.livy.sessions.Spark
-class ReplDriverSuite extends FunSuite with LivyBaseUnitTestSuite {
+class ReplDriverSuite extends AnyFunSuite with LivyBaseUnitTestSuite {
private implicit val formats = DefaultFormats
diff --git a/repl/src/test/scala/org/apache/livy/repl/SessionSpec.scala b/repl/src/test/scala/org/apache/livy/repl/SessionSpec.scala
index 34019071d..af47e0b63 100644
--- a/repl/src/test/scala/org/apache/livy/repl/SessionSpec.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/SessionSpec.scala
@@ -21,9 +21,10 @@ import java.util.Properties
import java.util.concurrent.{ConcurrentLinkedQueue, CountDownLatch, TimeUnit}
import org.apache.spark.SparkConf
-import org.scalatest.{BeforeAndAfter, FunSpec}
-import org.scalatest.Matchers._
+import org.scalatest.BeforeAndAfter
import org.scalatest.concurrent.Eventually
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers._
import org.scalatest.time._
import org.apache.livy.LivyBaseUnitTestSuite
@@ -31,7 +32,8 @@ import org.apache.livy.repl.Interpreter.ExecuteResponse
import org.apache.livy.rsc.RSCConf
import org.apache.livy.sessions._
-class SessionSpec extends FunSpec with Eventually with LivyBaseUnitTestSuite with BeforeAndAfter {
+class SessionSpec extends AnyFunSpec with Eventually
+ with LivyBaseUnitTestSuite with BeforeAndAfter {
override implicit val patienceConfig =
PatienceConfig(timeout = scaled(Span(30, Seconds)), interval = scaled(Span(100, Millis)))
diff --git a/repl/src/test/scala/org/apache/livy/repl/SparkRInterpreterSpec.scala b/repl/src/test/scala/org/apache/livy/repl/SparkRInterpreterSpec.scala
index 49763960a..dd69a6869 100644
--- a/repl/src/test/scala/org/apache/livy/repl/SparkRInterpreterSpec.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/SparkRInterpreterSpec.scala
@@ -20,7 +20,9 @@ package org.apache.livy.repl
import org.apache.spark.SparkConf
import org.json4s.DefaultFormats
import org.json4s.JsonDSL._
-import org.scalatest._
+import org.scalatest.{BeforeAndAfterAll, Outcome}
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.rsc.driver.SparkEntries
diff --git a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
index 96458bf25..fb751c063 100644
--- a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
+++ b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
@@ -33,14 +33,15 @@ import scala.util.{Failure, Success}
import org.apache.spark.SparkFiles
import org.apache.spark.launcher.SparkLauncher
-import org.scalatest.{BeforeAndAfter, FunSuite}
+import org.scalatest.BeforeAndAfter
import org.scalatest.concurrent.ScalaFutures
+import org.scalatest.funsuite.AnyFunSuite
import org.apache.livy.LivyBaseUnitTestSuite
import org.apache.livy.client.common.TestUtils
import org.apache.livy.rsc.RSCConf.Entry._
-class ScalaClientTest extends FunSuite
+class ScalaClientTest extends AnyFunSuite
with ScalaFutures
with BeforeAndAfter
with LivyBaseUnitTestSuite {
diff --git a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTestUtils.scala b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTestUtils.scala
index 458ff3bfb..7d406f3a6 100644
--- a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTestUtils.scala
+++ b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTestUtils.scala
@@ -22,12 +22,13 @@ import java.util.concurrent.{CountDownLatch, TimeUnit}
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
+import scala.language.postfixOps
-import org.scalatest.FunSuite
+import org.scalatest.funsuite.AnyFunSuite
import org.apache.livy.LivyBaseUnitTestSuite
-object ScalaClientTestUtils extends FunSuite with LivyBaseUnitTestSuite {
+object ScalaClientTestUtils extends AnyFunSuite with LivyBaseUnitTestSuite {
val Timeout = 40
diff --git a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaJobHandleTest.scala b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaJobHandleTest.scala
index 3f5bdc64e..732f6af76 100644
--- a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaJobHandleTest.scala
+++ b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaJobHandleTest.scala
@@ -26,13 +26,14 @@ import scala.util.{Failure, Success}
import org.mockito.Matchers._
import org.mockito.Mockito._
-import org.scalatest.{BeforeAndAfter, FunSuite}
+import org.scalatest.BeforeAndAfter
import org.scalatest.concurrent.ScalaFutures
+import org.scalatest.funsuite.AnyFunSuite
import org.apache.livy.{JobHandle, LivyBaseUnitTestSuite}
import org.apache.livy.JobHandle.{Listener, State}
-class ScalaJobHandleTest extends FunSuite
+class ScalaJobHandleTest extends AnyFunSuite
with ScalaFutures
with BeforeAndAfter
with LivyBaseUnitTestSuite {
diff --git a/server/src/test/scala/org/apache/livy/server/AccessManagerSuite.scala b/server/src/test/scala/org/apache/livy/server/AccessManagerSuite.scala
index 71c500f08..2fadf6755 100644
--- a/server/src/test/scala/org/apache/livy/server/AccessManagerSuite.scala
+++ b/server/src/test/scala/org/apache/livy/server/AccessManagerSuite.scala
@@ -17,11 +17,12 @@
package org.apache.livy.server
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
-class AccessManagerSuite extends FunSuite with Matchers with LivyBaseUnitTestSuite {
+class AccessManagerSuite extends AnyFunSuite with Matchers with LivyBaseUnitTestSuite {
import LivyConf._
private val viewUsers = Seq("user1", "user2", "user3")
diff --git a/server/src/test/scala/org/apache/livy/server/ApiVersioningSupportSpec.scala b/server/src/test/scala/org/apache/livy/server/ApiVersioningSupportSpec.scala
index 0f50ced08..e38c19b1c 100644
--- a/server/src/test/scala/org/apache/livy/server/ApiVersioningSupportSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/ApiVersioningSupportSpec.scala
@@ -19,13 +19,14 @@ package org.apache.livy.server
import javax.servlet.http.HttpServletResponse
-import org.scalatest.FunSpecLike
+import org.scalatest.funspec.AnyFunSpecLike
import org.scalatra.ScalatraServlet
import org.scalatra.test.scalatest.ScalatraSuite
import org.apache.livy.LivyBaseUnitTestSuite
-class ApiVersioningSupportSpec extends ScalatraSuite with FunSpecLike with LivyBaseUnitTestSuite {
+class ApiVersioningSupportSpec extends ScalatraSuite with AnyFunSpecLike
+ with LivyBaseUnitTestSuite {
val LatestVersionOutput = "latest"
object FakeApiVersions extends Enumeration {
diff --git a/server/src/test/scala/org/apache/livy/server/BaseJsonServletSpec.scala b/server/src/test/scala/org/apache/livy/server/BaseJsonServletSpec.scala
index a96ae2b91..4c8f4fa72 100644
--- a/server/src/test/scala/org/apache/livy/server/BaseJsonServletSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/BaseJsonServletSpec.scala
@@ -23,7 +23,7 @@ import javax.servlet.http.HttpServletResponse._
import scala.reflect.ClassTag
import com.fasterxml.jackson.databind.ObjectMapper
-import org.scalatest.FunSpecLike
+import org.scalatest.funspec.AnyFunSpecLike
import org.scalatra.test.scalatest.ScalatraSuite
import org.apache.livy.LivyBaseUnitTestSuite
@@ -38,7 +38,7 @@ import org.apache.livy.LivyBaseUnitTestSuite
* `Unit`, and the `response` object should be checked directly.
*/
abstract class BaseJsonServletSpec extends ScalatraSuite
- with FunSpecLike with LivyBaseUnitTestSuite {
+ with AnyFunSpecLike with LivyBaseUnitTestSuite {
protected val mapper = new ObjectMapper()
.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule)
diff --git a/server/src/test/scala/org/apache/livy/server/SecurityHeadersFilterSpec.scala b/server/src/test/scala/org/apache/livy/server/SecurityHeadersFilterSpec.scala
index 03ff62397..6fbce33c8 100644
--- a/server/src/test/scala/org/apache/livy/server/SecurityHeadersFilterSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/SecurityHeadersFilterSpec.scala
@@ -22,12 +22,13 @@ import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.mockito.ArgumentCaptor
import org.mockito.Mockito.{atLeastOnce, verify}
-import org.scalatest.{FunSpec, Matchers}
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
-class SecurityHeadersFilterSpec extends FunSpec with Matchers with LivyBaseUnitTestSuite {
+class SecurityHeadersFilterSpec extends AnyFunSpec with Matchers with LivyBaseUnitTestSuite {
val requiredHeaders = Set("X-Content-Type-Options", "X-Frame-Options", "X-XSS-Protection",
"Content-Security-Policy")
diff --git a/server/src/test/scala/org/apache/livy/server/batch/BatchSessionSpec.scala b/server/src/test/scala/org/apache/livy/server/batch/BatchSessionSpec.scala
index 9ecfd57b9..2477eac73 100644
--- a/server/src/test/scala/org/apache/livy/server/batch/BatchSessionSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/batch/BatchSessionSpec.scala
@@ -26,7 +26,8 @@ import scala.concurrent.duration.Duration
import org.mockito.Matchers
import org.mockito.Matchers.anyObject
import org.mockito.Mockito._
-import org.scalatest.{BeforeAndAfter, FunSpec}
+import org.scalatest.BeforeAndAfter
+import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf, Utils}
@@ -36,9 +37,9 @@ import org.apache.livy.sessions.SessionState
import org.apache.livy.utils.{AppInfo, Clock, SparkApp}
class BatchSessionSpec
- extends FunSpec
+ extends AnyFunSpec
with BeforeAndAfter
- with org.scalatest.Matchers
+ with org.scalatest.matchers.should.Matchers
with LivyBaseUnitTestSuite {
val script: Path = {
diff --git a/server/src/test/scala/org/apache/livy/server/batch/CreateBatchRequestSpec.scala b/server/src/test/scala/org/apache/livy/server/batch/CreateBatchRequestSpec.scala
index 7fef3c2ff..5ba66b1f0 100644
--- a/server/src/test/scala/org/apache/livy/server/batch/CreateBatchRequestSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/batch/CreateBatchRequestSpec.scala
@@ -18,11 +18,11 @@
package org.apache.livy.server.batch
import com.fasterxml.jackson.databind.{JsonMappingException, ObjectMapper}
-import org.scalatest.FunSpec
+import org.scalatest.funspec.AnyFunSpec
import org.apache.livy.LivyBaseUnitTestSuite
-class CreateBatchRequestSpec extends FunSpec with LivyBaseUnitTestSuite {
+class CreateBatchRequestSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
private val mapper = new ObjectMapper()
.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule)
diff --git a/server/src/test/scala/org/apache/livy/server/interactive/CreateInteractiveRequestSpec.scala b/server/src/test/scala/org/apache/livy/server/interactive/CreateInteractiveRequestSpec.scala
index b84d98a9c..b5f6b5e98 100644
--- a/server/src/test/scala/org/apache/livy/server/interactive/CreateInteractiveRequestSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/interactive/CreateInteractiveRequestSpec.scala
@@ -18,12 +18,12 @@
package org.apache.livy.server.interactive
import com.fasterxml.jackson.databind.ObjectMapper
-import org.scalatest.FunSpec
+import org.scalatest.funspec.AnyFunSpec
import org.apache.livy.LivyBaseUnitTestSuite
import org.apache.livy.sessions.{PySpark, SessionKindModule}
-class CreateInteractiveRequestSpec extends FunSpec with LivyBaseUnitTestSuite {
+class CreateInteractiveRequestSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
private val mapper = new ObjectMapper()
.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule)
diff --git a/server/src/test/scala/org/apache/livy/server/interactive/InteractiveSessionSpec.scala b/server/src/test/scala/org/apache/livy/server/interactive/InteractiveSessionSpec.scala
index f6424e2f6..556c54fbd 100644
--- a/server/src/test/scala/org/apache/livy/server/interactive/InteractiveSessionSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/interactive/InteractiveSessionSpec.scala
@@ -29,8 +29,10 @@ import org.json4s.jackson.JsonMethods.parse
import org.mockito.{Matchers => MockitoMatchers}
import org.mockito.Matchers._
import org.mockito.Mockito.{atLeastOnce, verify, when}
-import org.scalatest.{BeforeAndAfterAll, FunSpec, Matchers}
+import org.scalatest.BeforeAndAfterAll
import org.scalatest.concurrent.Eventually._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{ExecuteRequest, JobHandle, LivyBaseUnitTestSuite, LivyConf}
@@ -42,7 +44,7 @@ import org.apache.livy.server.recovery.SessionStore
import org.apache.livy.sessions.{PySpark, SessionState, Spark}
import org.apache.livy.utils.{AppInfo, SparkApp}
-class InteractiveSessionSpec extends FunSpec
+class InteractiveSessionSpec extends AnyFunSpec
with Matchers with BeforeAndAfterAll with LivyBaseUnitTestSuite {
private val livyConf = new LivyConf()
diff --git a/server/src/test/scala/org/apache/livy/server/interactive/SessionHeartbeatSpec.scala b/server/src/test/scala/org/apache/livy/server/interactive/SessionHeartbeatSpec.scala
index c9ca9d5c1..55f10a854 100644
--- a/server/src/test/scala/org/apache/livy/server/interactive/SessionHeartbeatSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/interactive/SessionHeartbeatSpec.scala
@@ -22,8 +22,9 @@ import scala.concurrent.Future
import scala.language.postfixOps
import org.mockito.Mockito.{never, verify, when}
-import org.scalatest.{FunSpec, Matchers}
import org.scalatest.concurrent.Eventually._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.LivyConf
@@ -31,7 +32,7 @@ import org.apache.livy.server.recovery.SessionStore
import org.apache.livy.sessions.{Session, SessionManager}
import org.apache.livy.sessions.Session.RecoveryMetadata
-class SessionHeartbeatSpec extends FunSpec with Matchers {
+class SessionHeartbeatSpec extends AnyFunSpec with Matchers {
describe("SessionHeartbeat") {
class TestHeartbeat(override val heartbeatTimeout: FiniteDuration) extends SessionHeartbeat {}
diff --git a/server/src/test/scala/org/apache/livy/server/recovery/BlackholeStateStoreSpec.scala b/server/src/test/scala/org/apache/livy/server/recovery/BlackholeStateStoreSpec.scala
index 8ee448f5e..014652270 100644
--- a/server/src/test/scala/org/apache/livy/server/recovery/BlackholeStateStoreSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/recovery/BlackholeStateStoreSpec.scala
@@ -17,13 +17,13 @@
package org.apache.livy.server.recovery
-import org.scalatest.FunSpec
-import org.scalatest.Matchers._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers._
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
import org.apache.livy.server.batch.BatchRecoveryMetadata
-class BlackholeStateStoreSpec extends FunSpec with LivyBaseUnitTestSuite {
+class BlackholeStateStoreSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
describe("BlackholeStateStore") {
val stateStore = new BlackholeStateStore(new LivyConf())
diff --git a/server/src/test/scala/org/apache/livy/server/recovery/FileSystemStateStoreSpec.scala b/server/src/test/scala/org/apache/livy/server/recovery/FileSystemStateStoreSpec.scala
index 1ee1a2fe2..cbedb1e6e 100644
--- a/server/src/test/scala/org/apache/livy/server/recovery/FileSystemStateStoreSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/recovery/FileSystemStateStoreSpec.scala
@@ -31,13 +31,13 @@ import org.mockito.Mockito.{atLeastOnce, spy, verify, when}
import org.mockito.internal.matchers.Equals
import org.mockito.invocation.InvocationOnMock
import org.mockito.stubbing.Answer
-import org.scalatest.FunSpec
-import org.scalatest.Matchers._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers._
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
-class FileSystemStateStoreSpec extends FunSpec with LivyBaseUnitTestSuite {
+class FileSystemStateStoreSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
describe("FileSystemStateStore") {
def pathEq(wantedPath: String): Path = argThat(new ArgumentMatcher[Path] {
private val matcher = new Equals(wantedPath)
diff --git a/server/src/test/scala/org/apache/livy/server/recovery/SessionStoreSpec.scala b/server/src/test/scala/org/apache/livy/server/recovery/SessionStoreSpec.scala
index 88610514e..923f70981 100644
--- a/server/src/test/scala/org/apache/livy/server/recovery/SessionStoreSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/recovery/SessionStoreSpec.scala
@@ -20,14 +20,14 @@ package org.apache.livy.server.recovery
import scala.util.Success
import org.mockito.Mockito._
-import org.scalatest.FunSpec
-import org.scalatest.Matchers._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers._
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
import org.apache.livy.sessions.Session.RecoveryMetadata
-class SessionStoreSpec extends FunSpec with LivyBaseUnitTestSuite {
+class SessionStoreSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
describe("SessionStore") {
case class TestRecoveryMetadata(id: Int) extends RecoveryMetadata
diff --git a/server/src/test/scala/org/apache/livy/server/recovery/StateStoreSpec.scala b/server/src/test/scala/org/apache/livy/server/recovery/StateStoreSpec.scala
index 8c2d4b36e..9b152a50b 100644
--- a/server/src/test/scala/org/apache/livy/server/recovery/StateStoreSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/recovery/StateStoreSpec.scala
@@ -17,13 +17,14 @@
package org.apache.livy.server.recovery
-import org.scalatest.{BeforeAndAfter, FunSpec}
-import org.scalatest.Matchers._
+import org.scalatest.BeforeAndAfter
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers._
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
import org.apache.livy.sessions.SessionManager
-class StateStoreSpec extends FunSpec with BeforeAndAfter with LivyBaseUnitTestSuite {
+class StateStoreSpec extends AnyFunSpec with BeforeAndAfter with LivyBaseUnitTestSuite {
describe("StateStore") {
after {
StateStore.cleanup()
diff --git a/server/src/test/scala/org/apache/livy/server/recovery/ZooKeeperStateStoreSpec.scala b/server/src/test/scala/org/apache/livy/server/recovery/ZooKeeperStateStoreSpec.scala
index e8222d09a..544d6c86d 100644
--- a/server/src/test/scala/org/apache/livy/server/recovery/ZooKeeperStateStoreSpec.scala
+++ b/server/src/test/scala/org/apache/livy/server/recovery/ZooKeeperStateStoreSpec.scala
@@ -26,13 +26,13 @@ import org.apache.curator.framework.state.{ConnectionState, ConnectionStateListe
import org.apache.zookeeper.data.Stat
import org.mockito.ArgumentCaptor
import org.mockito.Mockito._
-import org.scalatest.FunSpec
-import org.scalatest.Matchers._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers._
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
-class ZooKeeperStateStoreSpec extends FunSpec with LivyBaseUnitTestSuite {
+class ZooKeeperStateStoreSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
describe("ZooKeeperStateStore") {
case class TestFixture(stateStore: ZooKeeperStateStore, curatorClient: CuratorFramework)
val conf = new LivyConf()
diff --git a/server/src/test/scala/org/apache/livy/sessions/SessionManagerSpec.scala b/server/src/test/scala/org/apache/livy/sessions/SessionManagerSpec.scala
index 363b01f89..8e5557018 100644
--- a/server/src/test/scala/org/apache/livy/sessions/SessionManagerSpec.scala
+++ b/server/src/test/scala/org/apache/livy/sessions/SessionManagerSpec.scala
@@ -23,8 +23,9 @@ import scala.language.postfixOps
import scala.util.{Failure, Try}
import org.mockito.Mockito.{doReturn, never, verify, when}
-import org.scalatest.{FunSpec, Matchers}
import org.scalatest.concurrent.Eventually._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
@@ -33,7 +34,7 @@ import org.apache.livy.server.interactive.{InteractiveRecoveryMetadata, Interact
import org.apache.livy.server.recovery.SessionStore
import org.apache.livy.sessions.Session.RecoveryMetadata
-class SessionManagerSpec extends FunSpec with Matchers with LivyBaseUnitTestSuite {
+class SessionManagerSpec extends AnyFunSpec with Matchers with LivyBaseUnitTestSuite {
implicit def executor: ExecutionContext = ExecutionContext.global
private def createSessionManager(livyConf: LivyConf = new LivyConf())
diff --git a/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala b/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala
index a77496348..60ef74863 100644
--- a/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala
+++ b/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala
@@ -19,11 +19,11 @@ package org.apache.livy.sessions
import java.net.URI
-import org.scalatest.FunSuite
+import org.scalatest.funsuite.AnyFunSuite
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
-class SessionSpec extends FunSuite with LivyBaseUnitTestSuite {
+class SessionSpec extends AnyFunSuite with LivyBaseUnitTestSuite {
test("use default fs in paths") {
val conf = new LivyConf(false)
diff --git a/server/src/test/scala/org/apache/livy/utils/LivySparkUtilsSuite.scala b/server/src/test/scala/org/apache/livy/utils/LivySparkUtilsSuite.scala
index 24b612ccd..4338f6d38 100644
--- a/server/src/test/scala/org/apache/livy/utils/LivySparkUtilsSuite.scala
+++ b/server/src/test/scala/org/apache/livy/utils/LivySparkUtilsSuite.scala
@@ -17,14 +17,14 @@
package org.apache.livy.utils
-import org.scalatest.FunSuite
-import org.scalatest.Matchers
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
import org.apache.livy.LivyConf._
import org.apache.livy.server.LivyServer
-class LivySparkUtilsSuite extends FunSuite with Matchers with LivyBaseUnitTestSuite {
+class LivySparkUtilsSuite extends AnyFunSuite with Matchers with LivyBaseUnitTestSuite {
import LivySparkUtils._
diff --git a/server/src/test/scala/org/apache/livy/utils/SparkAppSpec.scala b/server/src/test/scala/org/apache/livy/utils/SparkAppSpec.scala
index 94026029f..eb2ba48e3 100644
--- a/server/src/test/scala/org/apache/livy/utils/SparkAppSpec.scala
+++ b/server/src/test/scala/org/apache/livy/utils/SparkAppSpec.scala
@@ -23,11 +23,11 @@ import scala.collection.JavaConverters._
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.security.alias.CredentialProviderFactory
-import org.scalatest.FunSpec
+import org.scalatest.funspec.AnyFunSpec
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
-class SparkAppSpec extends FunSpec with LivyBaseUnitTestSuite {
+class SparkAppSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
private val providerPathKey = "spark.hadoop.hadoop.security.credential.provider.path"
private val truststorePasswordKey = "spark.hadoop.hive.metastore.truststore.password"
diff --git a/server/src/test/scala/org/apache/livy/utils/SparkKubernetesAppSpec.scala b/server/src/test/scala/org/apache/livy/utils/SparkKubernetesAppSpec.scala
index 24e66e0d9..6acec2a23 100644
--- a/server/src/test/scala/org/apache/livy/utils/SparkKubernetesAppSpec.scala
+++ b/server/src/test/scala/org/apache/livy/utils/SparkKubernetesAppSpec.scala
@@ -22,13 +22,14 @@ import io.fabric8.kubernetes.api.model._
import io.fabric8.kubernetes.api.model.networking.v1.{Ingress, IngressRule, IngressSpec}
import io.fabric8.kubernetes.client.KubernetesClient
import org.mockito.Mockito.when
-import org.scalatest.{BeforeAndAfterAll, FunSpec}
+import org.scalatest.BeforeAndAfterAll
+import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.mockito.MockitoSugar._
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf}
import org.apache.livy.utils.KubernetesConstants.SPARK_APP_TAG_LABEL
-class SparkKubernetesAppSpec extends FunSpec with LivyBaseUnitTestSuite with BeforeAndAfterAll {
+class SparkKubernetesAppSpec extends AnyFunSpec with LivyBaseUnitTestSuite with BeforeAndAfterAll {
override def beforeAll(): Unit = {
super.beforeAll()
diff --git a/server/src/test/scala/org/apache/livy/utils/SparkYarnAppSpec.scala b/server/src/test/scala/org/apache/livy/utils/SparkYarnAppSpec.scala
index 1cc6b4b60..ab2f5167d 100644
--- a/server/src/test/scala/org/apache/livy/utils/SparkYarnAppSpec.scala
+++ b/server/src/test/scala/org/apache/livy/utils/SparkYarnAppSpec.scala
@@ -36,13 +36,13 @@ import org.mockito.Mockito._
import org.mockito.invocation.InvocationOnMock
import org.mockito.stubbing.Answer
import org.scalatest.concurrent.Eventually
-import org.scalatest.FunSpec
+import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.mockito.MockitoSugar.mock
import org.apache.livy.{LivyBaseUnitTestSuite, LivyConf, Utils}
import org.apache.livy.utils.SparkApp._
-class SparkYarnAppSpec extends FunSpec with LivyBaseUnitTestSuite {
+class SparkYarnAppSpec extends AnyFunSpec with LivyBaseUnitTestSuite {
private def cleanupThread(t: Thread)(f: => Unit) = {
try { f } finally { t.interrupt() }
}
diff --git a/thriftserver/server/src/test/scala/org/apache/livy/thriftserver/ThriftServerBaseTest.scala b/thriftserver/server/src/test/scala/org/apache/livy/thriftserver/ThriftServerBaseTest.scala
index 9450907c7..860df01e9 100644
--- a/thriftserver/server/src/test/scala/org/apache/livy/thriftserver/ThriftServerBaseTest.scala
+++ b/thriftserver/server/src/test/scala/org/apache/livy/thriftserver/ThriftServerBaseTest.scala
@@ -20,7 +20,8 @@ package org.apache.livy.thriftserver
import java.sql.{Connection, DriverManager, Statement}
import org.apache.hive.jdbc.HiveDriver
-import org.scalatest.{BeforeAndAfterAll, FunSuite}
+import org.scalatest.BeforeAndAfterAll
+import org.scalatest.funsuite.AnyFunSuite
import org.apache.livy.LivyConf
import org.apache.livy.LivyConf.{LIVY_SPARK_SCALA_VERSION, LIVY_SPARK_VERSION}
@@ -35,7 +36,7 @@ object ServerMode extends Enumeration {
val binary, http = Value
}
-abstract class ThriftServerBaseTest extends FunSuite with BeforeAndAfterAll {
+abstract class ThriftServerBaseTest extends AnyFunSuite with BeforeAndAfterAll {
def mode: ServerMode.Value
def port: Int