From 6bb79487bb8690d2880771df44d509fc441ece6c Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Thu, 13 Jun 2013 16:53:10 +0100 Subject: [PATCH] JAL-1315 test for exit and successful generation of EPS using commandline --- test/jalview/bin/CommandLineOperations.java | 79 +++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 test/jalview/bin/CommandLineOperations.java diff --git a/test/jalview/bin/CommandLineOperations.java b/test/jalview/bin/CommandLineOperations.java new file mode 100644 index 0000000..19bc165 --- /dev/null +++ b/test/jalview/bin/CommandLineOperations.java @@ -0,0 +1,79 @@ +package jalview.bin; + +import static org.junit.Assert.*; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class CommandLineOperations +{ + + @BeforeClass + public static void setUpBeforeClass() throws Exception + { + } + + @AfterClass + public static void tearDownAfterClass() throws Exception + { + } +/*** + * from http://stackoverflow.com/questions/808276/how-to-add-a-timeout-value-when-using-javas-runtime-exec + * @author jimp + * + */ +private static class Worker extends Thread { + private final Process process; + private Integer exit; + private Worker(Process process) { + this.process = process; + } + public void run() { + try { + exit = process.waitFor(); + } catch (InterruptedException ignore) { + return; + } + } +} + @Test + public void testHeadlessModeEPS() throws Exception + { + String jalview_input = "examples/uniref50.fa"; + String jalview_output = "test_uniref50_out.eps"; + String cmd = "java -Djava.awt.headless=true -Djava.ext.dirs=./lib -classpath ./classes jalview.bin.Jalview -nodisplay -open "+ jalview_input + " -eps " + jalview_output; + + System.out.println("###############Jalview CMD: " + cmd); + Process ls2_proc = Runtime.getRuntime().exec(cmd); + BufferedReader outputReader = new BufferedReader(new InputStreamReader(ls2_proc.getInputStream())); + + BufferedReader errorReader = new BufferedReader(new InputStreamReader(ls2_proc.getErrorStream())); + Worker worker = new Worker(ls2_proc); + worker.start(); + worker.join(9000); + System.out.println("Output: "); + String ln=null; + while ((ln=outputReader.readLine())!=null) { + System.out.println(ln); + } + + System.out.println("Error: " ); + while ((ln=errorReader.readLine())!=null) { + System.out.println(ln); + } + assertTrue("Didn't create an output EPS file.", new File("test_uniref50_out.eps").exists()); + assertTrue("Didn't create an EPS file with any content", new File("test_uniref50_out.eps").length()>4096); + if (worker.exit == null){ + worker.interrupt(); + Thread.currentThread().interrupt(); + ls2_proc.destroy(); + fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms)."); +} + } + +} -- 1.7.10.2