From 57d384561a17b34e7af6a3d006e61aa5d5523c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Akg=C3=BCn?= Date: Tue, 9 Apr 2024 16:53:11 +0100 Subject: [PATCH] stats.json reorg --- src/Conjure/UI/SolveStats.hs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Conjure/UI/SolveStats.hs b/src/Conjure/UI/SolveStats.hs index aeb66a33c..f81d589b4 100644 --- a/src/Conjure/UI/SolveStats.hs +++ b/src/Conjure/UI/SolveStats.hs @@ -66,8 +66,7 @@ instance FromJSON SavileRowLogs where parseJSON = genericParseJSON jsonOptions mkSolveStats :: UI -> (Int, Text, Text) -> String -> String -> IO SolveStats mkSolveStats Solve {..} (exitCodeSR, stdoutSR, stderrSR) savilerowInfoText runsolverInfoText = do - let - combinedSR = T.unlines [stdoutSR, stderrSR] + let combinedSR = T.unlines [stdoutSR, stderrSR] savilerowInfo = M.fromList [(k, v) | [k, v] <- map (splitOn ":") (lines savilerowInfoText)] @@ -87,22 +86,34 @@ mkSolveStats Solve {..} (exitCodeSR, stdoutSR, stderrSR) savilerowInfoText runso "Error: syntax error, unexpected ]]", -- cplex "*** Check failure stack trace: ***", -- or-tools "Error: evaluation error: Index set mismatch.", - "Maximum memory exceeded", -- for when runsolver prints this message but won't set MEMOUT=true for some reason "Savile Row killed by: java.lang.AssertionError", "java.lang.ClassCastException" ] ] = Error - | T.isInfixOf "java.lang.OutOfMemoryError" combinedSR = MemOut - | T.isInfixOf "Out of Memory" combinedSR = MemOut - | T.isInfixOf "Savile Row timed out." combinedSR = TimeOut - | T.isInfixOf "time out: time limit reached" combinedSR = TimeOut + | or + [ T.isInfixOf msg combinedSR + | msg <- + [ "java.lang.OutOfMemoryError", + "ERROR: Out of Memory", + "Maximum memory exceeded" -- for when runsolver prints this message but won't set MEMOUT=true for some reason + ] + ] = + MemOut + | or + [ T.isInfixOf msg combinedSR + | msg <- + [ "Savile Row timed out.", + "time out: time limit reached" + ] + ] = + TimeOut | T.isInfixOf "ERROR: In statement: where false" combinedSR = Invalid + | M.lookup "MEMOUT" runsolverInfo == Just "true" = MemOut + | M.lookup "TIMEOUT" runsolverInfo == Just "true" = TimeOut | M.lookup "SavileRowTimeOut" savilerowInfo == Just "1" = TimeOut | M.lookup "SavileRowClauseOut" savilerowInfo == Just "1" = TimeOut | M.lookup "SolverTimeOut" savilerowInfo == Just "1" = TimeOut - | M.lookup "MEMOUT" runsolverInfo == Just "true" = MemOut - | M.lookup "TIMEOUT" runsolverInfo == Just "true" = TimeOut | exitCodeSR /= 0 = Error | otherwise = OK