The ExecTest class runs a program, defined in the execName variable, on the system where the test is running.
Run an external program from a test
package test; import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices; import com.ibm.rational.test.lt.kernel.services.ITestLogManager; import org.eclipse.hyades.test.common.event.VerdictEvent; import java.io.IOException; /** * The ExecTest class runs a program, defined in the execName variable, * on the system where the test is running. * The test verdict is set to PASS if the program return code is 0. * The test verdict is set to FAIL if the program doesn't execute or * if the program return code is non-zero * In this sample, the program is perl.exe. */ public class ExecTest implements com.ibm.rational.test.lt.kernel.custom.ICustomCode2 { /** * Create using the no-arg constructor. */ public ExecTest() { } public String exec(ITestExecutionServices tes, String[] args) { ITestLogManager logger = tes.getTestLogManager(); int rtnval = 1; Process p = null; String execName = "C:/Windows/System32/perl.exe C:/Perl/true.pl"; Runtime rt = Runtime.getRuntime(); // Execute test try { p = rt.exec(execName); } catch (IOException e) { logger.reportMessage("Unable to run = " + execName); logger.reportVerdict("Execution of " + execName + " failed", VerdictEvent.VERDICT_FAIL); return null; } // Wait for the test to complete try { rtnval = p.waitFor(); logger.reportMessage("Process return value is " + String.valueOf(rtnval)); } catch (InterruptedException e1) { logger.reportMessage("Unable to wait for " + execName); logger.reportVerdict("WaitFor on " + execName + " failed", VerdictEvent.VERDICT_FAIL); return null; } // Check the test return code and set the test verdict appropriately if (rtnval != 0) { logger.reportVerdict("Execution failed", VerdictEvent.VERDICT_FAIL); } else { logger.reportVerdict("Execution passed", VerdictEvent.VERDICT_PASS); } return null; } }