Fixed several memory and thread leaks. See #1404
* Dispatchers need Scheduler to be able to shutdown themselves. Stop Scheduler after dispatchers. * Changed CallingThreadDispatcher global object to Extension, since it holds map of references to mailboxes. Will be GC:ed when system is GC:ed. * Made testActor lazy, since it is not used in all tests, and it creates CallingThreadDispatcher. * Activated some java tests that were not running * Many tests were not stopping created ActorSystems. VERY IMPORTANT TO STOP ActorSystem in tests. Use AkkaSpec as much as possible. * Used profiler to verify (and find) dangling ActorSystemImpl and threads from dispatchers. * FutureSpec creates ForkJoinPool threads that are not cleared, but number of threads don't grow so it's not a problem.
This commit is contained in:
parent
035f514843
commit
b488d70f54
31 changed files with 232 additions and 105 deletions
|
|
@ -5,15 +5,20 @@ package akka.tutorial.first.scala
|
|||
|
||||
import org.junit.runner.RunWith
|
||||
import org.scalatest.matchers.MustMatchers
|
||||
import org.scalatest.BeforeAndAfterAll
|
||||
import org.scalatest.WordSpec
|
||||
import akka.testkit.TestActorRef
|
||||
import akka.tutorial.first.scala.Pi.Worker
|
||||
import akka.actor.ActorSystem
|
||||
|
||||
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
|
||||
class WorkerSpec extends WordSpec with MustMatchers {
|
||||
class WorkerSpec extends WordSpec with MustMatchers with BeforeAndAfterAll {
|
||||
|
||||
implicit def system = ActorSystem()
|
||||
implicit val system = ActorSystem()
|
||||
|
||||
override def afterAll {
|
||||
system.stop()
|
||||
}
|
||||
|
||||
"Worker" must {
|
||||
"calculate pi correctly" in {
|
||||
|
|
@ -23,4 +28,4 @@ class WorkerSpec extends WordSpec with MustMatchers {
|
|||
actor.calculatePiFor(1, 1) must be(-1.3333333333333333 plusOrMinus 0.0000000001)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue