From f63188b4ea6e063f9eb30084de13763c627c25a1 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Sun, 11 Oct 2015 14:03:24 -0400 Subject: [PATCH] Refactoring. --- pkgs/racket-test/tests/racket/stress/fuzz.rkt | 94 ++++++++++++------- 1 file changed, 61 insertions(+), 33 deletions(-) diff --git a/pkgs/racket-test/tests/racket/stress/fuzz.rkt b/pkgs/racket-test/tests/racket/stress/fuzz.rkt index e9b42ee488..897060b352 100644 --- a/pkgs/racket-test/tests/racket/stress/fuzz.rkt +++ b/pkgs/racket-test/tests/racket/stress/fuzz.rkt @@ -7,7 +7,7 @@ (define val (bytes-ref bs byte)) (bytes-set! bs byte (bitwise-xor (expt 2 bit) val))) -(define (run-file bs) +(define (run-bytes bs) (sync (parameterize ([current-custodian (make-custodian)]) (thread @@ -18,7 +18,7 @@ (eval (parameterize ([read-accept-compiled #t]) (with-input-from-bytes bs read))))))))) -(define (run fname seed0 #:write? [out-fname? #f]) +(define (run-file fname seed0 #:write? [out-fname? #f]) (define seed (or seed0 (+ 1 (random (expt 2 30))))) (printf "seed: ~s\nname: ~a\n" seed fname) (flush-output) @@ -33,44 +33,72 @@ (call-with-output-file (build-path (current-directory) out-fname?) (lambda (o) (write-bytes bs o)))) - (run-file bs)))) + (run-bytes bs)))) -(let ([seed0 #f] [file #f] [dir #f] [forever? #f] [global-seed #f] [write? #f]) - (command-line - #:once-each - ["--oo" "forever" (set! forever? #t)] - #:once-any - ["-g" global-seed* "gloabl random seed" (set! global-seed (string->number global-seed*))] - ["-s" seed "random seed" (set! seed0 (string->number seed))] - #:once-any - ["-f" file* "filename to run" (set! file file*)] - ["-d" dir* "dir to run" (set! dir dir*)] - ["-c" "run over all collections" (set! dir (find-collects-dir))] - #:once-any - ["--write" filename "write mutated file" (begin (unless file - (error "--write requires -f")) - (set! write? filename))] - #:args () (void)) - (cond [global-seed] - [(getenv "RACKET_FUZZ_GLOBAL_SEED") => (lambda (v) (set! global-seed (string->number v)))] - [else (set! global-seed (+ 1 (random (expt 2 30))))]) +(define (go) + (let ([seed0 #f] [file #f] [dir #f] [forever? #f] [global-seed #f] [write? #f]) + (printf ">>> ~s\n" (current-command-line-arguments)) + (command-line + #:once-each + ["--oo" "forever" (set! forever? #t)] + #:once-any + ["-g" global-seed* "global random seed" (set! global-seed (string->number global-seed*))] + ["-s" seed "random seed" (set! seed0 (string->number seed))] + #:once-any + ["-f" file* "filename to run" (set! file file*)] + ["-d" dir* "dir to run" (set! dir dir*)] + ["-c" "run over all collections" (set! dir (find-collects-dir))] + #:once-any + ["--write" filename "write mutated file" (begin (unless file + (error "--write requires -f")) + (set! write? filename))] + #:args () (void)) + (cond [global-seed] + [(getenv "RACKET_FUZZ_GLOBAL_SEED") => (lambda (v) (set! global-seed (string->number v)))] + [else (set! global-seed (+ 1 (random (expt 2 30))))]) + (run seed0 file dir forever? global-seed write?))) + +(define (run seed0 file dir forever? global-seed write?) (printf "Global seed: ~a\n" global-seed) (random-seed global-seed) (let loop () - (cond [file (run file seed0 #:write? write?)] + (cond [file (run-file file seed0 #:write? write?)] [dir - (define files (sort (for/list ([f (in-directory dir)] - #:when (regexp-match #rx"\\.zo" f)) - f) - #:key path->string - stringstring + string>> ~s\n" (current-command-line-arguments)) + (command-line + #:once-each + ["--oo" "forever" (set! forever? #t)] + #:once-any + ["-g" global-seed* "global random seed" (set! global-seed (string->number global-seed*))] + ["-s" seed "random seed" (set! seed0 (string->number seed))] + #:once-any + ["-f" file* "filename to run" (set! file file*)] + ["-d" dir* "dir to run" (set! dir dir*)] + ["-c" "run over all collections" (set! dir (find-collects-dir))] + #:once-any + ["--write" filename "write mutated file" (begin (unless file + (error "--write requires -f")) + (set! write? filename))] + #:args () (void)) + (cond [global-seed] + [(getenv "RACKET_FUZZ_GLOBAL_SEED") => (lambda (v) (set! global-seed (string->number v)))] + [else (set! global-seed (+ 1 (random (expt 2 30))))]) + (run seed0 file dir forever? global-seed write?))) + +(module+ test + (require racket/vector syntax/location) + (parameterize ([current-command-line-arguments (vector-append #("-c") (current-command-line-arguments))]) + (dynamic-require (quote-module-path ".." main) #f)) (module config info (define random? #t)))