Skip to content

Commit

Permalink
Further performance improvements to tests
Browse files Browse the repository at this point in the history
Eliminating shutdown hooks so that objects get GC'ed.
  • Loading branch information
hubertp committed Nov 29, 2023
1 parent 0c125de commit b5d11cc
Show file tree
Hide file tree
Showing 10 changed files with 123 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.runtime.`type`.ConstantsGen
import org.enso.interpreter.test.Metadata
Expand All @@ -16,6 +16,8 @@ import java.io.{ByteArrayOutputStream, File}
import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import java.util.logging.Level
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
class BuiltinTypesTest
Expand All @@ -30,8 +32,7 @@ class BuiltinTypesTest
class TestContext(packageName: String) extends InstrumentTestContext {

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val runtimeServerEmulator =
new RuntimeServerEmulator(messageQueue, lockManager)

Expand Down Expand Up @@ -98,8 +99,15 @@ class BuiltinTypesTest
val Some(Api.Response(_, Api.InitializedNotification())) = context.receive
}
override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

def runCode(contextId: UUID, requestId: UUID, contents: String): Unit = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.test.Metadata
import org.enso.pkg.{Package, PackageManager}
Expand All @@ -16,6 +16,8 @@ import java.io.{ByteArrayOutputStream, File}
import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import java.util.logging.Level
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
class RuntimeAsyncCommandsTest
Expand All @@ -29,8 +31,7 @@ class RuntimeAsyncCommandsTest

class TestContext(packageName: String) extends InstrumentTestContext {
val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val runtimeServerEmulator =
new RuntimeServerEmulator(messageQueue, lockManager)

Expand Down Expand Up @@ -103,8 +104,15 @@ class RuntimeAsyncCommandsTest
val Some(Api.Response(_, Api.InitializedNotification())) = context.receive
}
override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

it should "interrupt stopped execution context" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.editions.LibraryName
import org.enso.interpreter.runtime
Expand Down Expand Up @@ -28,6 +28,7 @@ import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import java.util.concurrent.{LinkedBlockingQueue, TimeUnit}
import java.util.logging.Level
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
Expand Down Expand Up @@ -74,7 +75,6 @@ class RuntimeComponentsTest
new LinkedBlockingQueue()

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val distributionHome: File =
Paths.get("../../distribution/component").toFile.getAbsoluteFile
val editionHome: File =
Expand Down Expand Up @@ -224,8 +224,15 @@ class RuntimeComponentsTest
val Some(Api.Response(_, Api.InitializedNotification())) = context.receive
}
override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.messageQueue.clear()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

it should "load library extended by the component group" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.runtime.`type`.ConstantsGen
import org.enso.interpreter.test.Metadata
Expand Down Expand Up @@ -35,8 +35,7 @@ class RuntimeErrorsTest
class TestContext(packageName: String) extends InstrumentTestContext {

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val runtimeServerEmulator =
new RuntimeServerEmulator(messageQueue, lockManager)

Expand Down Expand Up @@ -116,8 +115,15 @@ class RuntimeErrorsTest
}

