Skip to content

Commit

Permalink
Added full all option test
Browse files Browse the repository at this point in the history
  • Loading branch information
Gianfranco committed Jun 30, 2011
1 parent 9a1bdff commit b3243f8
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 12 deletions.
10 changes: 7 additions & 3 deletions src/frame_axiom.erl
Expand Up @@ -201,9 +201,13 @@ diff(Ets,process,received_messages) ->
lists:foldl( lists:foldl(
fun({RecPid,RecMessages},Acc) -> fun({RecPid,RecMessages},Acc) ->
OldMessages = proplists:get_value(RecPid,MessagesWithPids), OldMessages = proplists:get_value(RecPid,MessagesWithPids),
case [R||R<-OldMessages,not lists:member(R,RecMessages)] of case OldMessages of
[] -> Acc; undefined -> Acc;
X -> Acc++[{received,RecPid,X}] _ ->
case [R||R<-OldMessages,not lists:member(R,RecMessages)] of
[] -> Acc;
X -> Acc++[{received,RecPid,X}]
end
end end
end,[],RecordedWithPid); end,[],RecordedWithPid);
diff(Ets,process,consumed_messages) -> diff(Ets,process,consumed_messages) ->
Expand Down
55 changes: 46 additions & 9 deletions test/frame_axiom_tests.erl
Expand Up @@ -48,8 +48,7 @@ process_mailbox_received_test() ->
Message = {iMessage,make_ref()}, Message = {iMessage,make_ref()},
Pid ! Message, Pid ! Message,
?assertEqual([{received,Pid,[Message]}], ?assertEqual([{received,Pid,[Message]}],
frame_axiom:diff(Ref,[{process,Options}])), frame_axiom:diff(Ref,[{process,Options}])).
synchronoulsy_kill_process(Pid).


process_consumed_messages_test() -> process_consumed_messages_test() ->
Options = [consumed_messages], Options = [consumed_messages],
Expand All @@ -62,8 +61,7 @@ process_consumed_messages_test() ->
{Pid,consumed,Message} -> ok {Pid,consumed,Message} -> ok
end, end,
?assertEqual([{consumed,Pid,[Message]}], ?assertEqual([{consumed,Pid,[Message]}],
frame_axiom:diff(Ref,[{process,Options}])), frame_axiom:diff(Ref,[{process,Options}])).
synchronoulsy_kill_process(Pid).




named_process_creation_diff_test() -> named_process_creation_diff_test() ->
Expand Down Expand Up @@ -94,6 +92,44 @@ all_no_change_diff_test() ->
Ref = frame_axiom:snapshot([{process,Options}]), Ref = frame_axiom:snapshot([{process,Options}]),
?assertEqual([],frame_axiom:diff(Ref,[{process,Options}])). ?assertEqual([],frame_axiom:diff(Ref,[{process,Options}])).


all_change_diff_test() ->
process_flag(trap_exit,true),
Options = all,
Killed = synchronoulsy_start_a_process(),
Received = synchronoulsy_start_a_process(),
Consumed = synchronoulsy_start_a_synchronous_consumer_process(),
ConsumedMessage = {cMessage,make_ref()},
ReceivedMessage = {rMessage,make_ref()},
Consumed ! ConsumedMessage,
Replaced = synchronoulsy_start_named(named_process_c),
DiedNamed = synchronoulsy_start_named(named_process_b),
Ref = frame_axiom:snapshot([{process,Options}]),
Started = synchronoulsy_start_a_process(),
Received ! ReceivedMessage,
synchronoulsy_kill_process(Killed),
synchronoulsy_kill_process(Replaced),
Replacer = synchronoulsy_start_named(named_process_c),
NamedCreated = synchronoulsy_start_named(named_process_a),
Consumed ! consume,
receive
{Consumed,consumed,ConsumedMessage} -> ok
end,
synchronoulsy_kill_process(DiedNamed),
?assertEqual([{created,Started},
{created,Replacer},
{created,NamedCreated},
{died,Killed},
{died,Replaced},
{died,DiedNamed},
{received,Received,[ReceivedMessage]},
{consumed,Consumed,[ConsumedMessage]},
{created,named_process_a},
{died,named_process_b},
{replaced,named_process_c}
],
frame_axiom:diff(Ref,[{process,Options}])).


%% application %% application
%%---------------------------------------------------------- %%----------------------------------------------------------
application_creation_diff_test() -> application_creation_diff_test() ->
Expand Down Expand Up @@ -341,7 +377,7 @@ synchronoulsy_start_named(Name) ->
Pid = spawn_link(fun() -> Pid = spawn_link(fun() ->
register(Name,self()), register(Name,self()),
Master ! SharedSecret, Master ! SharedSecret,
receive _ -> ok end receive die -> ok end
end), end),
receive receive
SharedSecret -> SharedSecret ->
Expand All @@ -365,19 +401,20 @@ synchronoulsy_start_a_process() ->
synchronoulsy_start_a_synchronous_consumer_process() -> synchronoulsy_start_a_synchronous_consumer_process() ->
SharedSecret = make_ref(), SharedSecret = make_ref(),
Master = self(), Master = self(),
F = fun(F) -> R = fun() -> Master ! SharedSecret end,
Master ! SharedSecret, F = fun(F,T) ->
T(),
receive receive
die -> ok; die -> ok;
consume -> consume ->
receive receive
X -> X ->
Master ! {self(),consumed,X}, Master ! {self(),consumed,X},
F(F) F(F,fun() -> ok end)
end end
end end
end, end,
Pid = spawn_link(fun() ->F(F)end), Pid = spawn_link(fun() ->F(F,R) end),
receive receive
SharedSecret -> SharedSecret ->
ok ok
Expand Down

0 comments on commit b3243f8

Please sign in to comment.