From 21d92e6cb75713776431b1250679503ab1d370a9 Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Thu, 2 May 2013 18:06:23 +0200 Subject: [PATCH] added ant, removed mvn, added libs, reanamed classes & implemented a bit more --- .classpath.example | 36 --------- .project.example | 23 ------ .../org.eclipse.core.resources.prefs | 6 -- .settings.example/org.eclipse.jdt.core.prefs | 12 --- .settings.example/org.eclipse.m2e.core.prefs | 4 - build.xml | 69 +++++++++++++++++ lib/opencsv-2.3.jar | Bin 0 -> 14146 bytes lib/slf4j-api-1.7.5.jar | Bin 0 -> 26084 bytes lib/slf4j-jdk14-1.7.5.jar | Bin 0 -> 7900 bytes pom.xml | 48 ------------ run JobGenerator.launch | 16 ---- run SchedSimulator.launch | 16 ---- .../at/ac/tuwien/lsdc/JobGenerator.java | 0 .../at/ac/tuwien/lsdc/SchedSimulator.java | 2 +- .../ac/tuwien/lsdc/federation/Federation.java | 0 .../tuwien/lsdc/sched/AbstractScheduler.java | 73 ++++++++++++++++++ src/at/ac/tuwien/lsdc/sched/SchedulerA.java | 16 ++++ src/at/ac/tuwien/lsdc/sched/SchedulerB.java | 16 ++++ src/at/ac/tuwien/lsdc/sched/SchedulerC.java | 16 ++++ src/at/ac/tuwien/lsdc/types/Application.java | 40 ++++++++++ .../ac/tuwien/lsdc/types/PhysicalMachine.java | 0 .../ac/tuwien/lsdc/types/SchedulerEvent.java | 32 ++++++++ .../ac/tuwien/lsdc/types/VirtualMachine.java | 0 .../ac/tuwien/lsdc/util/CSVLogger.java} | 12 +-- src/at/ac/tuwien/lsdc/util/CSVParser.java | 22 ++++++ .../tuwien/lsdc/sched/AbstractScheduler.java | 5 -- .../tuwien/lsdc/sched/sched1/Scheduler1.java | 7 -- .../tuwien/lsdc/sched/sched2/Scheduler2.java | 7 -- .../tuwien/lsdc/sched/sched3/Scheduler3.java | 7 -- .../at/ac/tuwien/lsdc/types/Application.java | 5 -- .../java/at/ac/tuwien/lsdc/types/Task.java | 6 -- src/main/resources/logback.xml | 24 ------ src/test/java/dummy | 1 - src/test/resources/dummy | 1 - 34 files changed, 288 insertions(+), 234 deletions(-) delete mode 100644 .classpath.example delete mode 100644 .project.example delete mode 100644 .settings.example/org.eclipse.core.resources.prefs delete mode 100644 .settings.example/org.eclipse.jdt.core.prefs delete mode 100644 .settings.example/org.eclipse.m2e.core.prefs create mode 100644 build.xml create mode 100644 lib/opencsv-2.3.jar create mode 100644 lib/slf4j-api-1.7.5.jar create mode 100644 lib/slf4j-jdk14-1.7.5.jar delete mode 100644 pom.xml delete mode 100644 run JobGenerator.launch delete mode 100644 run SchedSimulator.launch rename src/{main/java => }/at/ac/tuwien/lsdc/JobGenerator.java (100%) rename src/{main/java => }/at/ac/tuwien/lsdc/SchedSimulator.java (80%) rename src/{main/java => }/at/ac/tuwien/lsdc/federation/Federation.java (100%) create mode 100644 src/at/ac/tuwien/lsdc/sched/AbstractScheduler.java create mode 100644 src/at/ac/tuwien/lsdc/sched/SchedulerA.java create mode 100644 src/at/ac/tuwien/lsdc/sched/SchedulerB.java create mode 100644 src/at/ac/tuwien/lsdc/sched/SchedulerC.java create mode 100644 src/at/ac/tuwien/lsdc/types/Application.java rename src/{main/java => }/at/ac/tuwien/lsdc/types/PhysicalMachine.java (100%) create mode 100644 src/at/ac/tuwien/lsdc/types/SchedulerEvent.java rename src/{main/java => }/at/ac/tuwien/lsdc/types/VirtualMachine.java (100%) rename src/{main/java/at/ac/tuwien/lsdc/util/CSVHandler.java => at/ac/tuwien/lsdc/util/CSVLogger.java} (67%) create mode 100644 src/at/ac/tuwien/lsdc/util/CSVParser.java delete mode 100644 src/main/java/at/ac/tuwien/lsdc/sched/AbstractScheduler.java delete mode 100644 src/main/java/at/ac/tuwien/lsdc/sched/sched1/Scheduler1.java delete mode 100644 src/main/java/at/ac/tuwien/lsdc/sched/sched2/Scheduler2.java delete mode 100644 src/main/java/at/ac/tuwien/lsdc/sched/sched3/Scheduler3.java delete mode 100644 src/main/java/at/ac/tuwien/lsdc/types/Application.java delete mode 100644 src/main/java/at/ac/tuwien/lsdc/types/Task.java delete mode 100644 src/main/resources/logback.xml delete mode 100644 src/test/java/dummy delete mode 100644 src/test/resources/dummy diff --git a/.classpath.example b/.classpath.example deleted file mode 100644 index e43402f..0000000 --- a/.classpath.example +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project.example b/.project.example deleted file mode 100644 index c95e2e3..0000000 --- a/.project.example +++ /dev/null @@ -1,23 +0,0 @@ - - - lsdc - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/.settings.example/org.eclipse.core.resources.prefs b/.settings.example/org.eclipse.core.resources.prefs deleted file mode 100644 index 29abf99..0000000 --- a/.settings.example/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,6 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding//src/test/java=UTF-8 -encoding//src/test/resources=UTF-8 -encoding/=UTF-8 diff --git a/.settings.example/org.eclipse.jdt.core.prefs b/.settings.example/org.eclipse.jdt.core.prefs deleted file mode 100644 index 6249222..0000000 --- a/.settings.example/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings.example/org.eclipse.m2e.core.prefs b/.settings.example/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings.example/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..3d92a87 --- /dev/null +++ b/build.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/opencsv-2.3.jar b/lib/opencsv-2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..32b00f927594a1854b371fe5bdeacc30f8aa75f8 GIT binary patch literal 14146 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
hi4iPC@6 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 literal 0 HcmV?d00001 diff --git a/lib/slf4j-jdk14-1.7.5.jar b/lib/slf4j-jdk14-1.7.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..184c8c4109973315b7df3da3b579ae205d90112c GIT binary patch literal 7900 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 XF9myRhXH_lw;#3J*wqs6%fJ5tPOV0n literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 2416f76..0000000 --- a/pom.xml +++ /dev/null @@ -1,48 +0,0 @@ - - 4.0.0 - at.ac.tuwien.lsdc - lsdc - 0.0.1-SNAPSHOT - - - UTF-8 - - - - - org.slf4j - slf4j-api - 1.6.6 - - - ch.qos.logback - logback-classic - 1.0.7 - - - net.sf.opencsv - opencsv - 2.0 - - - - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - - maven-compiler-plugin - 2.3.2 - - 1.7 - 1.7 - - - - - - diff --git a/run JobGenerator.launch b/run JobGenerator.launch deleted file mode 100644 index 3c15170..0000000 --- a/run JobGenerator.launch +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/run SchedSimulator.launch b/run SchedSimulator.launch deleted file mode 100644 index 3c15170..0000000 --- a/run SchedSimulator.launch +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/main/java/at/ac/tuwien/lsdc/JobGenerator.java b/src/at/ac/tuwien/lsdc/JobGenerator.java similarity index 100% rename from src/main/java/at/ac/tuwien/lsdc/JobGenerator.java rename to src/at/ac/tuwien/lsdc/JobGenerator.java diff --git a/src/main/java/at/ac/tuwien/lsdc/SchedSimulator.java b/src/at/ac/tuwien/lsdc/SchedSimulator.java similarity index 80% rename from src/main/java/at/ac/tuwien/lsdc/SchedSimulator.java rename to src/at/ac/tuwien/lsdc/SchedSimulator.java index 5a6b86c..327b2e7 100644 --- a/src/main/java/at/ac/tuwien/lsdc/SchedSimulator.java +++ b/src/at/ac/tuwien/lsdc/SchedSimulator.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Read config (.properties-file) and start Scheduler-Simulation. + * Read config (command line properties) and start Scheduler-Simulation. */ public class SchedSimulator { private static final Logger log = LoggerFactory.getLogger(SchedSimulator.class); diff --git a/src/main/java/at/ac/tuwien/lsdc/federation/Federation.java b/src/at/ac/tuwien/lsdc/federation/Federation.java similarity index 100% rename from src/main/java/at/ac/tuwien/lsdc/federation/Federation.java rename to src/at/ac/tuwien/lsdc/federation/Federation.java diff --git a/src/at/ac/tuwien/lsdc/sched/AbstractScheduler.java b/src/at/ac/tuwien/lsdc/sched/AbstractScheduler.java new file mode 100644 index 0000000..4ac1325 --- /dev/null +++ b/src/at/ac/tuwien/lsdc/sched/AbstractScheduler.java @@ -0,0 +1,73 @@ +package at.ac.tuwien.lsdc.sched; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import at.ac.tuwien.lsdc.types.Application; +import at.ac.tuwien.lsdc.types.SchedulerEvent; + +public abstract class AbstractScheduler { + + // should move to SchedulerType Class later on + + + // the following types are only needed for correct + // log output + protected String schedulerName; + protected String scenario; + protected int numInSourced; + protected int numOutSourced; + + // this map saves the following Type of Events: + // start of an Application, end of an Application + // (start outSourced, end outSourced, start inSourced, end inSourced) + protected Map> eventMap; + + // Scheduler has an internal Time "Abstraction" + // at every point in time it checks for Events in his "EventList" + // and handles them (via the individual scheduling algorithm) + protected long currTime; + + // the timestamp at which the Scheduler is finished + // it is updated with every added "EndEvent" + protected long endTime; + + // Initialize Scheduler with Data from CSV + // CSV will be parsed and sent as List to Scheduler + public String initAndStart(List apps) { + for (Application a : apps) { + // read start timestamp + // save as Event in Map + } + startScheduling(); + return doEndLogging(); + } + + protected void startScheduling() { + while (true) { + LinkedList events = eventMap.get(currTime); + handleEvents(events); + doStateLogging(); + //advance Time to next Event + if (currTime == endTime) { + // reached last Event, Scheduler will shut down + break; + } + } + } + + // this method is where the Scheduling Algorithm resides + // it reads the Events (start & stop of applications) + protected abstract void handleEvents(LinkedList events); + + protected void doStateLogging() { + // at every timestamp (after handle Event) + } + + // this creates the total summary which should be written to a CSV at the + // end + protected String doEndLogging() { + return "CSV-String"; + } +} diff --git a/src/at/ac/tuwien/lsdc/sched/SchedulerA.java b/src/at/ac/tuwien/lsdc/sched/SchedulerA.java new file mode 100644 index 0000000..d6fae68 --- /dev/null +++ b/src/at/ac/tuwien/lsdc/sched/SchedulerA.java @@ -0,0 +1,16 @@ +package at.ac.tuwien.lsdc.sched; + +import java.util.LinkedList; + +import at.ac.tuwien.lsdc.types.SchedulerEvent; + + +public class SchedulerA extends AbstractScheduler { + + @Override + protected void handleEvents(LinkedList events) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/at/ac/tuwien/lsdc/sched/SchedulerB.java b/src/at/ac/tuwien/lsdc/sched/SchedulerB.java new file mode 100644 index 0000000..006f959 --- /dev/null +++ b/src/at/ac/tuwien/lsdc/sched/SchedulerB.java @@ -0,0 +1,16 @@ +package at.ac.tuwien.lsdc.sched; + +import java.util.LinkedList; + +import at.ac.tuwien.lsdc.types.SchedulerEvent; + + +public class SchedulerB extends AbstractScheduler { + + @Override + protected void handleEvents(LinkedList events) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/at/ac/tuwien/lsdc/sched/SchedulerC.java b/src/at/ac/tuwien/lsdc/sched/SchedulerC.java new file mode 100644 index 0000000..c106a38 --- /dev/null +++ b/src/at/ac/tuwien/lsdc/sched/SchedulerC.java @@ -0,0 +1,16 @@ +package at.ac.tuwien.lsdc.sched; + +import java.util.LinkedList; + +import at.ac.tuwien.lsdc.types.SchedulerEvent; + + +public class SchedulerC extends AbstractScheduler { + + @Override + protected void handleEvents(LinkedList events) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/at/ac/tuwien/lsdc/types/Application.java b/src/at/ac/tuwien/lsdc/types/Application.java new file mode 100644 index 0000000..cc09198 --- /dev/null +++ b/src/at/ac/tuwien/lsdc/types/Application.java @@ -0,0 +1,40 @@ +package at.ac.tuwien.lsdc.types; + +public class Application { + + private long timestamp; + private int size; + private int ram; + private int cpu; + private int duration; + + public Application(long timestamp, int size, int ram, int cpu, int duration) { + super(); + this.timestamp = timestamp; + this.size = size; + this.ram = ram; + this.cpu = cpu; + this.duration = duration; + } + + public long getTimestamp() { + return timestamp; + } + + public int getSize() { + return size; + } + + public int getRam() { + return ram; + } + + public int getCpu() { + return cpu; + } + + public int getDuration() { + return duration; + } + +} diff --git a/src/main/java/at/ac/tuwien/lsdc/types/PhysicalMachine.java b/src/at/ac/tuwien/lsdc/types/PhysicalMachine.java similarity index 100% rename from src/main/java/at/ac/tuwien/lsdc/types/PhysicalMachine.java rename to src/at/ac/tuwien/lsdc/types/PhysicalMachine.java diff --git a/src/at/ac/tuwien/lsdc/types/SchedulerEvent.java b/src/at/ac/tuwien/lsdc/types/SchedulerEvent.java new file mode 100644 index 0000000..eb471a1 --- /dev/null +++ b/src/at/ac/tuwien/lsdc/types/SchedulerEvent.java @@ -0,0 +1,32 @@ +package at.ac.tuwien.lsdc.types; + +public class SchedulerEvent { + + public enum EventType { + startApplication, endApplication + }; + + final private long timestamp; + final private EventType type; + final private Application app; + + public SchedulerEvent(long timestamp, EventType type, Application app) { + this.timestamp = timestamp; + this.type = type; + this.app = app; + } + + public long getTimestamp() { + return timestamp; + } + + public EventType getType() { + return type; + } + + public Application getApp() { + return app; + } + + +} \ No newline at end of file diff --git a/src/main/java/at/ac/tuwien/lsdc/types/VirtualMachine.java b/src/at/ac/tuwien/lsdc/types/VirtualMachine.java similarity index 100% rename from src/main/java/at/ac/tuwien/lsdc/types/VirtualMachine.java rename to src/at/ac/tuwien/lsdc/types/VirtualMachine.java diff --git a/src/main/java/at/ac/tuwien/lsdc/util/CSVHandler.java b/src/at/ac/tuwien/lsdc/util/CSVLogger.java similarity index 67% rename from src/main/java/at/ac/tuwien/lsdc/util/CSVHandler.java rename to src/at/ac/tuwien/lsdc/util/CSVLogger.java index 092345c..82f69ac 100644 --- a/src/main/java/at/ac/tuwien/lsdc/util/CSVHandler.java +++ b/src/at/ac/tuwien/lsdc/util/CSVLogger.java @@ -1,25 +1,19 @@ package at.ac.tuwien.lsdc.util; -import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.List; -import au.com.bytecode.opencsv.CSVReader; import au.com.bytecode.opencsv.CSVWriter; -public class CSVHandler { +public class CSVLogger { + private final String filename; - public CSVHandler(String filename) { + public CSVLogger(String filename) { this.filename = filename; } - public List readFile() throws IOException { - CSVReader reader = new CSVReader(new FileReader(filename)); - return reader.readAll(); - } - public void writeFile(List data) throws IOException { CSVWriter writer = new CSVWriter(new FileWriter(filename), '\t'); writer.writeAll(data); diff --git a/src/at/ac/tuwien/lsdc/util/CSVParser.java b/src/at/ac/tuwien/lsdc/util/CSVParser.java new file mode 100644 index 0000000..284d79d --- /dev/null +++ b/src/at/ac/tuwien/lsdc/util/CSVParser.java @@ -0,0 +1,22 @@ +package at.ac.tuwien.lsdc.util; + +import java.io.FileReader; +import java.io.IOException; +import java.util.List; + +import au.com.bytecode.opencsv.CSVReader; + +public class CSVParser { + private final String filename; + + public CSVParser(String filename) { + this.filename = filename; + } + + public List readFile() throws IOException { + CSVReader reader = new CSVReader(new FileReader(filename)); + return reader.readAll(); + } + + +} diff --git a/src/main/java/at/ac/tuwien/lsdc/sched/AbstractScheduler.java b/src/main/java/at/ac/tuwien/lsdc/sched/AbstractScheduler.java deleted file mode 100644 index fb14e25..0000000 --- a/src/main/java/at/ac/tuwien/lsdc/sched/AbstractScheduler.java +++ /dev/null @@ -1,5 +0,0 @@ -package at.ac.tuwien.lsdc.sched; - -public abstract class AbstractScheduler { - -} diff --git a/src/main/java/at/ac/tuwien/lsdc/sched/sched1/Scheduler1.java b/src/main/java/at/ac/tuwien/lsdc/sched/sched1/Scheduler1.java deleted file mode 100644 index 1ccfad4..0000000 --- a/src/main/java/at/ac/tuwien/lsdc/sched/sched1/Scheduler1.java +++ /dev/null @@ -1,7 +0,0 @@ -package at.ac.tuwien.lsdc.sched.sched1; - -import at.ac.tuwien.lsdc.sched.AbstractScheduler; - -public class Scheduler1 extends AbstractScheduler { - -} diff --git a/src/main/java/at/ac/tuwien/lsdc/sched/sched2/Scheduler2.java b/src/main/java/at/ac/tuwien/lsdc/sched/sched2/Scheduler2.java deleted file mode 100644 index 4d6ce00..0000000 --- a/src/main/java/at/ac/tuwien/lsdc/sched/sched2/Scheduler2.java +++ /dev/null @@ -1,7 +0,0 @@ -package at.ac.tuwien.lsdc.sched.sched2; - -import at.ac.tuwien.lsdc.sched.AbstractScheduler; - -public class Scheduler2 extends AbstractScheduler { - -} diff --git a/src/main/java/at/ac/tuwien/lsdc/sched/sched3/Scheduler3.java b/src/main/java/at/ac/tuwien/lsdc/sched/sched3/Scheduler3.java deleted file mode 100644 index dbd66e6..0000000 --- a/src/main/java/at/ac/tuwien/lsdc/sched/sched3/Scheduler3.java +++ /dev/null @@ -1,7 +0,0 @@ -package at.ac.tuwien.lsdc.sched.sched3; - -import at.ac.tuwien.lsdc.sched.AbstractScheduler; - -public class Scheduler3 extends AbstractScheduler { - -} diff --git a/src/main/java/at/ac/tuwien/lsdc/types/Application.java b/src/main/java/at/ac/tuwien/lsdc/types/Application.java deleted file mode 100644 index 3347dde..0000000 --- a/src/main/java/at/ac/tuwien/lsdc/types/Application.java +++ /dev/null @@ -1,5 +0,0 @@ -package at.ac.tuwien.lsdc.types; - -public class Application { - -} diff --git a/src/main/java/at/ac/tuwien/lsdc/types/Task.java b/src/main/java/at/ac/tuwien/lsdc/types/Task.java deleted file mode 100644 index 22ce550..0000000 --- a/src/main/java/at/ac/tuwien/lsdc/types/Task.java +++ /dev/null @@ -1,6 +0,0 @@ -package at.ac.tuwien.lsdc.types; - -// one line of a CSV-File. Convert to APP or try to outsource. -public class Task { - -} diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml deleted file mode 100644 index 4cb3709..0000000 --- a/src/main/resources/logback.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - %-4relative [%thread] %-5level %class - %msg%n - - - - - - %-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/java/dummy b/src/test/java/dummy deleted file mode 100644 index 2a51033..0000000 --- a/src/test/java/dummy +++ /dev/null @@ -1 +0,0 @@ -just a dummy such that git can maintain the directory structure needed by maven \ No newline at end of file diff --git a/src/test/resources/dummy b/src/test/resources/dummy deleted file mode 100644 index 2a51033..0000000 --- a/src/test/resources/dummy +++ /dev/null @@ -1 +0,0 @@ -just a dummy such that git can maintain the directory structure needed by maven \ No newline at end of file -- 2.43.0