summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTim Watson <tim.watson@gmail.com>2012-05-08 17:55:57 +0100
committerTim Watson <tim.watson@gmail.com>2012-05-08 17:55:57 +0100
commit5bb861fc86301fcf371e77831e15f79da44ab3d3 (patch)
tree1d057b5d2bea997e99b87997488d313298fcaf8c /src
parent742ba50b4cd079e599aaa03ba2d2518adf26124f (diff)
downloadrabbitmq-server-git-5bb861fc86301fcf371e77831e15f79da44ab3d3.tar.gz
for bug24362 - assert that worker name is unregistered by the time we get a 'DOWN' notification
Diffstat (limited to 'src')
-rw-r--r--src/mirrored_supervisor_tests.erl25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/mirrored_supervisor_tests.erl b/src/mirrored_supervisor_tests.erl
index e8baabe8ff..3608d68381 100644
--- a/src/mirrored_supervisor_tests.erl
+++ b/src/mirrored_supervisor_tests.erl
@@ -51,7 +51,7 @@ test_migrate() ->
with_sups(fun([A, _]) ->
?MS:start_child(a, childspec(worker)),
Pid1 = pid_of(worker),
- kill(A, Pid1),
+ kill_registered(A, Pid1),
Pid2 = pid_of(worker),
false = (Pid1 =:= Pid2)
end, [a, b]).
@@ -61,10 +61,10 @@ test_migrate_twice() ->
with_sups(fun([A, B]) ->
?MS:start_child(a, childspec(worker)),
Pid1 = pid_of(worker),
- kill(A, Pid1),
+ kill_registered(A, Pid1),
{ok, C} = start_sup(c),
Pid2 = pid_of(worker),
- kill(B, Pid2),
+ kill_registered(B, Pid2),
Pid3 = pid_of(worker),
false = (Pid1 =:= Pid3),
kill(C)
@@ -124,7 +124,7 @@ test_large_group() ->
with_sups(fun([A, _, _, _]) ->
?MS:start_child(a, childspec(worker)),
Pid1 = pid_of(worker),
- kill(A, Pid1),
+ kill_registered(A, Pid1),
Pid2 = pid_of(worker),
false = (Pid1 =:= Pid2)
end, [a, b, c, d]).
@@ -134,7 +134,7 @@ test_childspecs_at_init() ->
S = childspec(worker),
with_sups(fun([A, _]) ->
Pid1 = pid_of(worker),
- kill(A, Pid1),
+ kill_registered(A, Pid1),
Pid2 = pid_of(worker),
false = (Pid1 =:= Pid2)
end, [{a, [S]}, {b, [S]}]).
@@ -143,7 +143,7 @@ test_anonymous_supervisors() ->
with_sups(fun([A, _B]) ->
?MS:start_child(A, childspec(worker)),
Pid1 = pid_of(worker),
- kill(A, Pid1),
+ kill_registered(A, Pid1),
Pid2 = pid_of(worker),
false = (Pid1 =:= Pid2)
end, [anon, anon]).
@@ -289,6 +289,19 @@ kill(Pid, Waits) ->
kill_wait(Pid),
[kill_wait(P) || P <- Waits].
+kill_registered(Pid, Child) ->
+ erlang:monitor(process, Pid),
+ erlang:monitor(process, Child),
+ {registered_name, Name} = erlang:process_info(Child, registered_name),
+ exit(Pid, kill),
+ kill_wait(Pid),
+ exit(Child, kill),
+ receive
+ {'DOWN', _Ref, process, Child, _Reason} ->
+ undefined = whereis(Name),
+ ok
+ end.
+
kill_wait(Pid) ->
receive
{'DOWN', _Ref, process, Pid, _Reason} ->