Newer
Older
package eknife;
import java.io.File;
import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
import java.util.Scanner;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class BencherTest {
private static String TEST_PKG = "terminating-bench";
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private static final String TEST_PKG_INTRA = "bencher_intraprocedural";
private static final String DOT_ERLANG = ".erl";
private static final String EDG_OUTPUT_SLICE = ".edg.slice.output";
public static int cont = 1;
public static void findFiles(File directory, String suffix, Consumer<File> consumer) {
File[] files = directory.listFiles();
if (files == null)
return;
for (File f : files) {
if (f.isDirectory())
findFiles(f, suffix, consumer);
else if (f.getName().endsWith(suffix))
consumer.accept(f);
}
}
private static String readFile(File file, Supplier<String> separator) {
try (Scanner in = new Scanner(file)) {
StringBuilder builder = new StringBuilder();
while (in.hasNextLine())
builder.append(in.nextLine()).append(separator.get());
return builder.toString();
} catch (FileNotFoundException e) {
return "";
}
}
private static String readFile(File file) {
return readFile(file, () -> "\n");
}
private static boolean slicesMatch(File slice, File referenceSlice) {
return Objects.equals(readFile(slice), readFile(referenceSlice));
}
public static void main(String[] args) {
// TEST_PKG = "SetA";
File testFolder = new File("./", TEST_PKG);
findFiles(testFolder, DOT_ERLANG, file -> {
File outputDir = testFolder.getAbsoluteFile();
String inputFileName = testFolder.getAbsolutePath() + File.separator + file.getName();
String outputFileName = outputDir + File.separator + file.getName() + EDG_OUTPUT_SLICE;
String[] arguments = {"-i", inputFileName, "-o", outputFileName, "-l", "1", "-v", "X"};
System.out.printf("[%s] Slicing program #%d %s\n",
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date()),
BencherTest.cont, file.getName());