dejafu/dejafu-tests
Michael Walker cea4d59b3c Correctly count preemptions with commit threads.
Conceptually, commits are happening truly in parallel
nondeterministically, and the commit threads are introduced to unify
this source of nondeterminism with the scheduling decisions. Commit
threads are not real threads, and switching to one is not a real context
switch, it therefore doesn't count as a preemption.

For example, this execution clearly has no preemptions in:

    S1---C-S1---

It would be absurd to say it has 1 preemption. But what about this?

    S1---C-S2---

This clearly DOES have a preemption. S1 was preempted by C (but we don't
count that), and then S2 started to execute! Control should have been
returned to S1.

Prior to now, this case was not considered specially. So every commit
effectively gives rise to a free preemption! This is bad for two
reasons:

- More schedules get executed, so testing takes longer.
- This is actually, in a sense, unsound! Results are potentially being
  reported which could NEVER arise under ANY real-world execution
  subject to those bounds!

It is because of this latter point that some of the expected results in
test litmusWP27 have been removed. They require more than the standard
two preemptions to observe.

Closes #39.
2016-05-02 23:35:08 +01:00
..
Cases Correctly count preemptions with commit threads. 2016-05-02 23:35:08 +01:00
Examples Drop the lock and unlock MVar functions 2016-04-03 06:45:11 +01:00
Cases.hs Organise tests a little 2016-03-31 14:45:55 +01:00
dejafu-tests.cabal Bump version numbers for hackage release. 2016-04-03 14:40:51 +01:00
Examples.hs Add the Search Party failing test example 2016-03-31 15:08:37 +01:00
LICENSE Make a separate package for the test suite. Closes #31. 2015-12-01 05:07:56 +00:00
Main.hs Organise tests a little 2016-03-31 14:45:55 +01:00
Setup.hs Make a separate package for the test suite. Closes #31. 2015-12-01 05:07:56 +00:00
Utils.hs Make a separate package for the test suite. Closes #31. 2015-12-01 05:07:56 +00:00