diff --git a/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java b/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java index bc3d8810a570fa4edee155a745f8ba12b6bb73b9..e50d913587ac7212ab39ecae67a7d43fafb62b8b 100644 --- a/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java +++ b/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java @@ -60,6 +60,8 @@ public class LogFileParser { private static final Logger LOGGER = Logger.getLogger(LogFileParser.class.getName()); + private static final long MAX_FILE_SIZE = 200 * 1024 * 1024; + private RPackageTestRun pkg; private BufferedReader reader; private Line curLine; @@ -95,28 +97,33 @@ public class LogFileParser { } public LogFile parseLogFile() throws IOException { - try (BufferedReader r = Files.newBufferedReader(logFile.path)) { - this.reader = r; - consumeLine(); + long size = Files.size(logFile.path); + if (size <= MAX_FILE_SIZE) { + try (BufferedReader r = Files.newBufferedReader(logFile.path)) { + this.reader = r; + consumeLine(); - Section installTest0 = parseInstallTest(); - logFile.addSection(installTest0); - if (!installTest0.isSuccess()) { - return logFile; - } - Section installTest1 = parseInstallTest(); - logFile.addSection(installTest1); - if (installTest1.isSuccess()) { - logFile.addSection(parseCheckResults()); + Section installTest0 = parseInstallTest(); + logFile.addSection(installTest0); + if (!installTest0.isSuccess()) { + return logFile; + } + Section installTest1 = parseInstallTest(); + logFile.addSection(installTest1); + if (installTest1.isSuccess()) { + logFile.addSection(parseCheckResults()); + } + TestResult overallResult = parseOverallStatus(); + logFile.setSuccess(overallResult.toBoolean()); + + // In the end, a recursive diff is executed which might produce error messages. + collectBody(); + expectEOF(); + } finally { + this.reader = null; } - TestResult overallResult = parseOverallStatus(); - logFile.setSuccess(overallResult.toBoolean()); - - // In the end, a recursive diff is executed which might produce error messages. - collectBody(); - expectEOF(); - } finally { - this.reader = null; + } else { + LOGGER.severe(String.format("Cannot analyze %s, file is too large (%d bytes, max=%d bytes)", logFile.path, size, MAX_FILE_SIZE)); } return logFile; }