You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@livy.apache.org by gg...@apache.org on 2026/08/20 15:03:07 UTC
(livy) branch master updated: [LIVY-1066] Upgrade scalatest to 3.2.9 and scalatra to 2.8.4
This is an automated email from the ASF dual-hosted git repository.
gyogal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/livy.git
The following commit(s) were added to refs/heads/master by this push:
new d175722d [LIVY-1066] Upgrade scalatest to 3.2.9 and scalatra to 2.8.4
d175722d is described below
commit d175722d1a24631499db99786940b3fe1f93cce4
Author: Gabor Roczei <19...@users.noreply.github.com>
AuthorDate: Thu Aug 20 17:03:00 2026 +0200
[LIVY-1066] Upgrade scalatest to 3.2.9 and scalatra to 2.8.4
## What changes were proposed in this pull request?
Upgrade scalatest 3.0.8 -> 3.2.9 and scalatra 2.6.5 -> 2.8.4. Both
upgrades are prerequisites for Spark 4 / Scala 2.13 support (parent
JIRA LIVY-1041) and are split into a dedicated commit to keep test
migrations separate from core Spark 4 source changes for easier review.
Scalatest 3.0.8 -> 3.2.9:
- Migrate FunSuite/FunSpec/FunSpecLike/FlatSpec test classes to their
3.2 successors AnyFunSuite/AnyFunSpec/AnyFunSpecLike/AnyFlatSpec.
- Move `org.scalatest.Matchers` to
`org.scalatest.matchers.should.Matchers`.
- Add `org.scalatestplus:mockito-3-4_${scala.binary.version}:3.2.9.0`,
since scalatest 3.2 moved `MockitoSugar.mock` into a separate
scalatestplus artifact.
Scalatra 2.6.5 -> 2.8.4:
- Bump `metrics.version` 3.1.0 -> 4.2.19: scalatra 2.8.x's
metrics-servlets pulls in Dropwizard metrics 4.x, and keeping
metrics-core / metrics-healthchecks at 3.1.0 causes a
NoClassDefFoundError for HealthCheckFilter at runtime.
## How was this patch tested?
- Unit tests: `mvn verify -Pspark3 -Pscala-2.12 -Pthriftserver` passes
on JDK 8/17 for all modules with the migrated ScalaTest 3.2 test
suites (matching what was verified as part of the parent LIVY-1041
branch).
- The metrics 4.2.19 bump is tested by the integration test suite
(`mvn integration-test -Pspark3 -Pscala-2.12 -pl
:livy-integration-test`), which previously failed with
`NoClassDefFoundError: com/codahale/metrics/servlets/HealthCheckFilter`
on MiniCluster startup and now passes.
## Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 4.7)
---
.../apache/livy/client/http/HttpClientSpec.scala | 5 +++--
.../livy/client/http/LivyConnectionSpec.scala | 7 ++++---
.../test/scala/org/apache/livy/EOLUtilsSuite.scala | 4 ++--
.../test/framework/BaseIntegrationTestSuite.scala | 6 ++++--
pom.xml | 24 +++++++++++++++++++---
.../apache/livy/repl/SparkInterpreterSpec.scala | 5 +++--
.../org/apache/livy/repl/BaseInterpreterSpec.scala | 5 +++--
.../org/apache/livy/repl/BaseSessionSpec.scala | 5 +++--
.../apache/livy/repl/PythonInterpreterSpec.scala | 4 +++-
.../org/apache/livy/repl/PythonSessionSpec.scala | 4 +++-
.../org/apache/livy/repl/ReplDriverSuite.scala | 4 ++--
.../scala/org/apache/livy/repl/SessionSpec.scala | 8 +++++---
.../apache/livy/repl/SparkRInterpreterSpec.scala | 4 +++-
.../org/apache/livy/scalaapi/ScalaClientTest.scala | 5 +++--
.../livy/scalaapi/ScalaClientTestUtils.scala | 5 +++--
.../apache/livy/scalaapi/ScalaJobHandleTest.scala | 5 +++--
.../apache/livy/server/AccessManagerSuite.scala | 5 +++--
.../livy/server/ApiVersioningSupportSpec.scala | 5 +++--
.../apache/livy/server/BaseJsonServletSpec.scala | 4 ++--
.../livy/server/SecurityHeadersFilterSpec.scala | 5 +++--
.../livy/server/batch/BatchSessionSpec.scala | 7 ++++---
.../livy/server/batch/CreateBatchRequestSpec.scala | 4 ++--
.../interactive/CreateInteractiveRequestSpec.scala | 4 ++--
.../interactive/InteractiveSessionSpec.scala | 6 ++++--
.../server/interactive/SessionHeartbeatSpec.scala | 5 +++--
.../server/recovery/BlackholeStateStoreSpec.scala | 6 +++---
.../server/recovery/FileSystemStateStoreSpec.scala | 6 +++---
.../livy/server/recovery/SessionStoreSpec.scala | 6 +++---
.../livy/server/recovery/StateStoreSpec.scala | 7 ++++---
.../server/recovery/ZooKeeperStateStoreSpec.scala | 6 +++---
.../apache/livy/sessions/SessionManagerSpec.scala | 5 +++--
.../org/apache/livy/sessions/SessionSpec.scala | 4 ++--
.../apache/livy/utils/LivySparkUtilsSuite.scala | 6 +++---
.../scala/org/apache/livy/utils/SparkAppSpec.scala | 4 ++--
.../apache/livy/utils/SparkKubernetesAppSpec.scala | 5 +++--
.../org/apache/livy/utils/SparkYarnAppSpec.scala | 4 ++--
.../livy/thriftserver/ThriftServerBaseTest.scala | 5 +++--
37 files changed, 128 insertions(+), 81 deletions(-)
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 df0cea5f..54ab5641 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 5fda6106..cfa62d75 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 8ee73a11..3d6bd99e 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 d238f1e5..8e75515d 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 218b4315..738c166a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,12 +98,21 @@
<libthrift.version>0.9.3</libthrift.version>
<log4j.version>2.26.0</log4j.version>
<kryo.version>4.0.2</kryo.version>
- <metrics.version>3.1.0</metrics.version>
+ <!-- Scalatra 2.8.x pulls in metrics-servlets 4.2.x; keeping metrics-core
+ and metrics-healthchecks on 3.1.0 causes a NoClassDefFoundError for
+ HealthCheckFilter at runtime (the class moved in Dropwizard 4.x). -->
+ <metrics.version>4.2.19</metrics.version>
<mockito.version>1.10.19</mockito.version>
<netty.version>4.1.86.Final</netty.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <scalatest.version>3.0.8</scalatest.version>
- <scalatra.version>2.6.5</scalatra.version>
+ <!-- Scalatest 3.2.9 is required by Scalatra 2.8.x (needed for Scala
+ 2.13 support). All test suites are written against the 3.2 API,
+ where types like `FunSuite`/`Matchers` moved into subpackages. -->
+ <scalatest.version>3.2.9</scalatest.version>
+ <!-- The scalatestplus mockito artifact uses a four-part version that tracks
+ scalatest (e.g. 3.2.9.0 for scalatest 3.2.9). -->
+ <scalatestplus.mockito.version>3.2.9.0</scalatestplus.mockito.version>
+ <scalatra.version>2.8.4</scalatra.version>
<java.version>1.8</java.version>
<owasp.version>12.1.9</owasp.version>
<extraJavaTestArgs>
@@ -263,6 +272,15 @@
<scope>test</scope>
</dependency>
+ <!-- ScalaTest 3.2 moved `MockitoSugar.mock` into a separate scalatestplus
+ artifact. -->
+ <dependency>
+ <groupId>org.scalatestplus</groupId>
+ <artifactId>mockito-3-4_${scala.binary.version}</artifactId>
+ <version>${scalatestplus.mockito.version}</version>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>org.scalatra</groupId>
<artifactId>scalatra-scalatest_${scala.binary.version}</artifactId>
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 d9220347..fbad108f 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 b3d4d5ab..a4345fa9 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 5122310c..4d052006 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 dc8083f9..61e27ad6 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 170d3c72..f42a13c3 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 836ae523..66947d6a 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 34019071..af47e0b6 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 49763960..dd69a686 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 96458bf2..fb751c06 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 458ff3bf..7d406f3a 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 3f5bdc64..732f6af7 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 71c500f0..2fadf675 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 0f50ced0..e38c19b1 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 a96ae2b9..4c8f4fa7 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 03ff6239..6fbce33c 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 9ecfd57b..2477eac7 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 7fef3c2f..5ba66b1f 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 b84d98a9..b5f6b5e9 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 f6424e2f..556c54fb 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 c9ca9d5c..55f10a85 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 8ee448f5..01465227 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 1ee1a2fe..cbedb1e6 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 88610514..923f7098 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 8c2d4b36..9b152a50 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 e8222d09..544d6c86 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 363b01f8..8e555701 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 a7749634..60ef7486 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 24b612cc..4338f6d3 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 94026029..eb2ba48e 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 24e66e0d..6acec2a2 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 1cc6b4b6..ab2f5167 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 9450907c..860df01e 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