From 5e93526d756becaeacec2e942351a93f95fcd3a9 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Wed, 14 Dec 2016 15:32:33 +0100
Subject: [PATCH] fix problem with akka + stop actors when received experiments
 results + add integration test draft

---
 .../java/eu/hbp/mip/akka/ExperimentActor.java     | 12 ++++++------
 src/main/resources/application.conf               | 11 ++++++-----
 tests/integration/algorithmsFactory/test.sh       | 15 ++++++++++++++-
 3 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
index 3c1e2b869..270af74d1 100644
--- a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
+++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
@@ -31,23 +31,23 @@ public class ExperimentActor extends UntypedActor {
 
     @Override
     public void onReceive(Object message) {
-        log.info("\n\n***** ExperimentActor received response from woken\n");
+        log.info("ActorExperiment - onReceive method has been called");
         UUID uuid = UUID.fromString(this.getSelf().path().name());
+        log.info("\n\nExperimentActor received response from woken for UUID: \n"+uuid.toString());
         if (message instanceof QueryResult) {
             QueryResult queryResult = (QueryResult) message;
-            log.info("received query result for : " + uuid.toString());
             Experiment experiment = experimentRepository.findOne(uuid);
             if(experiment == null)
             {
                 log.error("Experiment with UUID="+uuid+" not found in DB");
-                // getContext().stop(getSelf());
+                getContext().stop(getSelf());
                 return;
             }
             experiment.setResult(queryResult.data().get());
             experiment.setFinished(new Date());
             experimentRepository.save(experiment);
             log.info("Experiment "+ uuid +" updated (finished)");
-            // getContext().stop(getSelf());
+            getContext().stop(getSelf());
         }
 
         else if (message instanceof QueryError) {
@@ -57,7 +57,7 @@ public class ExperimentActor extends UntypedActor {
             if(experiment == null)
             {
                 log.error("Experiment with UUID="+uuid+" not found in DB");
-                // getContext().stop(getSelf());
+                getContext().stop(getSelf());
                 return;
             }
             experiment.setHasServerError(true);
@@ -66,7 +66,7 @@ public class ExperimentActor extends UntypedActor {
             experiment.setFinished(new Date());
             experimentRepository.save(experiment);
             log.info("Experiment "+ uuid +" updated (finished)");
-            // getContext().stop(getSelf());
+            getContext().stop(getSelf());
         }
 
         else {
diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf
index 8f70ec42e..e2f86816c 100644
--- a/src/main/resources/application.conf
+++ b/src/main/resources/application.conf
@@ -2,7 +2,7 @@ akka {
   actor {
     provider = "akka.remote.RemoteActorRefProvider"
   }
-  loglevel = DEBUG
+  loglevel = INFO
   log-config-on-start = on
   debug {
     autoreceive = on
@@ -12,19 +12,20 @@ akka {
     event-stream = on
   }
   remote {
+    maximum-payload-bytes = 10000000 bytes
     log-sent-messages = on
     log-received-messages = on
     enabled-transports = ["akka.remote.netty.tcp"]
     netty.tcp {
+      message-frame-size =  10000000b
+      send-buffer-size =  10000000b
+      receive-buffer-size =  10000000b
+      maximum-frame-size = 10000000b
       hostname = 127.0.0.1          # external (logical) hostname
       port = 8089                   # external (logical) port
 
       bind-hostname = 0.0.0.0       # internal (bind) hostname
       bind-port = 8089              # internal (bind) port
     }
-    message-frame-size =  10000000b
-    send-buffer-size =  10000000b
-    receive-buffer-size =  10000000b
-    maximum-frame-size = 10000000b
   }
 }
\ No newline at end of file
diff --git a/tests/integration/algorithmsFactory/test.sh b/tests/integration/algorithmsFactory/test.sh
index 2f75b0295..6e21e6285 100755
--- a/tests/integration/algorithmsFactory/test.sh
+++ b/tests/integration/algorithmsFactory/test.sh
@@ -1,4 +1,17 @@
 #!/usr/bin/env bash
 
+# Create some test models
+echo ""
+echo "Creating some models..."
 curl http://backend:8080/services/models -X POST -H "Content-Type: application/json" -d @model1.json
-curl http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery1.json
+curl http://backend:8080/services/models -X POST -H "Content-Type: application/json" -d @model2.json
+
+# Run some experiments
+echo ""
+echo "Run some experiments..."
+response=$(curl -s http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery1.json)
+echo "exp1: $response"
+response=$(curl -s http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery2.json)
+echo "exp2: $response"
+response=$(curl -s http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery3.json)
+echo "exp3: $response"
\ No newline at end of file
-- 
GitLab