You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2018/05/17 06:08:32 UTC
[02/13] flink git commit: [FLINK-9357][tests][yarn] Add margins to
exception excerpts
[FLINK-9357][tests][yarn] Add margins to exception excerpts
This closes #6009.
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/254724e7
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/254724e7
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/254724e7
Branch: refs/heads/master
Commit: 254724e7603df189fea07b20eeff5a3620b5d841
Parents: cddb65a
Author: zentol <ch...@apache.org>
Authored: Fri May 11 22:09:21 2018 +0200
Committer: zentol <ch...@apache.org>
Committed: Wed May 16 20:21:58 2018 +0200
----------------------------------------------------------------------
.../org/apache/flink/yarn/YarnTestBase.java | 54 ++++++++++++++++++--
1 file changed, 49 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/254724e7/flink-yarn-tests/src/test/java/org/apache/flink/yarn/YarnTestBase.java
----------------------------------------------------------------------
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 c4e498e..bfb8c3d 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
@@ -336,7 +336,7 @@ public abstract class YarnTestBase extends TestLogger {
// scan each file for prohibited strings.
File f = new File(dir.getAbsolutePath() + "/" + name);
try {
- Scanner scanner = new Scanner(f);
+ BufferingScanner scanner = new BufferingScanner(new Scanner(f), 10);
while (scanner.hasNextLine()) {
final String lineFromFile = scanner.nextLine();
for (String aProhibited : prohibited) {
@@ -358,15 +358,26 @@ public abstract class YarnTestBase extends TestLogger {
StringBuilder logExcerpt = new StringBuilder();
logExcerpt.append(System.lineSeparator());
+
+ // include some previous lines in case of irregular formatting
+ for (String previousLine : scanner.getPreviousLines()) {
+ logExcerpt.append(previousLine);
+ 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 {
+ logExcerpt.append(line);
+ logExcerpt.append(System.lineSeparator());
+ if (line.isEmpty() || (!Character.isWhitespace(line.charAt(0)) && !line.startsWith("Caused by"))) {
+ // the cause has been printed, now add a few more lines in case of irregular formatting
+ for (int x = 0; x < 10 && scanner.hasNextLine(); x++) {
+ logExcerpt.append(scanner.nextLine());
+ logExcerpt.append(System.lineSeparator());
+ }
break;
}
}
@@ -868,4 +879,37 @@ public abstract class YarnTestBase extends TestLogger {
public static boolean isOnTravis() {
return System.getenv("TRAVIS") != null && System.getenv("TRAVIS").equals("true");
}
+
+ /**
+ * Wrapper around a {@link Scanner} that buffers the last N lines read.
+ */
+ private static class BufferingScanner {
+
+ private final Scanner scanner;
+ private final int numLinesBuffered;
+ private final List<String> bufferedLines;
+
+ BufferingScanner(Scanner scanner, int numLinesBuffered) {
+ this.scanner = scanner;
+ this.numLinesBuffered = numLinesBuffered;
+ this.bufferedLines = new ArrayList<>(numLinesBuffered);
+ }
+
+ public boolean hasNextLine() {
+ return scanner.hasNextLine();
+ }
+
+ public String nextLine() {
+ if (bufferedLines.size() == numLinesBuffered) {
+ bufferedLines.remove(0);
+ }
+ String line = scanner.nextLine();
+ bufferedLines.add(line);
+ return line;
+ }
+
+ public List<String> getPreviousLines() {
+ return new ArrayList<>(bufferedLines);
+ }
+ }
}