override protected def afterEach(): Unit = {
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

it should "return panic sentinels in method body" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.runtime.EnsoContext
import org.enso.interpreter.runtime.`type`.ConstantsGen
Expand All @@ -19,6 +19,7 @@ import java.io.{ByteArrayOutputStream, File}
import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import java.util.logging.Level
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
Expand All @@ -42,7 +43,6 @@ class RuntimeExecutionEnvironmentTest
class TestContext(packageName: String) extends InstrumentTestContext {

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val distributionHome: File =
Paths.get("../../distribution/component").toFile.getAbsoluteFile
val editionHome: File =
Expand Down Expand Up @@ -129,8 +129,15 @@ class RuntimeExecutionEnvironmentTest
}

override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

it should "panic when output context is not enabled" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.runtime.`type`.{Constants, ConstantsGen}
import org.enso.interpreter.test.Metadata
Expand All @@ -16,6 +16,8 @@ import org.scalatest.matchers.should.Matchers
import java.io.{ByteArrayOutputStream, File}
import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
class RuntimeInstrumentTest
Expand All @@ -29,8 +31,7 @@ class RuntimeInstrumentTest

class TestContext(packageName: String) extends InstrumentTestContext {
val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val runtimeServerEmulator =
new RuntimeServerEmulator(messageQueue, lockManager)

Expand Down Expand Up @@ -101,8 +102,15 @@ class RuntimeInstrumentTest
}

override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

it should "instrument simple expression" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.enso.interpreter.test.instrument

import org.apache.commons.io.FileUtils
import org.apache.commons.io.output.TeeOutputStream
import org.enso.distribution.FileSystem
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.runtime.`type`.ConstantsGen
import org.enso.interpreter.test.Metadata
Expand All @@ -20,6 +20,8 @@ import java.io.{ByteArrayOutputStream, File}
import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import java.util.logging.Level
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
class RuntimeRefactoringTest
Expand All @@ -34,8 +36,7 @@ class RuntimeRefactoringTest
class TestContext(packageName: String) extends InstrumentTestContext {

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val runtimeServerEmulator =
new RuntimeServerEmulator(messageQueue, lockManager)

Expand Down Expand Up @@ -101,8 +102,15 @@ class RuntimeRefactoringTest
}

override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

"RuntimeServer" should "rename operator in main body" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.runtime.`type`.{Constants, ConstantsGen, Types}
import org.enso.interpreter.runtime.EnsoContext
Expand All @@ -21,6 +21,9 @@ import java.nio.file.{Files, Path, Paths}
import java.util.UUID
import org.apache.commons.io.output.TeeOutputStream

import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
class RuntimeServerTest
extends AnyFlatSpec
Expand All @@ -34,8 +37,7 @@ class RuntimeServerTest
class TestContext(packageName: String) extends InstrumentTestContext {

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val lockManager = new ThreadSafeFileLockManager(tmpDir.resolve("locks"))
val runtimeServerEmulator =
new RuntimeServerEmulator(messageQueue, lockManager)

Expand Down Expand Up @@ -368,8 +370,15 @@ class RuntimeServerTest
}

override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.reset()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

"RuntimeServer" should "push and pop functions on the stack" in {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.enso.interpreter.test.instrument

import org.enso.distribution.FileSystem
import org.apache.commons.io.FileUtils
import org.enso.distribution.locking.ThreadSafeFileLockManager
import org.enso.interpreter.test.Metadata
import org.enso.pkg.{Package, PackageManager, QualifiedName}
Expand All @@ -19,6 +19,7 @@ import java.util.UUID
import java.util.concurrent.{LinkedBlockingQueue, TimeUnit}
import java.util.logging.Level
import scala.collection.mutable
import scala.concurrent.Await
import scala.concurrent.duration._

@scala.annotation.nowarn("msg=multiarg infix syntax")
Expand All @@ -45,7 +46,6 @@ class RuntimeStdlibTest
new LinkedBlockingQueue()

val tmpDir: Path = Files.createTempDirectory("enso-test-packages")
sys.addShutdownHook(FileSystem.removeDirectoryIfExists(tmpDir))
val distributionHome: File =
Paths.get("../../distribution/component").toFile.getAbsoluteFile
val editionHome: File =
Expand Down Expand Up @@ -187,8 +187,15 @@ class RuntimeStdlibTest
}

override protected def afterEach(): Unit = {
context.executionContext.context.close()
context.runtimeServerEmulator.terminate()
if (context != null) {
context.messageQueue.clear()
context.executionContext.context.close()
Await.ready(context.runtimeServerEmulator.terminate(), 5.seconds)
context.lockManager.reset()
context.out.reset()
FileUtils.deleteQuietly(context.tmpDir.toFile)
context = null
}
}

it should "import Base modules" in {
Expand Down
Loading

0 comments on commit b5d11cc

Please sign in to comment.