From 7a434c39851a8a72ef2973f6c2a236c264d9b87f Mon Sep 17 00:00:00 2001 From: zentol Date: Tue, 14 Nov 2017 11:55:33 +0100 Subject: [PATCH] [FLINK-8070][yarn][tests] Print errors found in log files This closes #5012. --- .../org/apache/flink/yarn/YarnTestBase.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/flink-yarn-tests/src/test/java/org/apache/flink/yarn/YarnTestBase.java b/flink-yarn-tests/src/test/java/org/apache/flink/yarn/YarnTestBase.java index a701c909c205c..4fc41c45b2ffe 100644 --- a/flink-yarn-tests/src/test/java/org/apache/flink/yarn/YarnTestBase.java +++ b/flink-yarn-tests/src/test/java/org/apache/flink/yarn/YarnTestBase.java @@ -69,6 +69,7 @@ import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -307,6 +308,7 @@ public static void ensureNoProhibitedStringInLogFiles(final String[] prohibited, Assert.assertTrue("Expecting directory " + cwd.getAbsolutePath() + " to exist", cwd.exists()); Assert.assertTrue("Expecting directory " + cwd.getAbsolutePath() + " to be a directory", cwd.isDirectory()); + List prohibitedExcerpts = new ArrayList<>(); File foundFile = findFile(cwd.getAbsolutePath(), new FilenameFilter() { @Override public boolean accept(File dir, String name) { @@ -331,6 +333,24 @@ public boolean accept(File dir, String name) { // logging in FATAL to see the actual message in TRAVIS tests. Marker fatal = MarkerFactory.getMarker("FATAL"); LOG.error(fatal, "Prohibited String '{}' in line '{}'", aProhibited, lineFromFile); + + StringBuilder logExcerpt = new StringBuilder(); + + logExcerpt.append(System.lineSeparator()); + logExcerpt.append(lineFromFile); + logExcerpt.append(System.lineSeparator()); + // extract potential stack trace from log + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + if (!line.isEmpty() && (Character.isWhitespace(line.charAt(0)) || line.startsWith("Caused by"))) { + logExcerpt.append(line); + logExcerpt.append(System.lineSeparator()); + } else { + break; + } + } + prohibitedExcerpts.add(logExcerpt.toString()); + return true; } } @@ -355,7 +375,9 @@ public boolean accept(File dir, String name) { while (scanner.hasNextLine()) { LOG.warn("LINE: " + scanner.nextLine()); } - Assert.fail("Found a file " + foundFile + " with a prohibited string: " + Arrays.toString(prohibited)); + Assert.fail( + "Found a file " + foundFile + " with a prohibited string (one of " + Arrays.toString(prohibited) + "). " + + "Excerpts:" + System.lineSeparator() + prohibitedExcerpts); } }