package edu.usc.enl.dynamicmeasurement.process.task; import edu.usc.enl.dynamicmeasurement.algorithms.transform.EpochPacer; import edu.usc.enl.dynamicmeasurement.algorithms.transform.TransformHandler; import edu.usc.enl.dynamicmeasurement.algorithms.transform.TransformHandlerInterface; import edu.usc.enl.dynamicmeasurement.data.ConfigReader; import edu.usc.enl.dynamicmeasurement.data.FileListParser; import edu.usc.enl.dynamicmeasurement.data.MultiFileTraceReader; import edu.usc.enl.dynamicmeasurement.data.PacketLoader; import edu.usc.enl.dynamicmeasurement.model.WildcardPattern; import edu.usc.enl.dynamicmeasurement.model.event.*; import edu.usc.enl.dynamicmeasurement.process.PacketUser; import edu.usc.enl.dynamicmeasurement.process.Simulator; import edu.usc.enl.dynamicmeasurement.util.Util; import org.apache.commons.cli.Options; import java.io.File; /** * Created with IntelliJ IDEA. * User: masoud * Date: 9/2/13 * Time: 12:07 AM <br/> * A very simple configuration runner that uses Simulator class */ public class MainScript { public static void main(String[] args) throws Exception { Options options = new Options(); for (String arg : args) { System.out.println(arg); } WildcardPattern.TOTAL_LENGTH = 32; for (String filename : args) { run(filename); } } private static void run(String filename) throws Exception { File file = new File(filename); if (file.isDirectory()) { filename = file.getAbsolutePath() + "/config.xml"; } ConfigReader configReader = new ConfigReader(); configReader.read(filename); // get end user //this should be able to add/remove tasks PacketUser user = configReader.getTaskHandler(); // wrap it by a user for traffic transform scenarios handler user = new TransformHandler(user); //if event needs task handler set task handler //if event needs transform handler set transform handler // set event runner task handler and traffic transformer handler to allow events to run for (Event event : configReader.getEvents()) { if (event instanceof TaskEvent) { ((TaskEvent) event).setHandler(configReader.getTaskHandler()); } else if (event instanceof TransformEvent) { ((TransformEvent) event).setHandler((TransformHandlerInterface) user); } else if (event instanceof AddTrafficEvent) { throw new RuntimeException("This does not support trace files"); } } // wrap it by event runner user = new EventRunner(user, configReader.getEvents()); // wrap it by epoch pacer user = new EpochPacer(user, Util.getSimulationConfiguration().getEpoch()); //create loader FileListParser fileListParser = new FileListParser(); try { fileListParser.parse(Util.getSimulationConfiguration().get("Input")); } catch (Exception e) { System.err.println(e.getMessage()); } PacketLoader loader = new PacketLoader(user.getQueue(), new MultiFileTraceReader(fileListParser.getPacketsFile()), 0); //pass loader and user to the simulation new Simulator(0).run(user, loader); } }