summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_control.erl27
-rw-r--r--src/rabbit_tests.erl174
2 files changed, 81 insertions, 120 deletions
diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl
index 8364ecd8d7..571eb5e4df 100644
--- a/src/rabbit_control.erl
+++ b/src/rabbit_control.erl
@@ -382,12 +382,9 @@ rpc_call(Node, Mod, Fun, Args) ->
%% characters. We don't escape characters above 127, since they may
%% form part of UTF-8 strings.
-escape(Atom) when is_atom(Atom) ->
- escape(atom_to_list(Atom));
-escape(Bin) when is_binary(Bin) ->
- escape(binary_to_list(Bin));
-escape(L) when is_list(L) ->
- escape_char(lists:reverse(L), []).
+escape(Atom) when is_atom(Atom) -> escape(atom_to_list(Atom));
+escape(Bin) when is_binary(Bin) -> escape(binary_to_list(Bin));
+escape(L) when is_list(L) -> escape_char(lists:reverse(L), []).
escape_char([$\\ | T], Acc) ->
escape_char(T, [$\\, $\\ | Acc]);
@@ -402,19 +399,15 @@ escape_char([], Acc) ->
prettify_amqp_table(Table) ->
[{escape(K), prettify_typed_amqp_value(T, V)} || {K, T, V} <- Table].
-prettify_typed_amqp_value(Type, Value) ->
- case Type of
- longstr -> escape(Value);
- table -> prettify_amqp_table(Value);
- array -> [prettify_typed_amqp_value(T, V) || {T, V} <- Value];
- _ -> Value
- end.
+prettify_typed_amqp_value(longstr, Value) -> escape(Value);
+prettify_typed_amqp_value(table, Value) -> prettify_amqp_table(Value);
+prettify_typed_amqp_value(array, Value) -> [prettify_typed_amqp_value(T, V) ||
+ {T, V} <- Value];
+prettify_typed_amqp_value(_Type, Value) -> Value.
%% the slower shutdown on windows required to flush stdout
quit(Status) ->
case os:type() of
- {unix, _} ->
- halt(Status);
- {win32, _} ->
- init:stop(Status)
+ {unix, _} -> halt(Status);
+ {win32, _} -> init:stop(Status)
end.
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index ca046c9198..ea7d134388 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -598,39 +598,37 @@ test_topic_matching() ->
exchange_op_callback(X, create, []),
%% add some bindings
- Bindings = lists:map(
- fun ({Key, Q}) ->
- #binding{source = XName,
- key = list_to_binary(Key),
- destination = #resource{virtual_host = <<"/">>,
- kind = queue,
- name = list_to_binary(Q)}}
- end, [{"a.b.c", "t1"},
- {"a.*.c", "t2"},
- {"a.#.b", "t3"},
- {"a.b.b.c", "t4"},
- {"#", "t5"},
- {"#.#", "t6"},
- {"#.b", "t7"},
- {"*.*", "t8"},
- {"a.*", "t9"},
- {"*.b.c", "t10"},
- {"a.#", "t11"},
- {"a.#.#", "t12"},
- {"b.b.c", "t13"},
- {"a.b.b", "t14"},
- {"a.b", "t15"},
- {"b.c", "t16"},
- {"", "t17"},
- {"*.*.*", "t18"},
- {"vodka.martini", "t19"},
- {"a.b.c", "t20"},
- {"*.#", "t21"},
- {"#.*.#", "t22"},
- {"*.#.#", "t23"},
- {"#.#.#", "t24"},
- {"*", "t25"},
- {"#.b.#", "t26"}]),
+ Bindings = [#binding{source = XName,
+ key = list_to_binary(Key),
+ destination = #resource{virtual_host = <<"/">>,
+ kind = queue,
+ name = list_to_binary(Q)}} ||
+ {Key, Q} <- [{"a.b.c", "t1"},
+ {"a.*.c", "t2"},
+ {"a.#.b", "t3"},
+ {"a.b.b.c", "t4"},
+ {"#", "t5"},
+ {"#.#", "t6"},
+ {"#.b", "t7"},
+ {"*.*", "t8"},
+ {"a.*", "t9"},
+ {"*.b.c", "t10"},
+ {"a.#", "t11"},
+ {"a.#.#", "t12"},
+ {"b.b.c", "t13"},
+ {"a.b.b", "t14"},
+ {"a.b", "t15"},
+ {"b.c", "t16"},
+ {"", "t17"},
+ {"*.*.*", "t18"},
+ {"vodka.martini", "t19"},
+ {"a.b.c", "t20"},
+ {"*.#", "t21"},
+ {"#.*.#", "t22"},
+ {"*.#.#", "t23"},
+ {"#.#.#", "t24"},
+ {"*", "t25"},
+ {"#.b.#", "t26"}]],
lists:foreach(fun (B) -> exchange_op_callback(X, add_binding, [B]) end,
Bindings),
@@ -669,22 +667,23 @@ test_topic_matching() ->
ordsets:from_list(RemovedBindings))),
%% test some matches
- test_topic_expect_match(X,
- [{"a.b.c", ["t2", "t6", "t10", "t12", "t18", "t20", "t22",
- "t23", "t24", "t26"]},
- {"a.b", ["t3", "t6", "t7", "t8", "t9", "t12", "t15",
- "t22", "t23", "t24", "t26"]},
- {"a.b.b", ["t3", "t6", "t7", "t12", "t14", "t18", "t22",
- "t23", "t24", "t26"]},
- {"", ["t6", "t17", "t24"]},
- {"b.c.c", ["t6", "t18", "t22", "t23", "t24", "t26"]},
- {"a.a.a.a.a", ["t6", "t12", "t22", "t23", "t24"]},
- {"vodka.gin", ["t6", "t8", "t22", "t23", "t24"]},
- {"vodka.martini", ["t6", "t8", "t22", "t23", "t24"]},
- {"b.b.c", ["t6", "t10", "t13", "t18", "t22", "t23",
- "t24", "t26"]},
- {"nothing.here.at.all", ["t6", "t22", "t23", "t24"]},
- {"oneword", ["t6", "t22", "t23", "t24", "t25"]}]),
+ test_topic_expect_match(
+ X,
+ [{"a.b.c", ["t2", "t6", "t10", "t12", "t18", "t20", "t22",
+ "t23", "t24", "t26"]},
+ {"a.b", ["t3", "t6", "t7", "t8", "t9", "t12", "t15",
+ "t22", "t23", "t24", "t26"]},
+ {"a.b.b", ["t3", "t6", "t7", "t12", "t14", "t18", "t22",
+ "t23", "t24", "t26"]},
+ {"", ["t6", "t17", "t24"]},
+ {"b.c.c", ["t6", "t18", "t22", "t23", "t24", "t26"]},
+ {"a.a.a.a.a", ["t6", "t12", "t22", "t23", "t24"]},
+ {"vodka.gin", ["t6", "t8", "t22", "t23", "t24"]},
+ {"vodka.martini", ["t6", "t8", "t22", "t23", "t24"]},
+ {"b.b.c", ["t6", "t10", "t13", "t18", "t22", "t23",
+ "t24", "t26"]},
+ {"nothing.here.at.all", ["t6", "t22", "t23", "t24"]},
+ {"oneword", ["t6", "t22", "t23", "t24", "t25"]}]),
%% remove the entire exchange
exchange_op_callback(X, delete, [RemainingBindings]),
@@ -1178,9 +1177,15 @@ test_server_status() ->
passed.
-test_spawn(Receiver) ->
+test_writer(Pid) ->
+ receive
+ shutdown -> ok;
+ {send_command, Method} -> Pid ! Method, test_writer(Pid)
+ end.
+
+test_spawn() ->
Me = self(),
- Writer = spawn(fun () -> Receiver(Me) end),
+ Writer = spawn(fun () -> test_writer(Me) end),
{ok, Ch} = rabbit_channel:start_link(
1, Me, Writer, Me, rabbit_framing_amqp_0_9_1,
user(<<"guest">>), <<"/">>, [], self(),
@@ -1198,20 +1203,9 @@ user(Username) ->
impl = #internal_user{username = Username,
is_admin = true}}.
-test_statistics_receiver(Pid) ->
- receive
- shutdown ->
- ok;
- {send_command, Method} ->
- Pid ! Method,
- test_statistics_receiver(Pid)
- end.
-
test_statistics_event_receiver(Pid) ->
receive
- Foo ->
- Pid ! Foo,
- test_statistics_event_receiver(Pid)
+ Foo -> Pid ! Foo, test_statistics_event_receiver(Pid)
end.
test_statistics_receive_event(Ch, Matcher) ->
@@ -1228,17 +1222,8 @@ test_statistics_receive_event1(Ch, Matcher) ->
after 1000 -> throw(failed_to_receive_event)
end.
-test_confirms_receiver(Pid) ->
- receive
- shutdown ->
- ok;
- {send_command, Method} ->
- Pid ! Method,
- test_confirms_receiver(Pid)
- end.
-
test_confirms() ->
- {_Writer, Ch} = test_spawn(fun test_confirms_receiver/1),
+ {_Writer, Ch} = test_spawn(),
DeclareBindDurableQueue =
fun() ->
rabbit_channel:do(Ch, #'queue.declare'{durable = true}),
@@ -1264,10 +1249,9 @@ test_confirms() ->
QPid1 = Q1#amqqueue.pid,
%% Enable confirms
rabbit_channel:do(Ch, #'confirm.select'{}),
- receive #'confirm.select_ok'{} ->
- ok
- after 1000 ->
- throw(failed_to_enable_confirms)
+ receive
+ #'confirm.select_ok'{} -> ok
+ after 1000 -> throw(failed_to_enable_confirms)
end,
%% Publish a message
rabbit_channel:do(Ch, #'basic.publish'{exchange = <<"amq.direct">>,
@@ -1279,25 +1263,19 @@ test_confirms() ->
QPid1 ! boom,
%% Wait for a nack
receive
- #'basic.nack'{} ->
- ok;
- #'basic.ack'{} ->
- throw(received_ack_instead_of_nack)
- after 2000 ->
- throw(did_not_receive_nack)
+ #'basic.nack'{} -> ok;
+ #'basic.ack'{} -> throw(received_ack_instead_of_nack)
+ after 2000 -> throw(did_not_receive_nack)
end,
receive
- #'basic.ack'{} ->
- throw(received_ack_when_none_expected)
- after 1000 ->
- ok
+ #'basic.ack'{} -> throw(received_ack_when_none_expected)
+ after 1000 -> ok
end,
%% Cleanup
rabbit_channel:do(Ch, #'queue.delete'{queue = QName2}),
- receive #'queue.delete_ok'{} ->
- ok
- after 1000 ->
- throw(failed_to_cleanup_queue)
+ receive
+ #'queue.delete_ok'{} -> ok
+ after 1000 -> throw(failed_to_cleanup_queue)
end,
unlink(Ch),
ok = rabbit_channel:shutdown(Ch),
@@ -1311,7 +1289,7 @@ test_statistics() ->
%% by far the most complex code though.
%% Set up a channel and queue
- {_Writer, Ch} = test_spawn(fun test_statistics_receiver/1),
+ {_Writer, Ch} = test_spawn(),
rabbit_channel:do(Ch, #'queue.declare'{}),
QName = receive #'queue.declare_ok'{queue = Q0} ->
Q0
@@ -1462,18 +1440,8 @@ test_delegates_sync(SecondaryNode) ->
passed.
-test_queue_cleanup_receiver(Pid) ->
- receive
- shutdown ->
- ok;
- {send_command, Method} ->
- Pid ! Method,
- test_queue_cleanup_receiver(Pid)
- end.
-
-
test_queue_cleanup(_SecondaryNode) ->
- {_Writer, Ch} = test_spawn(fun test_queue_cleanup_receiver/1),
+ {_Writer, Ch} = test_spawn(),
rabbit_channel:do(Ch, #'queue.declare'{ queue = ?CLEANUP_QUEUE_NAME }),
receive #'queue.declare_ok'{queue = ?CLEANUP_QUEUE_NAME} ->
ok