summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-04-17 14:58:46 +0100
committerSimon MacMullen <simon@rabbitmq.com>2012-04-17 14:58:46 +0100
commit1576b49d95dc7e3f55835df4959dd0bd31c45495 (patch)
treec838313c17563fe0899a3439177d3ff70e4eaa18
parentc2679fa79a9a474a103218548ca7f8602502f003 (diff)
downloadrabbitmq-server-git-1576b49d95dc7e3f55835df4959dd0bd31c45495.tar.gz
Clean up after tests
-rw-r--r--src/rabbit_registry.erl15
-rw-r--r--src/rabbit_runtime_parameters_test.erl5
-rw-r--r--src/rabbit_tests.erl2
3 files changed, 19 insertions, 3 deletions
diff --git a/src/rabbit_registry.erl b/src/rabbit_registry.erl
index 46c93503d2..637835c327 100644
--- a/src/rabbit_registry.erl
+++ b/src/rabbit_registry.erl
@@ -23,7 +23,8 @@
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2,
code_change/3]).
--export([register/3, binary_to_type/1, lookup_module/2, lookup_all/1]).
+-export([register/3, unregister/2,
+ binary_to_type/1, lookup_module/2, lookup_all/1]).
-define(SERVER, ?MODULE).
-define(ETS_NAME, ?MODULE).
@@ -32,6 +33,7 @@
-spec(start_link/0 :: () -> rabbit_types:ok_pid_or_error()).
-spec(register/3 :: (atom(), binary(), atom()) -> 'ok').
+-spec(unregister/2 :: (atom(), binary()) -> 'ok').
-spec(binary_to_type/1 ::
(binary()) -> atom() | rabbit_types:error('not_found')).
-spec(lookup_module/2 ::
@@ -50,6 +52,9 @@ start_link() ->
register(Class, TypeName, ModuleName) ->
gen_server:call(?SERVER, {register, Class, TypeName, ModuleName}, infinity).
+unregister(Class, TypeName) ->
+ gen_server:call(?SERVER, {unregister, Class, TypeName}, infinity).
+
%% This is used with user-supplied arguments (e.g., on exchange
%% declare), so we restrict it to existing atoms only. This means it
%% can throw a badarg, indicating that the type cannot have been
@@ -83,6 +88,10 @@ internal_register(Class, TypeName, ModuleName)
{{Class, internal_binary_to_type(TypeName)}, ModuleName}),
ok.
+internal_unregister(Class, TypeName) ->
+ true = ets:delete(?ETS_NAME, {Class, internal_binary_to_type(TypeName)}),
+ ok.
+
sanity_check_module(ClassModule, Module) ->
case catch lists:member(ClassModule,
lists:flatten(
@@ -109,6 +118,10 @@ handle_call({register, Class, TypeName, ModuleName}, _From, State) ->
ok = internal_register(Class, TypeName, ModuleName),
{reply, ok, State};
+handle_call({unregister, Class, TypeName}, _From, State) ->
+ ok = internal_unregister(Class, TypeName),
+ {reply, ok, State};
+
handle_call(Request, _From, State) ->
{stop, {unhandled_call, Request}, State}.
diff --git a/src/rabbit_runtime_parameters_test.erl b/src/rabbit_runtime_parameters_test.erl
index d6cdeab50b..f23b322722 100644
--- a/src/rabbit_runtime_parameters_test.erl
+++ b/src/rabbit_runtime_parameters_test.erl
@@ -18,11 +18,14 @@
-behaviour(rabbit_runtime_parameter).
-export([validate/3, validate_clear/2, notify/3, notify_clear/2]).
--export([register/0]).
+-export([register/0, unregister/0]).
register() ->
rabbit_registry:register(runtime_parameter, <<"test">>, ?MODULE).
+unregister() ->
+ rabbit_registry:unregister(runtime_parameter, <<"test">>).
+
validate(<<"test">>, <<"good">>, _Term) -> ok;
validate(<<"test">>, <<"maybe">>, <<"good">>) -> ok;
validate(<<"test">>, _, _) -> {error, "meh", []}.
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 1e3a2b86ff..3e70b934ee 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -1126,7 +1126,7 @@ test_runtime_parameters() ->
ok = control_action(clear_parameter, ["test", "maybe"]),
{error_string, _} =
control_action(clear_parameter, ["test", "neverexisted"]),
-
+ rabbit_runtime_parameters_test:unregister(),
passed.
test_server_status() ->