diff --git a/fuzzer/Fuzzer.java b/fuzzer/Fuzzer.java index 344a45f055c7f0e46fcd896a925a30dbed11b5bc..fed23b73d44e28392272da730080b47d2f84cc16 100644 --- a/fuzzer/Fuzzer.java +++ b/fuzzer/Fuzzer.java @@ -113,16 +113,19 @@ public class Fuzzer { switch (runCount){ case 0: // Test with stack full - return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE); + return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE, false); case 1: // Test with stack full - return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE - 1); + return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE - 1, false); case 3: // Run static tests and empty stack - return getStaticTests() + generateInput(true, INSTRUCTION_MAX, 0); + return getStaticTests() + generateInput(true, INSTRUCTION_MAX, 0, false); + case 4: + // Test with dynamic probability + return generateInput(true, INSTRUCTION_MAX, 0, true); } // Run from random stack - return generateInput(true, INSTRUCTION_MAX, 0); + return generateInput(true, INSTRUCTION_MAX, 0, false); } /* @@ -154,7 +157,7 @@ public class Fuzzer { boolean stackFull = rand.nextInt(100) < STACK_FULL_PERCENTAGE; result.append(generateInput(false, - INSTRUCTION_MAX, MAX_STACK_SIZE)); + INSTRUCTION_MAX, MAX_STACK_SIZE, false)); // Increment generated generated += 1; } @@ -168,7 +171,7 @@ public class Fuzzer { * @param numInstructions for the line * @return the concatenated input for the program as a string */ - private static String generateInput(boolean correct, long numInstructions, int stackPreload ){ + private static String generateInput(boolean correct, long numInstructions, int stackPreload, boolean dynamicProb){ int stackSize = 0; int counter = 0; @@ -184,7 +187,9 @@ public class Fuzzer { Instruction newInstr = Instruction.getRandomInstruction(stackSize, addProb); stackSize = stackSize + newInstr.getStackChange(); result.append(completeInstruction(true, newInstr)); - addCountProb(newInstr); + if (dynamicProb) { + addCountProb(newInstr); + } counter += 1; } } else { @@ -193,11 +198,15 @@ public class Fuzzer { if (rand.nextInt(100) < LINE_ERROR_PERCENTAGE){ newInstr = Instruction.getRandomInstruction(2, addProb); result.append(completeInstruction(false, newInstr)); - addCountProb(newInstr); + if (dynamicProb) { + addCountProb(newInstr); + } } else { newInstr = Instruction.getRandomInstruction(stackSize, addProb); result.append(completeInstruction(true, newInstr)); - addCountProb(newInstr); + if (dynamicProb) { + addCountProb(newInstr); + } } stackSize = stackSize + newInstr.getStackChange(); if (stackSize < 0){