From 66ccefe00ee81849a525178095ed7d0b2ac2199c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Wed, 19 Dec 2012 15:47:30 +0100 Subject: [PATCH] Workaround for tests relying on accurate throttling - increased default capacity of token bucket in testconductor (Player) --- .../src/main/scala/akka/remote/testconductor/Player.scala | 3 ++- .../scala/akka/remote/testconductor/TestConductorSpec.scala | 2 +- akka-remote/src/main/scala/akka/remote/Remoting.scala | 2 +- .../test/scala/akka/remote/transport/ThrottleModeSpec.scala | 5 ++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/akka-remote-tests/src/main/scala/akka/remote/testconductor/Player.scala b/akka-remote-tests/src/main/scala/akka/remote/testconductor/Player.scala index 6cf39729af..f6bf469b36 100644 --- a/akka-remote-tests/src/main/scala/akka/remote/testconductor/Player.scala +++ b/akka-remote-tests/src/main/scala/akka/remote/testconductor/Player.scala @@ -217,7 +217,8 @@ private[akka] class ClientFSM(name: RoleName, controllerAddr: InetSocketAddress) val mode = if (t.rateMBit < 0.0f) Unthrottled else if (t.rateMBit == 0.0f) Blackhole // Conversion needed as the TokenBucket measures in octets: 125000 Octets/s = 1Mbit/s - else TokenBucket(capacity = 500, tokensPerSecond = t.rateMBit * 125000.0, lastSend = 0, availableTokens = 0) + // FIXME: Initial capacity should be carefully chosen + else TokenBucket(capacity = 1000, tokensPerSecond = t.rateMBit * 125000.0, lastSend = 0, availableTokens = 0) val cmdFuture = TestConductor().transport.managementCommand(SetThrottle(t.target, t.direction, mode)) diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala index f154770105..3eb667d0c9 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala @@ -91,7 +91,7 @@ class TestConductorSpec extends MultiNodeSpec(TestConductorMultiJvmSpec) with ST val (min, max) = if(isNode(master))(0 seconds, 500 millis) - else (0.6 seconds, 2 seconds) + else (0.3 seconds, 2 seconds) within(min, max) { expectMsg(500 millis, 10) diff --git a/akka-remote/src/main/scala/akka/remote/Remoting.scala b/akka-remote/src/main/scala/akka/remote/Remoting.scala index 07b77c7495..be9ff83684 100644 --- a/akka-remote/src/main/scala/akka/remote/Remoting.scala +++ b/akka-remote/src/main/scala/akka/remote/Remoting.scala @@ -469,7 +469,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends private def forwardToDeadLetters(s: Send): Unit = { val sender = s.senderOption match { case Some(sender) ⇒ sender - case None ⇒ Actor.noSender + case None ⇒ extendedSystem.deadLetters } extendedSystem.deadLetters.tell(s.message, sender) } diff --git a/akka-remote/src/test/scala/akka/remote/transport/ThrottleModeSpec.scala b/akka-remote/src/test/scala/akka/remote/transport/ThrottleModeSpec.scala index c5cc5a8a9f..c91007b479 100644 --- a/akka-remote/src/test/scala/akka/remote/transport/ThrottleModeSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/transport/ThrottleModeSpec.scala @@ -6,6 +6,8 @@ import java.util.concurrent.TimeUnit class ThrottleModeSpec extends AkkaSpec { + val halfSecond: Long = TimeUnit.MILLISECONDS.toNanos(500) + "ThrottleMode" must { "allow consumption of infinite amount of tokens when untrhottled" in { @@ -35,7 +37,6 @@ class ThrottleModeSpec extends AkkaSpec { } "accurately replenish tokens" in { - val halfSecond: Long = TimeUnit.MILLISECONDS.toNanos(500) val bucket = TokenBucket(capacity = 100, tokensPerSecond = 100, lastSend = 0L, availableTokens = 0) val (bucket1, success1) = bucket.tryConsumeTokens(timeOfSend = 0L, 0) bucket1 must be(TokenBucket(100, 100, 0, 0)) @@ -55,7 +56,6 @@ class ThrottleModeSpec extends AkkaSpec { } "accurately interleave replenish and consume" in { - val halfSecond: Long = TimeUnit.MILLISECONDS.toNanos(500) val bucket = TokenBucket(capacity = 100, tokensPerSecond = 100, lastSend = 0L, availableTokens = 20) val (bucket1, success1) = bucket.tryConsumeTokens(timeOfSend = 0L, 10) bucket1 must be(TokenBucket(100, 100, 0, 10)) @@ -75,7 +75,6 @@ class ThrottleModeSpec extends AkkaSpec { } "allow oversized packets through by loaning" in { - val halfSecond: Long = TimeUnit.MILLISECONDS.toNanos(500) val bucket = TokenBucket(capacity = 100, tokensPerSecond = 100, lastSend = 0L, availableTokens = 20) val (bucket1, success1) = bucket.tryConsumeTokens(timeOfSend = 0L, 30) bucket1 must be(TokenBucket(100, 100, 0, 20))