diff --git a/README.md b/README.md index 99ba4d1..edd56a1 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ LogServer-actorn finns under: [server/src/main/scala/se/callista/loganalyzer/ser Använd följande kommando för att verifiera att LogServer tar emot LogMessage-objekt: `sbt 'server/test-only se.callista.loganalyzer.server.LogServerSuite'` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task1/server/src/main/scala/se/callista/loganalyzer/server/LogServer.scala) + ### Start-scripts #### Generera startscripts @@ -53,6 +55,8 @@ LogAgent-actorn finns under: [agent/src/main/scala/se/callista/loganalyzer/agent Använd följande kommando för att verifiera att LogAgent fungerar enligt kraven ovan: `sbt 'agent/test-only se.callista.loganalyzer.agent.LogAgentSuite'` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task1/agent/src/main/scala/se/callista/loganalyzer/agent/LogAgent.scala) + ### Testa hela flödet Kompilera koden med kommandot: `sbt compile` @@ -80,6 +84,8 @@ För att se hur väl våra webbservrar fungerar vill vi sätta upp en dashboard 2. ClientError om HTTP-status är 400-499 3. ServerError om HTTP-status är över 500 +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task2/server/src/main/scala/se/callista/loganalyzer/server/LogServer.scala) + ### Uppdatera StatusCounter 1. Ta emot LogMessage objekt 2. Räkna upp med ett varje gång en logg kommer in @@ -88,6 +94,8 @@ För att se hur väl våra webbservrar fungerar vill vi sätta upp en dashboard Använd följande kommando för att verifiera att StatusCountern fungerar: `sbt 'server/test-only se.callista.loganalyzer.server.StatusCounterSuite'` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task3/server/src/main/scala/se/callista/loganalyzer/server/StatusCounter.scala) + ### Testa hela flödet Kompilera genom att köra kommandot: `sbt compile` @@ -107,6 +115,8 @@ Vi kommer i detta steg spara ner alla logg-meddelanden till en databas. Då data 1. Skapa en DatabaseWorker-actor. 2. Forwarda alla logg-meddelanden till DatabaseWorker-actorn. Använd `actorReferens.forward([meddelande])` för att vidarebefordra meddelande och behålla referens till actorn som skickade meddelandet från början. +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task3/server/src/main/scala/se/callista/loganalyzer/server/LogServer.scala) + ### Uppdatera DatabaseWorker 1. Ta emot LogMessage objekt 2. Spara logg-meddelanden(LogMessage) till databasen. `database.save([hostname], [löpnummer], [AccessLog])` @@ -117,6 +127,8 @@ DatabaseWorker-actorn finns under: [server/src/main/scala/se/callista/loganalyze Använd följande kommando för att verifiera att DatabaseWorkern fungerar som förväntat: `sbt 'server/test-only se.callista.loganalyzer.server.DatabaseWorkerSuite'` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task3/server/src/main/scala/se/callista/loganalyzer/server/DatabaseWorker.scala) + ### Testa hela flödet Kompilera om och starta server och agent igen. @@ -133,6 +145,8 @@ override val supervisorStrategy = OneForOneStrategy() { } ``` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task4/server/src/main/scala/se/callista/loganalyzer/server/LogServer.scala) + Om fel uppstår i databasen på serversidan eller om loggmeddelanden försvinner på väg till servern vill vi på agent-sidan ha möjlighet att skicka om dessa. Detta kan göras genom att inom en viss tidsperiod kontrollera om ett bekräftelsemeddelande (ConfirmationMessage) för ett loggmeddelande inkommit från servern. Om detta inte skett, skicka om loggmeddelandet med samma löpnummer. Vi vill att alla meddelanden ska skickas **minst** en gång ( *at-least-once* ) . Tips på lösning: @@ -161,6 +175,7 @@ map.foreach { case (key, value) => funktion(key, value) } Använd följande kommando för att verifiera att LogAgent skickar om meddelanden inom fem sekunder: `sbt 'agent/test-only se.callista.loganalyzer.agent.LogAgentResendSuite'` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task4/agent/src/main/scala/se/callista/loganalyzer/agent/LogAgent.scala) (Extra) Uppgift 5: Räkna inte omsändningar av logg-meddelanden --------------------- @@ -170,6 +185,7 @@ När en skrivning till databasen fallerar och omsändning sker från LogAgenten Använd följande kommando för att verifiera att StatusCountern nu inte räknar upp samma loggmeddelande två gånger: `sbt 'server/test-only se.callista.loganalyzer.server.StatusCounterIdempotentSuite'` +[*Exempel på lösning*](https://github.com/callistaenterprise/akka-cadec-2013/blob/task5/server/src/main/scala/se/callista/loganalyzer/server/StatusCounter.scala) --- *Tutorialen är skapad av Albert Örwall och Pär Wenåker för Cadec 2013 som arrangeras av [Callista Enterprise AB](http://callistaenterprise.se/).*