diff --git a/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java b/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java index 40d0bc75e79f06703a3c5e2b43582dde70b6d6ac..805ff1a2a1b7d6082ee81d9a1e2e611a38d90749 100644 --- a/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java +++ b/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java @@ -16,6 +16,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -88,7 +89,18 @@ public class FullBenchmarkMain { pb.redirectError(ProcessBuilder.Redirect.INHERIT); pb.directory(currentDir); Process p = pb.start(); - p.waitFor(); + boolean finishedInTime = p.waitFor(settings.basic.timeoutValue * 2, + TimeUnit.valueOf(settings.basic.timeoutUnit)); + if(!finishedInTime) { + p.destroy(); + p.destroyForcibly(); + // wait for the process to actually end + p.waitFor(); + // skip remaining repetitions, as this timeout is considered as an error + if (settings.skipOnError) { + continue nextSolver; + } + } } catch (IOException | InterruptedException e) { e.printStackTrace(); if (settings.skipOnError) {