package com.plectix.simulator.controller;
import java.util.Date;
import org.apache.commons.cli.ParseException;
import com.plectix.simulator.simulator.DefaultSimulatorFactory;
import com.plectix.simulator.simulator.SimulationArguments;
import com.plectix.simulator.simulator.SimulatorCommandLine;
public final class SimulationServiceTest implements SimulatorCallableListener {
public static final void main(String[] args) throws InterruptedException,
ParseException {
SimulationService service = new SimulationService(
new DefaultSimulatorFactory());
SimulatorCommandLine commandLine = new SimulatorCommandLine(args);
SimulationArguments simulationArguments = commandLine
.getSimulationArguments();
long jobID = service.submit(
new SimulatorInputData(simulationArguments), null);
for (int i = 0; i < 1000; i++) {
SimulatorStatusInterface status = service.getSimulatorStatus(jobID);
if (status != null) {
System.err.println("--> Job " + jobID + " currentTime= "
+ status.getCurrentTime() + " progress = "
+ status.getProgress());
}
System.err.println("--> Job " + jobID + " is "
+ (service.isDone(jobID) ? "" : "NOT ") + "done");
if (i == 10) {
System.err.println("Killing ID: " + jobID);
service.cancel(jobID, true, true);
System.err.println("Killed ID: " + jobID);
System.err.println("--> Job " + jobID + " is "
+ (service.isDone(jobID) ? "" : "NOT ") + "done");
System.err.println("Sleeping another second...");
Thread.sleep(1000);
break;
}
Thread.sleep(750);
}
System.err.println("Shutting the service down...");
service.shutdown();
}
public void finished(SimulatorCallable simulatorCallable) {
Exception e = simulatorCallable.getSimulatorExitReport().getException();
System.err.println("Simulator ["
+ simulatorCallable.getSimulator().getName()
+ "'] with ID= "
+ simulatorCallable.getId()
+ " is done. Runtime: "
+ simulatorCallable.getSimulatorExitReport()
.getRunTimeInMillis() + " Exception: "
+ (e == null ? "No Exception!" : e.getMessage()));
if (e != null) {
e.printStackTrace();
}
}
public void dumpDates() {
Date date = new Date();
System.err
.println(date.getTime() + " vs " + System.currentTimeMillis());
float ourPosition = System.currentTimeMillis() / 1000.0f;
float simplxStartPosition = 1228536517.613349f;
System.err.println("our: " + ourPosition + " sim: "
+ simplxStartPosition + " diff: "
+ (ourPosition - simplxStartPosition));
long startDate = (long) (simplxStartPosition * 1000);
date.setTime(startDate); //
System.err.println("simplx start date: " + date + " = current_date - "
+ (System.currentTimeMillis() - startDate) / 1000);
long endDate = (long) (1228536518.423739 * 1000);
date.setTime(endDate);
System.err.println(date);
System.err.println("simplx end date: " + date + " = current_date - "
+ (System.currentTimeMillis() - endDate) / 1000);
}
}