diff --git a/akka-remote/src/multi-jvm/scala/akka/remote/AbstractRemoteActorMultiJvmSpec.scala b/akka-remote/src/multi-jvm/scala/akka/remote/AbstractRemoteActorMultiJvmSpec.scala index cf6b629d1c..0bc6d33f68 100755 --- a/akka-remote/src/multi-jvm/scala/akka/remote/AbstractRemoteActorMultiJvmSpec.scala +++ b/akka-remote/src/multi-jvm/scala/akka/remote/AbstractRemoteActorMultiJvmSpec.scala @@ -7,7 +7,7 @@ trait AbstractRemoteActorMultiJvmSpec { def commonConfig: Config def remotes: Seq[String] = { - val arrayOpt = Option(System.getProperty("test.hosts")).map(_ split ",") + val arrayOpt = Option(AkkaRemoteSpec.testNodes).map(_ split ",") (arrayOpt getOrElse Array.fill(NrOfNodes)("localhost")).toSeq } diff --git a/akka-remote/src/multi-jvm/scala/akka/remote/AkkaRemoteSpec.scala b/akka-remote/src/multi-jvm/scala/akka/remote/AkkaRemoteSpec.scala index 2c9274c84f..2a38a33402 100644 --- a/akka-remote/src/multi-jvm/scala/akka/remote/AkkaRemoteSpec.scala +++ b/akka-remote/src/multi-jvm/scala/akka/remote/AkkaRemoteSpec.scala @@ -24,6 +24,8 @@ object AkkaRemoteSpec { .withFallback(ConfigFactory.defaultReference).resolve(ConfigResolveOptions.defaults) } } + + val testNodes = System.getProperty("test.hosts") } abstract class AkkaRemoteSpec(config: Config) diff --git a/akka-remote/src/multi-jvm/scala/akka/remote/MultiJvmSync.scala b/akka-remote/src/multi-jvm/scala/akka/remote/MultiJvmSync.scala index 4a35d8c03f..3eeab35bd0 100644 --- a/akka-remote/src/multi-jvm/scala/akka/remote/MultiJvmSync.scala +++ b/akka-remote/src/multi-jvm/scala/akka/remote/MultiJvmSync.scala @@ -38,17 +38,12 @@ object MultiJvmSync { def end(className: String, count: Int) = barrier(EndBarrier, count, className) - def testName(className: String) = { - val i = className.indexOf(TestMarker) - if (i >= 0) className.substring(0, i) else className - } - - def nodeName(className: String) = { - val i = className.indexOf(TestMarker) - if (i >= 0) className.substring(i + TestMarker.length) else className - } - def barrier(name: String, count: Int, className: String, timeout: Duration = FileBasedBarrier.DefaultTimeout) = { - new FileBasedBarrier(name, count, testName(className), nodeName(className), timeout).await() + val Array(testName, nodeName) = className split TestMarker + val barrier = if (AkkaRemoteSpec.testNodes eq null) + new FileBasedBarrier(name, count, testName, nodeName, timeout) + else + new ZkClient.ZkBarrier(name + "_" + nodeName, count, testName) + barrier.await() } } diff --git a/akka-remote/src/multi-jvm/scala/akka/remote/ZKClient.scala b/akka-remote/src/multi-jvm/scala/akka/remote/ZKClient.scala index bfbe64b663..225be41d76 100755 --- a/akka-remote/src/multi-jvm/scala/akka/remote/ZKClient.scala +++ b/akka-remote/src/multi-jvm/scala/akka/remote/ZKClient.scala @@ -7,12 +7,10 @@ import com.typesafe.config.Config import org.apache.zookeeper._ import ZooDefs.Ids -object ZKClient extends Watcher { +object ZkClient extends Watcher { // Don't forget to close! lazy val zk: ZooKeeper = { - val remoteNodes = AkkaRemoteSpec.testConf.getString("akka.test.remote.nodes") split ',' map { - case hostport => hostport.split(":")(0) - } + val remoteNodes = AkkaRemoteSpec.testNodes split ',' // ZkServers are configured to listen on a specific port. val connectString = remoteNodes map (_+":2181") mkString "," @@ -32,9 +30,9 @@ object ZKClient extends Watcher { zk.create(root + "/" + name, Array[Byte](), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL) while (true) { - ZKClient.this.synchronized { + ZkClient.this.synchronized { if (zk.getChildren(root, true).size < count) { - ZKClient.this.wait() + ZkClient.this.wait() } } } @@ -43,9 +41,9 @@ object ZKClient extends Watcher { def leave() { zk.delete(root + "/" + name, -1) while (true) { - ZKClient.this.synchronized { + ZkClient.this.synchronized { if (!zk.getChildren(root, true).isEmpty) { - ZKClient.this.wait() + ZkClient.this.wait() } } }