package ibis.ipl.benchmarks.registry; import java.text.DateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class Main { private static final Logger logger = LoggerFactory.getLogger(Main.class); private final IbisApplication[] apps; Main(int threads, boolean generateEvents, boolean fail) throws Exception { apps = new IbisApplication[threads]; for (int i = 0; i < threads; i++) { logger.debug("starting thread " + i + " of " + threads); apps[i] = new IbisApplication(generateEvents, fail); } } void end() { for (IbisApplication app : apps) { app.end(); } } void printStats() { int totalSeen = 0; for (int i = 0; i < apps.length; i++) { totalSeen += apps[i].nrOfIbisses(); } double average = (double) totalSeen / (double) apps.length; String date = DateFormat.getTimeInstance().format( new Date(System.currentTimeMillis())); System.out.printf(date + " average seen members = %.2f\n", average, apps.length); } public static void main(String[] args) throws Exception { int threads = 1; boolean generateEvents = false; long start = System.currentTimeMillis(); long runtime = Long.MAX_VALUE; long delay = 0; boolean fail = false; // int rank = new Integer(System.getProperty("rank", "0")); for (int i = 0; i < args.length; i++) { if (args[i].equalsIgnoreCase("--threads")) { i++; threads = new Integer(args[i]); } else if (args[i].equalsIgnoreCase("--events")) { generateEvents = true; } else if (args[i].equalsIgnoreCase("--fail")) { fail = true; } else if (args[i].equalsIgnoreCase("--runtime")) { i++; runtime = new Integer(args[i]) * 1000; } else if (args[i].equalsIgnoreCase("--delay")) { i++; delay = new Integer(args[i]) * 1000; } else { System.err.println("unknown option: " + args[i]); System.exit(1); } } //delay specified time if (delay > 0) { Thread.sleep(delay); } //create ibisses new Main(threads, generateEvents, fail); //sleep for specified runtime long sleep = runtime - (System.currentTimeMillis() - start); System.err.println("Benchmark app sleeping : " + sleep); if (sleep > 0) { Thread.sleep(sleep); } //app stopped automatically } }