added debugging output + generated javascript code tooltip

This commit is contained in:
fros4943 2009-06-15 16:53:32 +00:00
parent 67bca87c1d
commit 32ac82fc22
3 changed files with 53 additions and 36 deletions

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: LogScriptEngine.java,v 1.15 2009/06/15 15:41:32 fros4943 Exp $
* $Id: LogScriptEngine.java,v 1.16 2009/06/15 16:53:32 fros4943 Exp $
*/
package se.sics.cooja.plugins;
@ -371,9 +371,7 @@ public class LogScriptEngine {
simulation.scheduleEvent(quitEvent, simulation.getSimulationTime());
}
if (timeoutEvent != null) {
timeoutEvent.remove();
}
timeoutEvent.remove();
semaphoreSim.release(100);
throw new RuntimeException("test script killed");

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: ScriptParser.java,v 1.6 2009/06/12 15:12:46 fros4943 Exp $
* $Id: ScriptParser.java,v 1.7 2009/06/15 16:53:32 fros4943 Exp $
*/
package se.sics.cooja.plugins;
@ -218,14 +218,33 @@ public class ScriptParser {
}
public String getJSCode() {
return getJSCode(code, timeoutCode);
}
public static String getJSCode(String code, String timeoutCode) {
return
"function run() { " +
"SEMAPHORE_SIM.acquire(); " +
"SEMAPHORE_SCRIPT.acquire(); " + /* STARTUP BLOCKS HERE! */
"if (SHUTDOWN) { SCRIPT_KILL(); } " +
"if (TIMEOUT) { SCRIPT_TIMEOUT(); } " +
"msg = new java.lang.String(msg); " +
"node.setMoteMsg(mote, msg); " +
code +
"\n" +
"\n" +
"while (true) { SCRIPT_SWITCH(); } " /* SCRIPT ENDED */+
"};" +
"\n" +
"function GENERATE_MSG(time, msg) { " +
" log.generateMessage(time, msg); " +
"};\n" +
"\n" +
"function SCRIPT_KILL() { " +
" SEMAPHORE_SIM.release(100); " +
" throw('test script killed'); " +
"};\n" +
"\n" +
"function SCRIPT_TIMEOUT() { " +
timeoutCode + "; " +
" log.log('TEST TIMEOUT\\n'); " +
@ -236,6 +255,7 @@ public class ScriptParser {
" } " +
" SCRIPT_KILL(); " +
"};\n" +
"\n" +
"function SCRIPT_SWITCH() { " +
" SEMAPHORE_SIM.release(); " +
" SEMAPHORE_SCRIPT.acquire(); " /* SWITCH BLOCKS HERE! */ +
@ -244,19 +264,10 @@ public class ScriptParser {
" msg = new java.lang.String(msg); " +
" node.setMoteMsg(mote, msg); " +
"};\n" +
"\n" +
"function write(mote,msg) { " +
" mote.getInterfaces().getLog().writeString(msg); " +
"};\n" +
"function run() { " +
"SEMAPHORE_SIM.acquire(); " +
"SEMAPHORE_SCRIPT.acquire(); " + /* STARTUP BLOCKS HERE! */
"if (SHUTDOWN) { SCRIPT_KILL(); } " +
"if (TIMEOUT) { SCRIPT_TIMEOUT(); } " +
"msg = new java.lang.String(msg); " +
"node.setMoteMsg(mote, msg); " +
code + "\n" +
"while (true) { SCRIPT_SWITCH(); } " /* SCRIPT ENDED */+
"};";
"};\n";
}
public long getTimeoutTime() {

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: ScriptRunner.java,v 1.20 2009/06/15 15:41:32 fros4943 Exp $
* $Id: ScriptRunner.java,v 1.21 2009/06/15 16:53:32 fros4943 Exp $
*/
package se.sics.cooja.plugins;
@ -75,9 +75,6 @@ public class ScriptRunner extends VisPlugin {
private LogScriptEngine engine = null;
private File coojaBuild;
private File coojaJAR;
private final File logFile;
private static BufferedWriter logWriter = null; /* For non-GUI tests */
private JTextArea scriptTextArea = null;
@ -92,26 +89,11 @@ public class ScriptRunner extends VisPlugin {
super("Contiki Test Editor", gui, false);
this.simulation = simulation;
try {
coojaBuild = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/build");
coojaJAR = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/dist/cooja.jar");
coojaBuild = coojaBuild.getCanonicalFile();
coojaJAR = coojaJAR.getCanonicalFile();
} catch (IOException e) {
coojaBuild = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/build");
coojaJAR = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/dist/cooja.jar");
}
logFile = new File(coojaBuild, "COOJA.testlog");
final JTextArea lineTextArea = new JTextArea();
lineTextArea.setEnabled(false);
lineTextArea.setMargin(new Insets(5,0,5,0));
try {
scriptFirstLinesNumber = new ScriptParser("").getJSCode().split("\n").length + 2;
} catch (ScriptSyntaxErrorException e1) {
scriptFirstLinesNumber = 1;
}
scriptFirstLinesNumber = 1;
/* Examples popup menu */
final JPopupMenu popupMenu = new JPopupMenu();
@ -178,6 +160,17 @@ public class ScriptRunner extends VisPlugin {
txt += i + "\n";
}
lineTextArea.setText(txt);
ScriptParser parser;
try {
parser = new ScriptParser(scriptTextArea.getText());
String tooltip = parser.getJSCode();
tooltip = tooltip.replaceAll("\n", "<br>");
tooltip = "<html><b>Generated code:</b><p>" + tooltip + "</html>";
lineTextArea.setToolTipText(tooltip);
} catch (ScriptSyntaxErrorException e) {
lineTextArea.setToolTipText("Unable to generate code: " + e.getMessage());
}
}
public void changedUpdate(DocumentEvent e) {
@ -278,6 +271,7 @@ public class ScriptRunner extends VisPlugin {
/* Continously write test output to file */
if (logWriter == null) {
/* Warning: static variable, used by all active test editor plugins */
File logFile = new File("COOJA.testlog");
if (logFile.exists()) {
logFile.delete();
}
@ -371,6 +365,18 @@ public class ScriptRunner extends VisPlugin {
final JDialog progressDialog = new JDialog((Window)GUI.getTopParentContainer(), (String) null);
progressDialog.setTitle("Running test...");
File coojaBuild;
File coojaJAR;
try {
coojaBuild = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/build");
coojaJAR = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/dist/cooja.jar");
coojaBuild = coojaBuild.getCanonicalFile();
coojaJAR = coojaJAR.getCanonicalFile();
} catch (IOException e) {
coojaBuild = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/build");
coojaJAR = new File(GUI.getExternalToolsSetting("PATH_CONTIKI"), "tools/cooja/dist/cooja.jar");
}
if (!coojaJAR.exists()) {
JOptionPane.showMessageDialog(GUI.getTopParentContainer(),
"Can't start COOJA, cooja.jar not found:" +
@ -380,6 +386,8 @@ public class ScriptRunner extends VisPlugin {
return;
}
final File logFile = new File(coojaBuild, "COOJA.testlog");
String command[] = {
"java",
"-jar",