package org.jacorb.test.jaco; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.BufferedInputStream; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import org.jacorb.test.harness.TestUtils; import org.junit.Test; /** * @author Alphonse Bendt */ public class JacoTest { @Test public void testStartJaco() throws Exception { File jaco = new File(TestUtils.jacorbHome(), "bin/jaco"); String command = jaco + " " + JacoTestServer.class.getName(); Process process = Runtime.getRuntime().exec(command, new String[] { "CLASSPATH=" + TestUtils.testHome() + "/target/test-classes", "JRE_HOME=" + System.getProperty("java.home") }); try { InputStream in = process.getInputStream(); BufferedInputStream bin = new BufferedInputStream(in); InputStreamReader reader = new InputStreamReader(bin); LineNumberReader lnr = new LineNumberReader(reader); String line = null; long maxWait = System.currentTimeMillis() + 10000; boolean seen = false; StringBuffer out = new StringBuffer(); while( (!seen) && (line = lnr.readLine()) != null && System.currentTimeMillis() < maxWait) { if ("ORB: org.jacorb.orb.ORB".equals(line)) { seen = true; } TestUtils.getLogger().debug(line); out.append(line); out.append('\n'); } if (!seen) { printErr(process); } assertTrue("couldn't start process. buffer: " + out, seen); in.close(); } finally { process.destroy(); } } private void printErr(Process process) throws Exception { InputStream in = process.getErrorStream(); BufferedInputStream bin = new BufferedInputStream(in); InputStreamReader reader = new InputStreamReader(bin); LineNumberReader lnr = new LineNumberReader(reader); String line = null; StringBuffer buffer = new StringBuffer(); while( (line = lnr.readLine()) != null ) { buffer.append(line); buffer.append('\n'); } System.err.println(buffer); fail(buffer.toString()); } }