diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-04-17 14:58:46 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-04-17 14:58:46 +0100 |
| commit | 1576b49d95dc7e3f55835df4959dd0bd31c45495 (patch) | |
| tree | c838313c17563fe0899a3439177d3ff70e4eaa18 /src | |
| parent | c2679fa79a9a474a103218548ca7f8602502f003 (diff) | |
| download | rabbitmq-server-git-1576b49d95dc7e3f55835df4959dd0bd31c45495.tar.gz | |
Clean up after tests
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_registry.erl | 15 | ||||
| -rw-r--r-- | src/rabbit_runtime_parameters_test.erl | 5 | ||||
| -rw-r--r-- | src/rabbit_tests.erl | 2 |
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() -> |
