diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-17 14:36:22 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-17 14:36:22 -0700 |
| commit | 0c99d74c85b937e5d566a7f2899d75025d9c54ea (patch) | |
| tree | 9f4834d3fb1ec936fbea575d241f05a53c09336e /chapter23/src/test/java/com/seaofnodes | |
| parent | 410ee209ba1db89959f8e6be9cdaf2350e70fd27 (diff) | |
| download | Simple-0c99d74c85b937e5d566a7f2899d75025d9c54ea.tar.gz Simple-0c99d74c85b937e5d566a7f2899d75025d9c54ea.zip | |
Get makefiles and fuzzer testing uniform across chapters
Diffstat (limited to 'chapter23/src/test/java/com/seaofnodes')
| -rw-r--r-- | chapter23/src/test/java/com/seaofnodes/simple/FuzzerWrap.java | 27 | ||||
| -rw-r--r-- | chapter23/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java | 14 |
2 files changed, 35 insertions, 6 deletions
diff --git a/chapter23/src/test/java/com/seaofnodes/simple/FuzzerWrap.java b/chapter23/src/test/java/com/seaofnodes/simple/FuzzerWrap.java index d67b2065..b022bec9 100644 --- a/chapter23/src/test/java/com/seaofnodes/simple/FuzzerWrap.java +++ b/chapter23/src/test/java/com/seaofnodes/simple/FuzzerWrap.java @@ -7,15 +7,30 @@ import org.junit.Test; import static org.junit.Assert.assertTrue; /** - * To use the fuzzer run the <code>fuzzPeeps</code> methods. - * This can be done from IntelliJ Gui or remove the `@Ignore` annotation and start the test case from the command line - * via <code>mvn clean test -Dtest=com.seaofnodes.simple.Fuzzer08Test#fuzzPeeps</code> + * Normal tests run chapter-local regression seeds. Open failures and exploratory + * fuzzing are opt-in (run directly in the IDE or temporarily remove Ignore). + * Seeds depend on this chapter's generator; do not copy them between chapters. */ public class FuzzerWrap { + private static final long[] REGRESSION_SEEDS = { + }; + + private static final long[] OPEN_FAILING_SEEDS = { + }; + + @Test public void fuzzPeepsRegression () { fuzzPeepsSeeds(REGRESSION_SEEDS); } + @Test @Ignore public void fuzzPeepsOpenFailures() { fuzzPeepsSeeds(OPEN_FAILING_SEEDS); } + + private static void fuzzPeepsSeeds(long... seeds) { + var fuzzer = new Fuzzer(); + for (long seed : seeds) + fuzzer.fuzzPeepsRegression(seed); + } + @Ignore @Test - public void fuzzPeeps() { + public void fuzzPeepsLarge() { var fuzzer = new Fuzzer(); for (int i=0; i<1000000; i++) fuzzer.fuzzPeeps(i); @@ -23,8 +38,8 @@ public class FuzzerWrap { } - @Test - public void fuzzPeepsSmall() { + @Test @Ignore + public void fuzzPeepsRandom() { Random R = new Random(System.currentTimeMillis()); var fuzzer = new Fuzzer(); for (int i=0; i<100; i++) diff --git a/chapter23/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java b/chapter23/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java index 77e61b42..962202a6 100644 --- a/chapter23/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java +++ b/chapter23/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java @@ -171,4 +171,18 @@ public class Fuzzer { public boolean noExceptions() { return exceptions.isEmpty(); } + + /** Run a fixed chapter-local seed without reducing or swallowing failures. */ + public void fuzzPeepsRegression(long seed) { + var rand = new Random(seed); + var sb = new StringBuilder(); + var valid = new ScriptGenerator(rand, sb, true).genProgram(); + try { + runCheck(sb.toString(), valid); + } catch (Throwable e) { + AssertionError ae = new AssertionError("Fuzzer regression seed failed: " + seed); + ae.initCause(e); + throw ae; + } + } } |
