1 package at.ac.tuwien.lsdc;
4 import java.io.IOException;
5 import java.util.Collections;
6 import java.util.LinkedList;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
11 import at.ac.tuwien.lsdc.sched.AbstractScheduler;
12 import at.ac.tuwien.lsdc.sched.SchedulerA;
13 import at.ac.tuwien.lsdc.sched.SchedulerB;
14 import at.ac.tuwien.lsdc.sched.SchedulerC;
15 import at.ac.tuwien.lsdc.types.Application;
16 import at.ac.tuwien.lsdc.types.ScenarioData;
17 import at.ac.tuwien.lsdc.types.SchedulerEvent;
18 import at.ac.tuwien.lsdc.types.SchedulerType;
19 import at.ac.tuwien.lsdc.util.CSVParser;
20 import at.ac.tuwien.lsdc.util.CSVScenariosLogger;
23 * Read config (command line properties) and start Scheduler-Simulation.
25 public class SchedSimulator {
27 private static final String USAGE = "USAGE";
29 private static final Logger log = LoggerFactory
30 .getLogger(SchedSimulator.class);
32 private static SchedulerType schedulerType;
33 private static File inputFile;
34 private static File logFile;
35 private static File scenarioLogFile;
37 public static void main(String[] args) throws Exception {
38 if (args.length == 4) {
39 parseCommandLineArgs(args);
40 } else if (args.length == 1) {
41 String[] newArgs = args[0].split(" ");
42 if (newArgs.length == 4) {
43 parseCommandLineArgs(newArgs);
49 LinkedList<Application> apps = CSVParser.parseFile(inputFile);
50 Collections.sort(apps);
51 AbstractScheduler scheduler;
52 switch (schedulerType) {
54 scheduler = new SchedulerA();
56 scheduler = new SchedulerB();
58 scheduler = new SchedulerC();
61 ScenarioData data = scheduler.initAndStart(apps);
62 // CSVScenariosLogger logger = new
63 // CSVScenariosLogger("out_scen"+scenario+"sched"+schedulerType+".csv");
64 // logger.appendScenarioData(data);
67 private static void parseCommandLineArgs(String[] args) {
68 String schedulerTypeStr = args[0];
69 String inputFileStr = args[1];
70 String logFileStr = args[2];
71 String scenarioLogFileStr = args[3];
73 schedulerType = SchedulerType.valueOf(schedulerTypeStr);
74 inputFile = new File(inputFileStr);
75 if (!inputFile.canRead())
76 throw new IOException("Can not read input file");
77 logFile = new File(logFileStr);
78 boolean logFileOK = false;
79 if ( logFile.canWrite() ) {
82 else if (!logFile.exists()) {
87 throw new IOException("Can not write to log file");
88 boolean fileWriteOK = false;
89 scenarioLogFile = new File(scenarioLogFileStr);
90 if (scenarioLogFile.exists()) {
91 fileWriteOK = scenarioLogFile.canWrite();
92 scenarioLogFile.delete();
93 scenarioLogFile.createNewFile();
95 scenarioLogFile.createNewFile();
99 throw new IOException("Can not write to Scenario Log File "
100 + scenarioLogFileStr);
101 } catch (Exception e) {
108 private static void createLogFile() {