diff options
author | Feideus <erwan.ulrich@gmail.com> | 2018-07-30 20:43:52 +0200 |
---|---|---|
committer | Feideus <erwan.ulrich@gmail.com> | 2018-07-30 20:43:52 +0200 |
commit | 99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74 (patch) | |
tree | 0404a24e9013e34120016289dd54ae5b5244ac20 /src/main | |
parent | 1cab84dee9e6e9d6cc61b2807c33de996b808fbe (diff) | |
download | schemafuzz-99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74.tar.gz schemafuzz-99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74.tar.bz2 schemafuzz-99d6adff0f959b4ddd3cbd964c75e13bcd1b5f74.zip |
implementing database state recovery
Diffstat (limited to 'src/main')
-rwxr-xr-x | src/main/java/org/schemaspy/DBFuzzer.java | 9 | ||||
-rwxr-xr-x | src/main/java/org/schemaspy/Main.java | 31 | ||||
-rwxr-xr-x | src/main/java/org/schemaspy/cli/CommandLineArguments.java | 13 | ||||
-rwxr-xr-x | src/main/java/org/schemaspy/model/GenericTreeNode.java | 12 |
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; + } } |