From 27dff556e69d88263a3825858f7c9404e36a9a7c Mon Sep 17 00:00:00 2001 From: Daniel Tavares Agostinho Date: Wed, 28 Feb 2024 14:05:17 +0100 Subject: [PATCH 1/2] added read at start of run and adapted tests --- .../ch/epfl/pop/decentralized/Monitor.scala | 2 + .../epfl/pop/decentralized/MonitorSuite.scala | 39 ++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/be2-scala/src/main/scala/ch/epfl/pop/decentralized/Monitor.scala b/be2-scala/src/main/scala/ch/epfl/pop/decentralized/Monitor.scala index 5b9c040a23..793ab61d7f 100644 --- a/be2-scala/src/main/scala/ch/epfl/pop/decentralized/Monitor.scala +++ b/be2-scala/src/main/scala/ch/epfl/pop/decentralized/Monitor.scala @@ -105,6 +105,8 @@ private class FileMonitor(mediatorRef: ActorRef) extends Runnable { directory.register(watchService, ENTRY_MODIFY) override def run(): Unit = { + // Upon start, we connect to the servers + mediatorRef ! ConnectionMediator.ConnectTo(readServerPeers()) try { while (!Thread.currentThread().isInterrupted) { // Blocks until an event happen diff --git a/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala b/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala index 09ee664941..fcecb737d4 100644 --- a/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala +++ b/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala @@ -105,13 +105,39 @@ class MonitorSuite extends TestKit(ActorSystem("MonitorSuiteActorSystem")) with testProbe.expectMsgType[Monitor.GenerateAndSendHeartbeat](timeout) } - test("monitor should send ConnectTo() requests to ConnectionMediator upon relevant config file change") { + test("monitor should send a ConnectTo() upon creation"){ val mockConnectionMediator = TestProbe() + + // Write to mock server peers config file + val mockConfig = List("mockConfig") + testWriteToServerPeersConfig(mockConfig) + + val monitorRef = system.actorOf(Monitor.props(ActorRef.noSender)) + + // Ping monitor to inform it of ConnectionMediatorRef + mockConnectionMediator.send(monitorRef, ConnectionMediator.Ping()) + + // Expect first read of the server peers list + mockConnectionMediator.expectMsgType[ConnectionMediator.ConnectTo](timeout) + + + } + + test("monitor should send ConnectTo() requests to ConnectionMediator upon relevant config file change besides first read") { + val mockConnectionMediator = TestProbe() + + // Write to mock server peers config file + val mockConfig = List("mockConfig") + testWriteToServerPeersConfig(mockConfig) + val monitorRef = system.actorOf(Monitor.props(ActorRef.noSender)) // Ping monitor to inform it of ConnectionMediatorRef mockConnectionMediator.send(monitorRef, ConnectionMediator.Ping()) + // Expect first read of the server peers list + mockConnectionMediator.expectMsgType[ConnectionMediator.ConnectTo](timeout) + // Expect no message as long as the server peers list is untouched mockConnectionMediator.expectNoMessage(timeout) @@ -121,13 +147,20 @@ class MonitorSuite extends TestKit(ActorSystem("MonitorSuiteActorSystem")) with mockConnectionMediator.expectMsgType[ConnectionMediator.ConnectTo](timeout) } - test("monitor should not react upon non relevant events in config directory") { + test("monitor should not react upon non relevant events in config directory besides first read") { val mockConnectionMediator = TestProbe() val monitorRef = system.actorOf(Monitor.props(ActorRef.noSender)) + // Write to mock server peers config file + val mockConfig = List("mockConfig") + testWriteToServerPeersConfig(mockConfig) + // Ping monitor to inform it of ConnectionMediatorRef mockConnectionMediator.send(monitorRef, ConnectionMediator.Ping()) + // Expect first read of the server peers list + mockConnectionMediator.expectMsgType[ConnectionMediator.ConnectTo](timeout) + // Create new file in the directory val filePath = Path.of(serverPeersListPath).getParent.toString + File.separator + "DELETE_ME" val file = new PrintWriter(filePath) @@ -140,3 +173,5 @@ class MonitorSuite extends TestKit(ActorSystem("MonitorSuiteActorSystem")) with mockConnectionMediator.expectNoMessage(timeout) } } + + From 39c7777aa8b572ab3fdc6c77d6f8dbfbb2eb4b13 Mon Sep 17 00:00:00 2001 From: Daniel Tavares Agostinho Date: Wed, 6 Mar 2024 10:04:21 +0100 Subject: [PATCH 2/2] scalafmt done on all files --- .../test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala b/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala index fcecb737d4..f0321dcf08 100644 --- a/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala +++ b/be2-scala/src/test/scala/ch/epfl/pop/decentralized/MonitorSuite.scala @@ -105,7 +105,7 @@ class MonitorSuite extends TestKit(ActorSystem("MonitorSuiteActorSystem")) with testProbe.expectMsgType[Monitor.GenerateAndSendHeartbeat](timeout) } - test("monitor should send a ConnectTo() upon creation"){ + test("monitor should send a ConnectTo() upon creation") { val mockConnectionMediator = TestProbe() // Write to mock server peers config file @@ -120,7 +120,6 @@ class MonitorSuite extends TestKit(ActorSystem("MonitorSuiteActorSystem")) with // Expect first read of the server peers list mockConnectionMediator.expectMsgType[ConnectionMediator.ConnectTo](timeout) - } test("monitor should send ConnectTo() requests to ConnectionMediator upon relevant config file change besides first read") { @@ -173,5 +172,3 @@ class MonitorSuite extends TestKit(ActorSystem("MonitorSuiteActorSystem")) with mockConnectionMediator.expectNoMessage(timeout) } } - -