Make opt tests be run concurrently.

This commit is contained in:
Eric Dobson 2013-06-20 23:17:51 -07:00
parent 6b20900c7a
commit ed69691016

View File

@ -8,19 +8,22 @@
test-opt test-missed-optimization test-file?
generate-log tests-dir missed-optimizations-dir)
(define (get-expected-results file)
(with-input-from-file file
(lambda () ; from the test file
(read-line) ; skip the #;#;
(values (for/list ((l (in-lines (open-input-string (read))))) l)
(read)))))
;; we log optimizations and compare to an expected log to make sure that all
;; the optimizations we expected did indeed happen
(define (compare-logs name dir)
(define (compare-logs name dir promised-logs)
(test-suite
(format "Log Comparison for ~a" name)
(test-begin
(define-values (log output) (generate-log name dir))
(define-values (log output) (force promised-logs))
(define-values (expected-log expected-output)
(with-input-from-file (build-path dir name)
(lambda () ; from the test file
(read-line) ; skip the #;#;
(values (for/list ((l (in-lines (open-input-string (read))))) l)
(read)))))
(get-expected-results (build-path dir name)))
(check-equal? log expected-log)
(check-equal? output expected-output))))
@ -30,10 +33,10 @@
(define-runtime-path missed-optimizations-dir "./missed-optimizations")
;; these two return lists of tests to be run for that category of tests
(define (test-opt name)
(compare-logs name tests-dir))
(define (test-missed-optimization name)
(compare-logs name missed-optimizations-dir))
(define (test-opt name logs)
(compare-logs name tests-dir logs))
(define (test-missed-optimization name logs)
(compare-logs name missed-optimizations-dir logs))
(define (test-file? name)
(and (regexp-match ".*rkt$" name)
@ -42,11 +45,13 @@
;; proc returns the list of tests to be run on each file
(define (mk-suite suite-name dir proc)
(make-test-suite
suite-name
(for/list ([name (directory-list dir)]
#:when (test-file? name))
(proc name))))
(test-suite suite-name
(let* ((logs (for/hash ([name (directory-list dir)]
#:when (test-file? name))
(values name (delay/thread (generate-log name dir))))))
(make-test-suite ""
(for/list (((name logs) logs))
(proc name logs))))))
(define (optimization-tests)
(mk-suite "Optimization Tests" tests-dir test-opt))