Skip to content

Commit dbe1887

Browse files
committed
[PEx] Adds writing buggy trace in file
Adds serializing buggy trace in file Minor renaming
1 parent 78b7dff commit dbe1887

File tree

7 files changed

+37
-5
lines changed

7 files changed

+37
-5
lines changed

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/RuntimeExecutor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ private static void process(boolean resume) throws Exception {
100100
PExplicitGlobal.setResult(String.format("found cex of length %d", scheduler.getStepNumber()));
101101
PExplicitLogger.logStackTrace(e);
102102

103+
String schFile = PExplicitGlobal.getConfig().getOutputFolder() + "/" + PExplicitGlobal.getConfig().getProjectName() + "_0_0.schedule";
104+
PExplicitLogger.logInfo(String.format("Writing buggy trace in %s", schFile));
105+
scheduler.schedule.writeToFile(schFile);
106+
103107
ReplayScheduler replayer = new ReplayScheduler(scheduler.schedule);
104108
PExplicitGlobal.setScheduler(replayer);
105109
try {

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/logger/PExplicitLogger.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import pexplicit.runtime.machine.PMonitor;
1414
import pexplicit.runtime.machine.State;
1515
import pexplicit.runtime.machine.events.PContinuation;
16+
import pexplicit.runtime.scheduler.Schedule;
1617
import pexplicit.runtime.scheduler.choice.ScheduleSearchUnit;
1718
import pexplicit.runtime.scheduler.choice.SearchUnit;
1819
import pexplicit.runtime.scheduler.explicit.ExplicitSearchScheduler;
@@ -167,6 +168,17 @@ public static void logNewTasks(List<SearchTask> tasks) {
167168
}
168169
}
169170

171+
/**
172+
* Log when serializing a schedule
173+
*
174+
* @param schedule Schedule to serialize
175+
* @param szBytes Bytes written
176+
*/
177+
public static void logSerializeSchedule(Schedule schedule, String fileName, long szBytes) {
178+
if (verbosity > 1) {
179+
}
180+
}
181+
170182
/**
171183
* Log when serializing a task
172184
*

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/logger/ScheduleWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class ScheduleWriter {
2121
public static void Initialize() {
2222
try {
2323
// get new file name
24-
fileName = PExplicitGlobal.getConfig().getOutputFolder() + "/" + PExplicitGlobal.getConfig().getProjectName() + "_0_0.schedule";
24+
fileName = PExplicitGlobal.getConfig().getOutputFolder() + "/" + PExplicitGlobal.getConfig().getProjectName() + "_0_0.steps";
2525
// Define new file printer
2626
File schFile = new File(fileName);
2727
schFile.getParentFile().mkdirs();

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/Schedule.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.Getter;
44
import lombok.Setter;
55
import pexplicit.runtime.PExplicitGlobal;
6+
import pexplicit.runtime.logger.PExplicitLogger;
67
import pexplicit.runtime.machine.PMachineId;
78
import pexplicit.runtime.scheduler.choice.Choice;
89
import pexplicit.runtime.scheduler.choice.DataChoice;
@@ -11,7 +12,12 @@
1112
import pexplicit.runtime.scheduler.explicit.StepState;
1213
import pexplicit.values.PValue;
1314

15+
import java.io.FileOutputStream;
16+
import java.io.IOException;
17+
import java.io.ObjectOutputStream;
1418
import java.io.Serializable;
19+
import java.nio.file.Files;
20+
import java.nio.file.Paths;
1521
import java.util.ArrayList;
1622
import java.util.List;
1723

@@ -146,4 +152,14 @@ public void clear() {
146152
public int size() {
147153
return choices.size();
148154
}
155+
156+
public void writeToFile(String fileName) {
157+
try {
158+
FileOutputStream fos = new FileOutputStream(fileName);
159+
ObjectOutputStream oos = new ObjectOutputStream(fos);
160+
oos.writeObject(this);
161+
} catch (IOException e) {
162+
throw new RuntimeException("Failed to write schedule in file " + fileName, e);
163+
}
164+
}
149165
}

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/explicit/ExplicitSearchScheduler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ private void setChildTask(SearchUnit unit, int choiceNum, SearchTask parentTask,
475475
newTask.addPrefixChoice(schedule.getChoice(i));
476476
}
477477

478-
newTask.serializeTask();
478+
newTask.writeToFile();
479479
parentTask.addChild(newTask);
480480
searchStrategy.addNewTask(newTask);
481481
}

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/explicit/strategy/SearchStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public SearchTask setNextTask() {
7676
}
7777

7878
SearchTask nextTask = popNextTask();
79-
nextTask.deserializeTask();
79+
nextTask.readFromFile();
8080
setCurrTask(nextTask);
8181

8282
return nextTask;

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/explicit/strategy/SearchTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ public static void Cleanup() {
239239
}
240240
}
241241

242-
public void serializeTask() {
242+
public void writeToFile() {
243243
assert (serializeFile == null);
244244
assert (prefixChoices != null);
245245
assert (searchUnits != null);
@@ -260,7 +260,7 @@ public void serializeTask() {
260260
searchUnits = null;
261261
}
262262

263-
public void deserializeTask() {
263+
public void readFromFile() {
264264
assert (serializeFile != null);
265265
assert (prefixChoices == null);
266266
assert (searchUnits == null);

0 commit comments

Comments
 (0)