package edu.usc.enl.dynamicmeasurement.process.scripts; import edu.usc.enl.dynamicmeasurement.algorithms.transform.EpochPacer; import edu.usc.enl.dynamicmeasurement.algorithms.transform.SourceDestinationPairTransformer; import edu.usc.enl.dynamicmeasurement.algorithms.transform.TransformHandler; import edu.usc.enl.dynamicmeasurement.data.FileListParser; import edu.usc.enl.dynamicmeasurement.model.WildcardPattern; import edu.usc.enl.dynamicmeasurement.process.PacketUser; import edu.usc.enl.dynamicmeasurement.process.Simulator; import org.apache.commons.cli.*; import java.io.File; /** * Created with IntelliJ IDEA. * User: masoud * Date: 9/20/13 * Time: 4:06 PM * <p> * This is for converting caida trace to csv file. the input format is output of an awk script */ public class ConvertPerEpochScript { public static void main(String[] args) throws Exception { String inputFolder = ""; String inputPattern = ""; String outputPrefix = ""; int chopSize = 60; Options options = new Options(); options.addOption(new Option("h", false, "Shows this help")); options.addOption(OptionBuilder.withArgName("Folder").hasArg().isRequired().withDescription("Input folder").create('i')); options.addOption(OptionBuilder.withArgName("File pattern").hasArg().isRequired().withDescription("<File prefix>+<start>-<end>").create("p")); options.addOption(OptionBuilder.withArgName("Output").hasArg().isRequired().withDescription("<Output folder>/<prefix>").create('o')); options.addOption(OptionBuilder.withArgName("seconds (Default=60)").hasArg().withType(Number.class).withDescription("File chop size").create('s')); CommandLineParser parser = new PosixParser(); try { CommandLine cmd = parser.parse(options, args); if (cmd.hasOption("h") || cmd.getOptions().length < options.getRequiredOptions().size()) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("java <classname>", options, true); System.exit(0); } inputFolder = cmd.getOptionValue('i'); inputPattern = cmd.getOptionValue('p'); outputPrefix = cmd.getOptionValue('o'); if (cmd.hasOption('s')) { chopSize = Integer.parseInt(cmd.getOptionValue('s')); } } catch (ParseException e) { System.err.println("Parsing failed. Reason: " + e.getMessage()); HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("java <classname>", options, true); System.exit(0); } new File(outputPrefix).getParentFile().mkdirs(); FileListParser fileListParser = new FileListParser(inputFolder); fileListParser.parse(inputPattern); String[] packetsFile = fileListParser.getPacketsFile(); // String[] packetsFile = new String[]{args[0]}; int updateStepDuration = 1000000; int maxTime = 0; { PacketUser user = new TraceRewrite(outputPrefix, chopSize); user = new TransformHandler(user); // ((TransformHandler) user).addTransform(new SkewPacketUser(new WildcardPattern(0, 32, 0), 1.0)); ((TransformHandler) user).addTransform(new SourceDestinationPairTransformer(new WildcardPattern(0, 32, 0))); user = new EpochPacer(user, updateStepDuration); new Simulator(maxTime).run(packetsFile, user); } } }