requests-simulator

added shutdown hook to write log

5/19/2019 5:29:22 AM

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/requestssimulator/Simulator.java b/src/main/java/br/ufrgs/inf/prosoft/requestssimulator/Simulator.java
index 4792b02..f82b4cc 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/requestssimulator/Simulator.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/requestssimulator/Simulator.java
@@ -40,6 +40,12 @@ public class Simulator {
     public static final void simulate(Profile profile, long time, int users, String logPath) {
         Collection<Thread> threads = new ArrayList<>();
         List<List<List<JsonObject>>> logs = new ArrayList<>();
+        Runtime.getRuntime().addShutdownHook(new Thread() {
+            @Override
+            public void run() {
+                writeLog(logPath, logs);
+            }
+        });
         for (int i = 0; i < users; i++) {
             Thread thread = new Thread(() -> {
                 profile.run(time);
@@ -56,7 +62,12 @@ public class Simulator {
                 LOGGER.log(Level.SEVERE, null, ex);
             }
         });
+        writeLog(logPath, logs);
+    }
+
+    private static void writeLog(String logPath, List<List<List<JsonObject>>> logs) {
         if (logPath != null) {
+            LOGGER.log(Level.INFO, "writing log");
             Gson gson = new GsonBuilder().setPrettyPrinting().create();
             try (Writer writer = new FileWriter(logPath)) {
                 gson.toJson(logs, writer);