diff --git a/be2-scala/src/main/scala/ch/epfl/pop/pubsub/graph/handlers/ProcessMessagesHandler.scala b/be2-scala/src/main/scala/ch/epfl/pop/pubsub/graph/handlers/ProcessMessagesHandler.scala index a6c5e446ba..083ec4386b 100644 --- a/be2-scala/src/main/scala/ch/epfl/pop/pubsub/graph/handlers/ProcessMessagesHandler.scala +++ b/be2-scala/src/main/scala/ch/epfl/pop/pubsub/graph/handlers/ProcessMessagesHandler.scala @@ -50,7 +50,8 @@ object ProcessMessagesHandler extends AskPatternConstants { } def rumorHandler(messageRegistry: MessageRegistry, rumor: Rumor)(implicit system: ActorSystem): Boolean = { - true + val msgMap = rumor.messages.map((chan, list) => (chan, list.toSet)) + processMsgMap(msgMap, messageRegistry) } private def processMsgMap(msgMap: Map[Channel, Set[Message]], messageRegistry: MessageRegistry)(implicit system: ActorSystem): Boolean = { diff --git a/be2-scala/src/test/scala/ch/epfl/pop/pubsub/graph/handlers/RumorHandlerSuite.scala b/be2-scala/src/test/scala/ch/epfl/pop/pubsub/graph/handlers/RumorHandlerSuite.scala index 23b85e06eb..9e91b1e3d8 100644 --- a/be2-scala/src/test/scala/ch/epfl/pop/pubsub/graph/handlers/RumorHandlerSuite.scala +++ b/be2-scala/src/test/scala/ch/epfl/pop/pubsub/graph/handlers/RumorHandlerSuite.scala @@ -124,4 +124,26 @@ class RumorHandlerSuite extends TestKit(ActorSystem("RumorActorSuiteActorSystem" case _ => 1 shouldBe 0 } + // https://github.com/dedis/popstellar/issues/1870 + /*test("rumor handler should process messages received in a rumor") { + val dbRef = PublishSubscribe.getDbActorRef + val output = Source.single(Right(rumorRequest)).via(rumorHandler).runWith(Sink.head) + + val outputResult = Await.result(output, processDuration) + + val ask = dbActorRef ? DbActor.GetAllChannels() + val channelsInDb = Await.result(ask, MAX_TIME) match { + case DbActor.DbActorGetAllChannelsAck(channels) => channels + case err @ _ => Matchers.fail(err.toString) + } + + val channelsInRumor = rumor.messages.keySet + channelsInRumor.diff(channelsInDb) should equal(Set.empty) + + val messagesInDb: Set[Message] = channelsInDb.foldLeft(Set.empty: Set[Message])((acc, channel) => acc ++ getMessages(channel)) + val messagesInRumor = rumor.messages.values.foldLeft(Set.empty: Set[Message])((acc, set) => acc ++ set) + + messagesInRumor.diff(messagesInDb) should equal(Set.empty) + }*/ + }