package at.ac.tuwien.lsdc;
+import java.io.File;
+import java.io.IOException;
import java.util.LinkedList;
import org.slf4j.Logger;
import at.ac.tuwien.lsdc.sched.SchedulerA;
import at.ac.tuwien.lsdc.sched.SchedulerB;
import at.ac.tuwien.lsdc.sched.SchedulerC;
-import at.ac.tuwien.lsdc.types.Application;
import at.ac.tuwien.lsdc.types.ScenarioData;
+import at.ac.tuwien.lsdc.types.SchedulerEvent;
+import at.ac.tuwien.lsdc.types.SchedulerType;
import at.ac.tuwien.lsdc.util.CSVParser;
import at.ac.tuwien.lsdc.util.CSVScenariosLogger;
* Read config (command line properties) and start Scheduler-Simulation.
*/
public class SchedSimulator {
- private static final Logger log = LoggerFactory.getLogger(SchedSimulator.class);
-
- private static String schedulerType;
- private static String inputFile;
- private static String scenario;
+
+ private static final String USAGE = "USAGE";
+
+ private static final Logger log = LoggerFactory
+ .getLogger(SchedSimulator.class);
+
+ private static SchedulerType schedulerType;
+ private static File inputFile;
+ private static File logFile;
+ private static File scenarioLogFile;
public static void main(String[] args) throws Exception {
- log.info("Hello World!");
- parseCommandLineArgs(args);
- CSVParser parser = new CSVParser(inputFile);
- LinkedList<Application> apps = parser.parseFile();
+ if (args.length == 4) {
+ parseCommandLineArgs(args);
+ } else if (args.length == 1) {
+ String[] newArgs = args[0].split(" ");
+ if (newArgs.length == 4) {
+ parseCommandLineArgs(newArgs);
+ } else {
+ log.info(USAGE);
+ System.exit(1);
+ }
+ }
+ LinkedList<SchedulerEvent> apps = CSVParser.parseFile(inputFile);
AbstractScheduler scheduler;
switch (schedulerType) {
- case "A":
+ case A:
scheduler = new SchedulerA();
- case "B":
+ case B:
scheduler = new SchedulerB();
default:
scheduler = new SchedulerC();
}
-
+
ScenarioData data = scheduler.initAndStart(apps);
- CSVScenariosLogger logger = new CSVScenariosLogger("out_scen"+scenario+"sched"+schedulerType+".csv");
- logger.appendScenarioData(data);
+ // CSVScenariosLogger logger = new
+ // CSVScenariosLogger("out_scen"+scenario+"sched"+schedulerType+".csv");
+ // logger.appendScenarioData(data);
}
-
+
private static void parseCommandLineArgs(String[] args) {
-
+ String schedulerTypeStr = args[0];
+ String inputFileStr = args[1];
+ String logFileStr = args[2];
+ String scenarioLogFileStr = args[3];
+ try {
+ schedulerType = SchedulerType.valueOf(schedulerTypeStr);
+ inputFile = new File(inputFileStr);
+ if (!inputFile.canRead())
+ throw new IOException("Can not read input file");
+ logFile = new File(logFileStr);
+ if (!logFile.canWrite())
+ throw new IOException("Can not write to log file");
+ boolean fileWriteOK = false;
+ scenarioLogFile = new File(scenarioLogFileStr);
+ if (scenarioLogFile.exists()) {
+ fileWriteOK = scenarioLogFile.canWrite();
+ scenarioLogFile.delete();
+ scenarioLogFile.createNewFile();
+ } else {
+ scenarioLogFile.createNewFile();
+ fileWriteOK = true;
+ }
+ if (!fileWriteOK)
+ throw new IOException("Can not write to Scenario Log File "
+ + scenarioLogFileStr);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.info(USAGE);
+ System.exit(1);
+ }
}
}
package at.ac.tuwien.lsdc.util;
+import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
-import at.ac.tuwien.lsdc.types.Application;
+import at.ac.tuwien.lsdc.types.SchedulerEvent;
import au.com.bytecode.opencsv.CSVReader;
public class CSVParser {
- private final String filename;
- public CSVParser(String filename) {
- this.filename = filename;
- }
-
- public LinkedList<Application> parseFile() throws IOException {
- CSVReader reader = new CSVReader(new FileReader(filename));
+ public static LinkedList<SchedulerEvent> parseFile(File csvFile) throws IOException {
+ CSVReader reader = new CSVReader(new FileReader(csvFile));
List<String[]> file = reader.readAll();
reader.close();
- return new LinkedList<Application>();
+ return new LinkedList<SchedulerEvent>();
}
-
}