package hudson.console; import hudson.model.Computer; import hudson.model.Run; import hudson.slaves.SlaveComputer; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.TestExtension; import java.io.IOException; import java.io.OutputStream; /** * @author Kohsuke Kawaguchi */ public class ConsoleLogFilterTest extends Assert { @Rule public JenkinsRule r = new JenkinsRule(); /** * Checks */ @Issue("JENKINS-30777") @Test public void decorateSlaveLog() throws Exception { SlaveComputer c = r.createSlave().getComputer(); c.connect(false).get(); assertTrue(c.getLog().contains("[["+c.getName()+"]] ")); } @TestExtension public static class Impl extends ConsoleLogFilter { @Override public OutputStream decorateLogger(Run build, OutputStream logger) throws IOException, InterruptedException { return logger; } @Override public OutputStream decorateLogger(final Computer c, final OutputStream out) throws IOException, InterruptedException { return new LineTransformationOutputStream() { @Override protected void eol(byte[] b, int len) throws IOException { out.write(("[["+c.getName()+"]] ").getBytes()); out.write(b, 0, len); } }; } } }