Add test for config of multiple loggers, see #2968
(cherry picked from commit 14d857a593513d932b82ab2fd4e2a2dc78ef911c) Conflicts: akka-actor-tests/src/test/scala/akka/event/LoggerSpec.scala
This commit is contained in:
parent
e09f0ac3ff
commit
f7473ced8d
1 changed files with 40 additions and 6 deletions
|
|
@ -17,7 +17,7 @@ object LoggerSpec {
|
|||
akka {
|
||||
stdout-loglevel = "WARNING"
|
||||
loglevel = "DEBUG"
|
||||
loggers = ["akka.event.LoggerSpec$TestLogger"]
|
||||
loggers = ["akka.event.LoggerSpec$TestLogger1"]
|
||||
}
|
||||
""").withFallback(AkkaSpec.testConf)
|
||||
|
||||
|
|
@ -25,19 +25,29 @@ object LoggerSpec {
|
|||
akka {
|
||||
stdout-loglevel = "OFF"
|
||||
loglevel = "OFF"
|
||||
loggers = ["akka.event.LoggerSpec$TestLogger"]
|
||||
loggers = ["akka.event.LoggerSpec$TestLogger1"]
|
||||
}
|
||||
""").withFallback(AkkaSpec.testConf)
|
||||
|
||||
case class SetTarget(ref: ActorRef)
|
||||
val multipleConfig = ConfigFactory.parseString("""
|
||||
akka {
|
||||
stdout-loglevel = "OFF"
|
||||
loglevel = "WARNING"
|
||||
loggers = ["akka.event.LoggerSpec$TestLogger1", "akka.event.LoggerSpec$TestLogger2"]
|
||||
}
|
||||
""").withFallback(AkkaSpec.testConf)
|
||||
|
||||
class TestLogger extends Actor with Logging.StdOutLogger {
|
||||
case class SetTarget(ref: ActorRef, qualifier: Int)
|
||||
|
||||
class TestLogger1 extends TestLogger(1)
|
||||
class TestLogger2 extends TestLogger(2)
|
||||
abstract class TestLogger(qualifier: Int) extends Actor with Logging.StdOutLogger {
|
||||
var target: Option[ActorRef] = None
|
||||
override def receive: Receive = {
|
||||
case InitializeLogger(bus) ⇒
|
||||
bus.subscribe(context.self, classOf[SetTarget])
|
||||
sender ! LoggerInitialized
|
||||
case SetTarget(ref) ⇒
|
||||
case SetTarget(ref, `qualifier`) ⇒
|
||||
target = Some(ref)
|
||||
ref ! ("OK")
|
||||
case event: LogEvent ⇒
|
||||
|
|
@ -58,7 +68,7 @@ class LoggerSpec extends WordSpec with MustMatchers {
|
|||
implicit val system = ActorSystem(name, config)
|
||||
try {
|
||||
val probe = TestProbe()
|
||||
system.eventStream.publish(SetTarget(probe.ref))
|
||||
system.eventStream.publish(SetTarget(probe.ref, qualifier = 1))
|
||||
probe.expectMsg("OK")
|
||||
system.log.error("Danger! Danger!")
|
||||
// since logging is asynchronous ensure that it propagates
|
||||
|
|
@ -93,4 +103,28 @@ class LoggerSpec extends WordSpec with MustMatchers {
|
|||
out.size must be(0)
|
||||
}
|
||||
}
|
||||
|
||||
"An actor system configured with multiple loggers" must {
|
||||
|
||||
"use several loggers" in {
|
||||
Console.withOut(new java.io.ByteArrayOutputStream()) {
|
||||
implicit val system = ActorSystem("multipleLoggers", multipleConfig)
|
||||
try {
|
||||
val probe1 = TestProbe()
|
||||
val probe2 = TestProbe()
|
||||
system.eventStream.publish(SetTarget(probe1.ref, qualifier = 1))
|
||||
probe1.expectMsg("OK")
|
||||
system.eventStream.publish(SetTarget(probe2.ref, qualifier = 2))
|
||||
probe2.expectMsg("OK")
|
||||
|
||||
system.log.warning("log it")
|
||||
probe1.expectMsg("log it")
|
||||
probe2.expectMsg("log it")
|
||||
} finally {
|
||||
system.shutdown()
|
||||
system.awaitTermination(5.seconds.dilated)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue