Commit Graph

17 Commits

Author SHA1 Message Date
Michael Walker
c12cbcf707 Implement BPOR for SCT, return to listy predicates.
This performs better with "real" code (the Par monad) but surprisingly does far
worse with the included tests! The next thing to do is implement the orthogonal
sleep sets algorithm to cut down on available choices even further and
hopefully correct this issue.

See also: "Bounded Partial-Order Reduction" [Coons, Musuvathi, McKinley 2013]
2015-07-16 22:32:30 +01:00
Michael Walker
dab69aebcc Make alwaysTrue2 result less confusing when applied to one schedule only. 2015-07-08 18:20:08 +01:00
Michael Walker
df69f4778c Improve error reporting in alwaysTrue2 (less zealous about short-circuiting 2015-06-24 15:59:54 +01:00
Michael Walker
8944ea97a5 Use schedule bounding as the primary SCT approach.
This allows results to be naturally reported as lazy trees, rather
than as lists representing a tree traversal. This in turn means
that the actual bound can be moved outwards to the testing code, and
not used at all in the runner. Trees let us do nice things with
shrinking and short-circuiting, if we make the (fairly reasonable)
assumption that the children of a buggy result will exhibit the same
bug.

Storing results as trees does complicate the predicate helper
functions somewhat, but I think the clarity gained in the actual
SCT code is well worth it.
2015-06-19 16:50:51 +01:00
Michael Walker
a93f8202e4 Add dejafus/dejafusIO variants to take a pre-emption bound 2015-05-26 04:14:10 +01:00
Michael Walker
6c4015c314 Avoid re-running tests in dejafus. Closes #12. 2015-02-26 21:57:55 +00:00
Michael Walker
9609823dd5 Add exception checking to autocheck 2015-02-17 11:22:17 +00:00
Michael Walker
998fdeb833 Update the deadlocks* predicates to handle STMDeadlock, and add exceptions* predicates 2015-02-17 05:58:25 +00:00
Michael Walker
97611ff5b5 Implement catching exceptions 2015-02-13 00:50:58 +00:00
Michael Walker
1cc5ade782 Reimplement CVar blocking in the same way as CTVar blocking 2015-02-09 23:43:18 +00:00
Michael Walker
c20db31561 Include reason for failure in Deterministic result 2015-02-06 16:04:59 +00:00
Michael Walker
4c0f131942 Better dupe elimination 2015-02-04 16:51:50 +00:00
Michael Walker
bc31ddc5e1 Remove shrinking.
- Tweak order in which schedules are explored to look at simple,
   but not too simple, cases first.

 - Port simplicity logic from shrinking to dupe elimination.
2015-02-04 11:45:08 +00:00
Michael Walker
4f6eade3bb Make resEq more flexible 2015-02-02 16:11:37 +00:00
Michael Walker
242b661185 Filter out duplicate failures in runTest 2015-02-01 21:55:25 +00:00
Michael Walker
00ad122b65 Refactor code and update docs to make more not-me friendly 2015-02-01 01:21:42 +00:00
Michael Walker
fbc262c361 Rename and remodularise 2015-01-31 15:50:54 +00:00