diff --git a/utils/src/main/java/com/cloud/utils/script/OutputInterpreter.java b/utils/src/main/java/com/cloud/utils/script/OutputInterpreter.java index 03a9f548236..d54d411e69e 100644 --- a/utils/src/main/java/com/cloud/utils/script/OutputInterpreter.java +++ b/utils/src/main/java/com/cloud/utils/script/OutputInterpreter.java @@ -137,6 +137,11 @@ public abstract class OutputInterpreter { public String getLines() { return allLines; } + + @Override + public boolean drain() { + return true; + } } public static class LineByLineOutputLogger extends OutputInterpreter { diff --git a/utils/src/test/java/com/cloud/utils/ScriptTest.java b/utils/src/test/java/com/cloud/utils/ScriptTest.java index 12963dc2637..e624ffc5e7f 100644 --- a/utils/src/test/java/com/cloud/utils/ScriptTest.java +++ b/utils/src/test/java/com/cloud/utils/ScriptTest.java @@ -111,6 +111,20 @@ public class ScriptTest { Assert.assertNotNull(value); } + @Test + public void executeWithOutputInterpreterAllLinesParserLargeOutput() { + Assume.assumeTrue(SystemUtils.IS_OS_LINUX); + OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser(); + Script script = new Script("seq"); + script.add("-f"); + script.add("my text to test cloudstack %g"); + script.add("4096"); // AllLinesParser doesn't work with that amount of data + String value = script.execute(parser); + // it is a stack trace in this case as string + Assert.assertNull(value); + Assert.assertEquals(129965, parser.getLines().length()); + } + @Test public void runSimpleBashScriptNotExisting() { Assume.assumeTrue(SystemUtils.IS_OS_LINUX);