aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2013-06-19 21:30:31 +1000
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2013-06-19 21:46:22 +1000
commit89c3cf3677e8b10dbf237e19b43e0fcabd6e72e0 (patch)
tree691108ad6361ad684a248fb40584f372c2086862 /src
parentAdd tests for modules using MySQL/PostgreSQL (diff)
Shutdown rooms before starting test cases
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc.erl16
-rw-r--r--src/mod_muc_room.erl2
2 files changed, 17 insertions, 1 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index 05becd20b..7dd1736db 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -41,6 +41,7 @@
restore_room/3,
forget_room/3,
create_room/5,
+ shutdown_rooms/1,
process_iq_disco_items/4,
broadcast_service_message/2,
can_use_nick/4]).
@@ -96,10 +97,23 @@ start(Host, Opts) ->
supervisor:start_child(ejabberd_sup, ChildSpec).
stop(Host) ->
+ Rooms = shutdown_rooms(Host),
stop_supervisor(Host),
Proc = gen_mod:get_module_proc(Host, ?PROCNAME),
gen_server:call(Proc, stop),
- supervisor:delete_child(ejabberd_sup, Proc).
+ supervisor:delete_child(ejabberd_sup, Proc),
+ {wait, Rooms}.
+
+shutdown_rooms(Host) ->
+ MyHost = gen_mod:get_module_opt_host(Host, mod_muc,
+ <<"conference.@HOST@">>),
+ Rooms = mnesia:dirty_select(muc_online_room,
+ [{#muc_online_room{name_host = '$1',
+ pid = '$2'},
+ [{'==', {element, 2, '$1'}, MyHost}],
+ ['$2']}]),
+ [Pid ! shutdown || Pid <- Rooms],
+ Rooms.
%% This function is called by a room in three situations:
%% A) The owner of the room destroyed it
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 7c9bdd41b..05a6ec4c0 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -830,6 +830,8 @@ handle_info({captcha_failed, From}, normal_state,
_ -> StateData
end,
{next_state, normal_state, NewState};
+handle_info(shutdown, _StateName, StateData) ->
+ {stop, shutdown, StateData};
handle_info(_Info, StateName, StateData) ->
{next_state, StateName, StateData}.