From a5e82a2a703fd31cac33cef4bbe07445a274ba71 Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Fri, 5 Apr 2019 16:55:13 -0400 Subject: Fix so minizinc works in windows Issue-ID: OPTFRA-458 Change-Id: Id63558456a13a31284f12007587706c66508512f Signed-off-by: Jerry Flood --- cmso-optimizer/etc/config/optimizer.properties | 1 + cmso-optimizer/scripts/minizinc/run.bat | 2 +- .../clients/optimizer/OptimizerClient.java | 21 +++++++-------------- 3 files changed, 9 insertions(+), 15 deletions(-) (limited to 'cmso-optimizer') diff --git a/cmso-optimizer/etc/config/optimizer.properties b/cmso-optimizer/etc/config/optimizer.properties index 653d21b..e3ab89a 100644 --- a/cmso-optimizer/etc/config/optimizer.properties +++ b/cmso-optimizer/etc/config/optimizer.properties @@ -56,3 +56,4 @@ cmso.minizinc.command.exe="C:/Program Files/MiniZinc IDE (bundled)/minizinc.exe" cmso.minizinc.command.solver=OSICBC cmso.minizinc.command.timelimit=60000 cmso.minizinc.command.mzn=scripts/minizinc/generic_attributes.mzn +cmso.minizinc.command.commandline=cmd.exe /C scripts\\minizinc\\run.bat \ No newline at end of file diff --git a/cmso-optimizer/scripts/minizinc/run.bat b/cmso-optimizer/scripts/minizinc/run.bat index dc40503..8c07b3c 100644 --- a/cmso-optimizer/scripts/minizinc/run.bat +++ b/cmso-optimizer/scripts/minizinc/run.bat @@ -1 +1 @@ -%MINIZINC% --solver %MINIZINC_SOLVER% --time-limit %MINIZINC_TIMELIMIT% --soln-sep "" --search-complete-msg "" -o %MINIZINC_OUTPUT% %MINIZINC_MZN% %MINIZINC_DZN% \ No newline at end of file +%MINIZINC% --solver %MINIZINC_SOLVER% --time-limit %MINIZINC_TIMELIMIT% --soln-sep "" --search-complete-msg "" -o "%MINIZINC_OUTPUT%" "%MINIZINC_MZN%" "%MINIZINC_DZN%" \ No newline at end of file diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/clients/optimizer/OptimizerClient.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/clients/optimizer/OptimizerClient.java index 9f2f8e6..b382278 100644 --- a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/clients/optimizer/OptimizerClient.java +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/clients/optimizer/OptimizerClient.java @@ -32,7 +32,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.text.ParseException; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -214,33 +213,26 @@ public class OptimizerClient { Path outputFileName = Paths.get(workingFolder.getAbsolutePath(), "results.yaml"); String dzn = request.toMiniZinc(); Files.write(inputFileName, dzn.getBytes()); - Map environment = new HashMap<>(); ProcessBuilder processBuilder = buildCommand(inputFileName, outputFileName, timeLimit.toString()); process = processBuilder.start(); - //debug.debug("engine command=" + commandString); + // debug.debug("engine command=" + commandString); String stdout = IOUtils.toString(process.getInputStream(), "UTF-8"); String stderr = IOUtils.toString(process.getErrorStream(), "UTF-8"); debug.debug("stdout=" + stdout); debug.debug("stderr=" + stderr); - if (process.isAlive()) { - process.wait(); - } OptimizerResponseUtility responseUtility = new OptimizerResponseUtility(); OptimizerResults optimizerResults = responseUtility.parseOptimizerResult(outputFileName.toFile()); apiResponse.setOptimizerResults(optimizerResults); apiResponse.setStatus(OptimizerEngineResponseStatus.COMPLETED); - } catch (InterruptedException e) { - apiResponse.setStatus(OptimizerEngineResponseStatus.FAILED); - apiResponse.setErrorMessage( - LogMessages.OPTIMIZER_REQUEST_TIMEOUT.format(uuid.toString(), timeLimit.toString())); - Observation.report(LogMessages.OPTIMIZER_REQUEST_TIMEOUT, uuid.toString(), timeLimit.toString()); - process.destroyForcibly(); } catch (Exception e) { apiResponse.setStatus(OptimizerEngineResponseStatus.FAILED); apiResponse.setErrorMessage(LogMessages.UNEXPECTED_EXCEPTION.format(e.getMessage())); Observation.report(LogMessages.UNEXPECTED_RESPONSE, e, e.getMessage()); } finally { + if (process.isAlive()) { + process.destroyForcibly(); + } if (workingFolder.exists()) { workingFolder.delete(); } @@ -251,7 +243,8 @@ public class OptimizerClient { private ProcessBuilder buildCommand(Path inputFileName, Path outputFileName, String timeLimit) { ProcessBuilder processBuilder = new ProcessBuilder(); List command = new ArrayList<>(); - String commandline = env.getProperty("cmso.minizinc.command.commandline", "/bin/bash -x scripts/minizinc/run.sh"); + String commandline = + env.getProperty("cmso.minizinc.command.commandline", "/bin/bash -x scripts/minizinc/run.sh"); String minizinc = env.getProperty("cmso.minizinc.command.exe", "minizinc"); String solver = env.getProperty("cmso.minizinc.command.solver", "OSICBC"); String script = env.getProperty("cmso.minizinc.command.mzn", "scripts/minizinc/generic_attributes.mzn"); @@ -263,7 +256,7 @@ public class OptimizerClient { environment.put("MINIZINC_MZN", script); environment.put("MINIZINC_DZN", inputFileName.toString()); for (String arg : commandline.split(" ")) { - command.add(arg); + command.add(arg); } processBuilder.command(command); return processBuilder; -- cgit 1.2.3-korg