/* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/* Run the J2Ddemo.jar with the -runs=1 option */
test = new DemoRun("jfc/J2Ddemo/J2Ddemo.jar", "-runs=1");
test.runit();
/* Make sure patterns in output look ok */ if (test.output_contains("ERROR")) { thrownew RuntimeException("Test failed - ERROR seen in output");
} if (test.output_contains("Exception")) { thrownew RuntimeException("Test failed - Exception seen in output");
}
/* Must be a pass. */
System.out.println("Test passed - cleanly terminated");
}
/* * Helper class to direct process output to a StringBuffer
*/ staticclass MyInputStream implements Runnable { private String name; private BufferedInputStream in; private StringBuffer buffer;
/* Create MyInputStream that saves all output to a StringBuffer */
MyInputStream(String name, InputStream in) { this.name = name; this.in = new BufferedInputStream(in);
buffer = new StringBuffer(4096); Thread thr = newThread(this);
thr.setDaemon(true);
thr.start();
}
/* Check to see if a pattern is inside the output. */ boolean contains(String pattern) {
String str = buffer.toString(); return str.contains(pattern);
}
/* Runs as a separate thread capturing all output in a StringBuffer */ publicvoid run() { try { byte b[] = newbyte[100]; for (;;) { int n = in.read(b);
String str; if (n < 0) { break;
}
str = new String(b, 0, n);
buffer.append(str);
System.out.print(str);
}
} catch (IOException ioe) { /* skip */ }
}
}
/* * Generic run of a demo jar file.
*/ staticclass DemoRun {
/* Save process output in StringBuffers */
output = new MyInputStream("Input Stream", p.getInputStream());
error = new MyInputStream("Error Stream", p.getErrorStream());
/* Wait for process to complete, and if exit code is non-zero we fail */ int exitStatus; try {
exitStatus = p.waitFor(); if ( exitStatus != 0) {
System.out.println("Exit code is " + exitStatus);
error.dump(System.out);
output.dump(System.out); thrownew RuntimeException("Test failed - " + "exit return code non-zero " + "(exitStatus==" + exitStatus + ")");
}
} catch ( InterruptedException e ) { thrownew RuntimeException("Test failed - process interrupted");
}
System.out.println("Completed: " + cmdLine);
}
/* Does the pattern appear in the output of this process */ publicboolean output_contains(String pattern)
{ return output.contains(pattern) || error.contains(pattern);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.