From c0e96f55bbf01ea1c386b25ef6fb1f00e7f8237c Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Thu, 18 Apr 2013 22:07:11 +0200 Subject: [PATCH] Temp workaround in tests for the duplicate MemberUp events, see #3239 --- .../cluster/stats/StatsSampleSingleMasterSpec.scala | 10 ++++++++-- .../scala/sample/cluster/stats/StatsSampleSpec.scala | 10 ++++++++-- .../cluster/stats/japi/StatsSampleJapiSpec.scala | 10 ++++++++-- .../stats/japi/StatsSampleSingleMasterJapiSpec.scala | 10 ++++++++-- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala index 093992c24a..ac3bc8c2e1 100644 --- a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala +++ b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala @@ -80,8 +80,14 @@ abstract class StatsSampleSingleMasterSpec extends MultiNodeSpec(StatsSampleSing Cluster(system) join firstAddress - receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be ( - Set(firstAddress, secondAddress, thirdAddress)) + // FIXME ticket 3239 duplicate MemberUp events, it should be possible to use + // receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be (Set(firstAddress, secondAddress, thirdAddress)) + import akka.actor.Address + @scala.annotation.tailrec def awaitMembersUp(expected: Set[Address], got: Set[Address] = Set.empty): Unit = { + val members = got + expectMsgType[MemberUp].member.address + if (members != expected) awaitMembersUp(expected, members) + } + awaitMembersUp(Set(firstAddress, secondAddress, thirdAddress)) Cluster(system).unsubscribe(testActor) diff --git a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala index 31fdad6607..009a14ace9 100644 --- a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala +++ b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala @@ -97,8 +97,14 @@ abstract class StatsSampleSpec extends MultiNodeSpec(StatsSampleSpecConfig) system.actorOf(Props[StatsWorker], "statsWorker") system.actorOf(Props[StatsService], "statsService") - receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be ( - Set(firstAddress, secondAddress, thirdAddress)) + // FIXME ticket 3239 duplicate MemberUp events, it should be possible to use + // receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be (Set(firstAddress, secondAddress, thirdAddress)) + import akka.actor.Address + @scala.annotation.tailrec def awaitMembersUp(expected: Set[Address], got: Set[Address] = Set.empty): Unit = { + val members = got + expectMsgType[MemberUp].member.address + if (members != expected) awaitMembersUp(expected, members) + } + awaitMembersUp(Set(firstAddress, secondAddress, thirdAddress)) Cluster(system).unsubscribe(testActor) diff --git a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleJapiSpec.scala b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleJapiSpec.scala index 41741d667e..255c22bb4a 100644 --- a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleJapiSpec.scala +++ b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleJapiSpec.scala @@ -82,8 +82,14 @@ abstract class StatsSampleJapiSpec extends MultiNodeSpec(StatsSampleJapiSpecConf system.actorOf(Props[StatsWorker], "statsWorker") system.actorOf(Props[StatsService], "statsService") - receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be ( - Set(firstAddress, secondAddress, thirdAddress)) + // FIXME ticket 3239 duplicate MemberUp events, it should be possible to use + // receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be (Set(firstAddress, secondAddress, thirdAddress)) + import akka.actor.Address + @scala.annotation.tailrec def awaitMembersUp(expected: Set[Address], got: Set[Address] = Set.empty): Unit = { + val members = got + expectMsgType[MemberUp].member.address + if (members != expected) awaitMembersUp(expected, members) + } + awaitMembersUp(Set(firstAddress, secondAddress, thirdAddress)) Cluster(system).unsubscribe(testActor) diff --git a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleSingleMasterJapiSpec.scala b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleSingleMasterJapiSpec.scala index 40e524b343..30c57f5717 100644 --- a/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleSingleMasterJapiSpec.scala +++ b/akka-samples/akka-sample-cluster/src/multi-jvm/scala/sample/cluster/stats/japi/StatsSampleSingleMasterJapiSpec.scala @@ -80,8 +80,14 @@ abstract class StatsSampleSingleMasterJapiSpec extends MultiNodeSpec(StatsSample Cluster(system) join firstAddress - receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be ( - Set(firstAddress, secondAddress, thirdAddress)) + // FIXME ticket 3239 duplicate MemberUp events, it should be possible to use + // receiveN(3).collect { case MemberUp(m) => m.address }.toSet must be (Set(firstAddress, secondAddress, thirdAddress)) + import akka.actor.Address + @scala.annotation.tailrec def awaitMembersUp(expected: Set[Address], got: Set[Address] = Set.empty): Unit = { + val members = got + expectMsgType[MemberUp].member.address + if (members != expected) awaitMembersUp(expected, members) + } + awaitMembersUp(Set(firstAddress, secondAddress, thirdAddress)) Cluster(system).unsubscribe(testActor)