Improve diagnostics when run does not produce expected logging

pull/32747/head
Andy Wilkinson 2 years ago
parent 84a25c7dcf
commit 8a93abfaaa

@ -21,6 +21,7 @@ import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -133,8 +134,10 @@ public class ApplicationRunner extends DefaultTask {
private void awaitLogging(Process process) { private void awaitLogging(Process process) {
long end = System.currentTimeMillis() + 30000; long end = System.currentTimeMillis() + 30000;
String expectedLogging = this.expectedLogging.get(); String expectedLogging = this.expectedLogging.get();
List<String> outputLines = Collections.emptyList();
while (System.currentTimeMillis() < end) { while (System.currentTimeMillis() < end) {
for (String line : outputLines()) { outputLines = outputLines();
for (String line : outputLines) {
if (line.contains(expectedLogging)) { if (line.contains(expectedLogging)) {
return; return;
} }
@ -143,7 +146,10 @@ public class ApplicationRunner extends DefaultTask {
throw new IllegalStateException("Process exited before '" + expectedLogging + "' was logged"); throw new IllegalStateException("Process exited before '" + expectedLogging + "' was logged");
} }
} }
throw new IllegalStateException("'" + expectedLogging + "' was not logged within 30 seconds"); StringBuilder message = new StringBuilder(
"After 30 seconds '" + expectedLogging + "' had not be logged in the following output:\n\n");
outputLines.forEach((line) -> message.append(line).append("\n"));
throw new IllegalStateException(message.toString());
} }
private List<String> outputLines() { private List<String> outputLines() {

Loading…
Cancel
Save