Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: acc8fee43f
Fetching contributors…

Cannot retrieve contributors at this time

83 lines (78 sloc) 3.511 kb
NOTE: Search for %% for hints on what to look for when something goes wrong.
The echomany_sim.erl simulation shows that there is a bug in the first
draft of the message delay mechanism. To recreate:
% git checkout 0f46987
% make
% erl -pz sim -pz ./ebin
> Opts = [disable_partitions, {max_clients,1}, {max_servers,1}].
> eqc:quickcheck(slf_msgsim_qc:prop_simulate(echomany_sim, Opts)).
... and you'll get an error that looks something like this:
(If you don't get an error, then you probably forgot the first step, the
"git checkout" comand!)
runnable: passed
order: failed
[{client,c1,server,s1,should_be,[4,5],got,[5,4]}] /= [true]
Shrinking............(12 times)
%% One client, one server, one key (ignored)
%% Very simple scheduler
%% Messages from c1 -> s1 between executions steps 0 & 0 will be
%% delayed by one scheduling step.
F1 = {1,1,1}
F2 = {[{c1,{echo_op,s1,0}},{c1,{echo_op,s1,1}}],
End = {sched,11,4,
%% This is the system trace list, in reverse order.
%% Here is where server s1 receives c1's 2nd message first.
%% The first message from c1 -> s1 is delayed
%% This is the user trace list, in reverse order.
%% At step #7, client s1 received from server s1 the msg 1.
%% At step #10, client s1 received from server s1 the msg 0.
%% This is the scheduler's message delay schedule.
Runnable = [], Receivable = []
order: failed
%% Client c1 should have received answers in the order [0,1]
%% but instead got answers [1,0].
[{client,c1,server,s1,should_be,[0,1],got,[1,0]}] /= [true]
Jump to Line
Something went wrong with that request. Please try again.