package edu.usc.enl.dynamicmeasurement.data.scenario;
import edu.usc.enl.dynamicmeasurement.algorithms.transform.EpochPacer;
import edu.usc.enl.dynamicmeasurement.model.WildcardPattern;
import edu.usc.enl.dynamicmeasurement.process.PacketUser;
import edu.usc.enl.dynamicmeasurement.process.Simulator;
import edu.usc.enl.dynamicmeasurement.process.scripts.SumReportPrefixes;
import edu.usc.enl.dynamicmeasurement.util.NumberAwareComparator;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 12/25/13
* Time: 3:52 PM
*/
public class CreateTraceSummary {
public static void main(String[] args) throws FileNotFoundException {
List<String> folders = listFolders(args[0]);
List<WildcardPattern> wildcardPatterns = MultiFileScenarioGenerator.getWildcardPatterns(new WildcardPattern(0, WildcardPattern.TOTAL_LENGTH, 0), 16);
for (String folder : folders) {
File folderFile = new File(folder);
File[] files = folderFile.listFiles();
if (files == null) {
throw new RuntimeException("Folder " + folder + " not found");
}
Arrays.sort(files, new NumberAwareComparator());
String[] packetsFile = new String[files.length];
int i = 0;
for (File file : files) {
packetsFile[i++] = file.getAbsolutePath();
}
// SumReportPrefixesWrite user1 = new SumReportPrefixesWrite(wildcardPatterns, "output/traceprofile/"+folders[0].replaceAll(".*[/\\\\]",""));
SumReportPrefixes user1 = new SumReportPrefixes(wildcardPatterns, false);
PacketUser user = new EpochPacer(user1, 1000000);
//run simulator
new Simulator(0).run(packetsFile, user);
try (PrintWriter pw = new PrintWriter(folder + "/summary.txt")) {
for (WildcardPattern wildcardPattern : wildcardPatterns) {
pw.println(wildcardPattern.toStringNoWeight() + "," + wildcardPattern.getWeight());
}
}
}
}
private static List<String> listFolders(String tracesRootFolder) {
List<String> output;
File file = new File(tracesRootFolder);
File[] files = file.listFiles();
if (files == null) {
System.err.println("Trace folder " + tracesRootFolder + " cannot be accessed");
System.exit(1);
}
output = new ArrayList<>(files.length);
for (File file1 : files) {
output.add(file1.getPath());
}
return output;
}
}