print test script progress for long running tests

This commit is contained in:
fros4943 2010-10-12 10:57:22 +00:00
parent e56dccb840
commit d470c20029

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: LogScriptEngine.java,v 1.23 2010/02/24 10:38:35 fros4943 Exp $ * $Id: LogScriptEngine.java,v 1.24 2010/10/12 10:57:22 fros4943 Exp $
*/ */
package se.sics.cooja.plugins; package se.sics.cooja.plugins;
@ -206,7 +206,8 @@ public class LogScriptEngine {
} }
timeoutEvent.remove(); timeoutEvent.remove();
timeoutProgressEvent.remove();
simulation.getEventCentral().removeLogOutputListener(logOutputListener); simulation.getEventCentral().removeLogOutputListener(logOutputListener);
engine.put("SHUTDOWN", true); engine.put("SHUTDOWN", true);
@ -262,10 +263,22 @@ public class LogScriptEngine {
logger.info("No timeout defined, using default (us): " + DEFAULT_TIMEOUT); logger.info("No timeout defined, using default (us): " + DEFAULT_TIMEOUT);
timeoutTime = DEFAULT_TIMEOUT; timeoutTime = DEFAULT_TIMEOUT;
} }
final long absoluteTimeout = simulation.getSimulationTime() + timeoutTime;
final long duration = timeoutTime;
simulation.invokeSimulationThread(new Runnable() { simulation.invokeSimulationThread(new Runnable() {
public void run() { public void run() {
simulation.scheduleEvent(timeoutEvent, absoluteTimeout); final long startTime = simulation.getSimulationTime();
final long interval = (long) (0.01*5*duration);
simulation.scheduleEvent(timeoutProgressEvent = new TimeEvent(0) {
public void execute(long t) {
int percent = (int) (5*(t-startTime)/interval);
logger.info("Test script at " + percent + "%");
simulation.scheduleEvent(this, t+interval);
}
}, startTime+interval);
simulation.scheduleEvent(timeoutEvent, startTime + duration);
} }
}); });
@ -368,6 +381,7 @@ public class LogScriptEngine {
} }
timeoutEvent.remove(); timeoutEvent.remove();
timeoutProgressEvent.remove();
semaphoreSim.release(100); semaphoreSim.release(100);
throw new RuntimeException("test script killed"); throw new RuntimeException("test script killed");
@ -432,10 +446,15 @@ public class LogScriptEngine {
stepScript(); stepScript();
} }
}; };
private TimeEvent timeoutProgressEvent = new TimeEvent(0) {
public void execute(long t) { }
};
private Runnable stopSimulationRunnable = new Runnable() { private Runnable stopSimulationRunnable = new Runnable() {
public void run() { public void run() {
simulation.stopSimulation(); simulation.stopSimulation();
timeoutEvent.remove(); timeoutEvent.remove();
timeoutProgressEvent.remove();
} }
}; };
private Runnable quitRunnable = new Runnable() { private Runnable quitRunnable = new Runnable() {