summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorFeideus <erwan.ulrich@gmail.com>2018-07-30 20:43:52 +0200
committerFeideus <erwan.ulrich@gmail.com>2018-07-30 20:43:52 +0200
commit99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74 (patch)
tree0404a24e9013e34120016289dd54ae5b5244ac20 /src/main
parent1cab84dee9e6e9d6cc61b2807c33de996b808fbe (diff)
downloadschemafuzz-99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74.tar.gz
schemafuzz-99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74.tar.bz2
schemafuzz-99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74.zip
implementing database state recovery
Diffstat (limited to 'src/main')
-rwxr-xr-xsrc/main/java/org/schemaspy/DBFuzzer.java9
-rwxr-xr-xsrc/main/java/org/schemaspy/Main.java31
-rwxr-xr-xsrc/main/java/org/schemaspy/cli/CommandLineArguments.java13
-rwxr-xr-xsrc/main/java/org/schemaspy/model/GenericTreeNode.java12
4 files changed, 64 insertions, 1 deletions
diff --git a/src/main/java/org/schemaspy/DBFuzzer.java b/src/main/java/org/schemaspy/DBFuzzer.java
index a73ddb9..e4071c1 100755
--- a/src/main/java/org/schemaspy/DBFuzzer.java
+++ b/src/main/java/org/schemaspy/DBFuzzer.java
@@ -211,7 +211,14 @@ public class DBFuzzer
//currentMutation.propagateWeight(); //update parents weight according to this node new weight
LOGGER.info("Target is : " + analyzer.getCommandLineArguments().getTarget());
- Process evaluatorProcess = new ProcessBuilder("/bin/bash", "./stackTraceCParser.sh", analyzer.getCommandLineArguments().getTarget(), Integer.toString(currentMutation.getId())).start();
+ ProcessBuilder ep = new ProcessBuilder("/bin/bash", "./stackTraceCParser.sh", analyzer.getCommandLineArguments().getTarget(), Integer.toString(currentMutation.getId()));
+ ArrayList<GenericTreeNode> pathToRoot = currentMutation.pathToRoot();
+ Collections.reverse(pathToRoot);
+ for(int i=0; i< pathToRoot.size();i++)
+ {
+ ep.environment().put("mut_"+pathToRoot.get(i).getId(),pathToRoot.get(i).getChosenChange().toString());
+ }
+ Process evaluatorProcess = ep.start();
evaluatorProcess.waitFor();
ReportVector mutationReport = new ReportVector(currentMutation);
mutationReport.parseFile("errorReports/parsedStackTrace_" + currentMutation.getId()); // initialises the reportVector stacktrace
diff --git a/src/main/java/org/schemaspy/Main.java b/src/main/java/org/schemaspy/Main.java
index e18158d..52bbc8f 100755
--- a/src/main/java/org/schemaspy/Main.java
+++ b/src/main/java/org/schemaspy/Main.java
@@ -32,6 +32,9 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
import java.lang.invoke.MethodHandles;
import java.util.Arrays;
@@ -75,6 +78,15 @@ public class Main implements CommandLineRunner {
return;
}
+ /*if(arguments.getSetErrorState() != null)
+ {
+ File f = new File(arguments.getSetErrorState());
+ if(f.exists() && !f.isDirectory()) {
+ setErrorState(f);
+ }
+ return;
+ }*/
+
runAnalyzer(args);
runFuzzer(args);
System.out.println(Thread.getAllStackTraces());
@@ -125,5 +137,24 @@ public class Main implements CommandLineRunner {
}
}
+ private void setErrorState(File f)
+ {
+ try
+ {
+ BufferedReader br = new BufferedReader(new FileReader(f));
+ StringBuilder sb = new StringBuilder();
+ String line = br.readLine();
+
+ while(line != null)
+ {
+ System.out.println(line);
+ line = br.readLine();
+ }
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/src/main/java/org/schemaspy/cli/CommandLineArguments.java b/src/main/java/org/schemaspy/cli/CommandLineArguments.java
index 973e0e5..a4c401d 100755
--- a/src/main/java/org/schemaspy/cli/CommandLineArguments.java
+++ b/src/main/java/org/schemaspy/cli/CommandLineArguments.java
@@ -132,6 +132,13 @@ public class CommandLineArguments {
@Parameter(
names = {
+ "-ses", "-setErrorState",
+ }
+ )
+ private String setErrorState;
+
+ @Parameter(
+ names = {
"-nr", "--no-report"
}
)
@@ -174,6 +181,8 @@ public class CommandLineArguments {
)
private Integer port;
+ public String getSetErrorState() {return setErrorState;}
+
public String getQuery() {
return query;
}
@@ -182,6 +191,10 @@ public class CommandLineArguments {
return helpRequired;
}
+ public boolean isSetErrorStateRequired() {
+ return helpRequired;
+ }
+
public boolean isDbHelpRequired() {
return dbHelpRequired;
}
diff --git a/src/main/java/org/schemaspy/model/GenericTreeNode.java b/src/main/java/org/schemaspy/model/GenericTreeNode.java
index 7d3b2ba..bdf0b9f 100755
--- a/src/main/java/org/schemaspy/model/GenericTreeNode.java
+++ b/src/main/java/org/schemaspy/model/GenericTreeNode.java
@@ -911,4 +911,16 @@ public class GenericTreeNode {
}
return result;
}
+
+ public ArrayList<GenericTreeNode> pathToRoot()
+ {
+ ArrayList<GenericTreeNode> res = new ArrayList<GenericTreeNode>();
+ GenericTreeNode tmp = this;
+ do{
+ res.add(tmp);
+ tmp = tmp.getParent();
+
+ }while(tmp != null);
+ return res;
+ }
}