diff --git a/deps/rabbitmq_stomp/.gitignore b/deps/rabbitmq_stomp/.gitignore index 0de886b0cb..b68dc58300 100644 --- a/deps/rabbitmq_stomp/.gitignore +++ b/deps/rabbitmq_stomp/.gitignore @@ -15,7 +15,7 @@ rabbitmq_stomp.d # Python testsuite. *.pyc -test/deps/pika/pika/ -test/deps/pika/pika-git/ -test/deps/stomppy/stomppy/ -test/deps/stomppy/stomppy-git/ +test/python_SUITE_data/deps/pika/pika/ +test/python_SUITE_data/deps/pika/pika-git/ +test/python_SUITE_data/deps/stomppy/stomppy/ +test/python_SUITE_data/deps/stomppy/stomppy-git/ diff --git a/deps/rabbitmq_stomp/test/amqqueue_SUITE.erl b/deps/rabbitmq_stomp/test/amqqueue_SUITE.erl index 03b747c4cd..300e86d824 100644 --- a/deps/rabbitmq_stomp/test/amqqueue_SUITE.erl +++ b/deps/rabbitmq_stomp/test/amqqueue_SUITE.erl @@ -46,12 +46,14 @@ groups() -> blank_destination_in_send ], - [{list_to_atom("version_" ++ V), [sequence], Tests} + [{list_to_atom("version_" ++ V), [sequence], Tests} || V <- ?SUPPORTED_VERSIONS]. init_per_suite(Config) -> + Config1 = rabbit_ct_helpers:set_config(Config, + [{rmq_nodename_suffix, ?MODULE}]), rabbit_ct_helpers:log_environment(), - rabbit_ct_helpers:run_setup_steps(Config, + rabbit_ct_helpers:run_setup_steps(Config1, rabbit_ct_broker_helpers:setup_steps()). end_per_suite(Config) -> @@ -63,7 +65,7 @@ init_per_group(Group, Config) -> end_per_group(_Group, Config) -> Config. -init_per_testcase(_, Config) -> +init_per_testcase(TestCase, Config) -> Version = ?config(version, Config), StompPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_stomp), {ok, Connection} = amqp_connection:start(#amqp_params_direct{ @@ -71,19 +73,44 @@ init_per_testcase(_, Config) -> }), {ok, Channel} = amqp_connection:open_channel(Connection), {ok, Client} = rabbit_stomp_client:connect(Version, StompPort), - rabbit_ct_helpers:set_config(Config, [ + Config1 = rabbit_ct_helpers:set_config(Config, [ {amqp_connection, Connection}, {amqp_channel, Channel}, {stomp_client, Client} - ]). + ]), + init_per_testcase0(TestCase, Config1). -end_per_testcase(_, Config) -> +end_per_testcase(TestCase, Config) -> Connection = ?config(amqp_connection, Config), Channel = ?config(amqp_channel, Config), Client = ?config(stomp_client, Config), rabbit_stomp_client:disconnect(Client), amqp_channel:close(Channel), amqp_connection:close(Connection), + end_per_testcase0(TestCase, Config). + +init_per_testcase0(publish_unauthorized_error, Config) -> + Channel = ?config(amqp_channel, Config), + #'queue.declare_ok'{} = + amqp_channel:call(Channel, #'queue.declare'{queue = <<"RestrictedQueue">>, + auto_delete = true}), + + rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_auth_backend_internal, add_user, [<<"user">>, <<"pass">>]), + rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_auth_backend_internal, set_permissions, [ + <<"user">>, <<"/">>, <<"nothing">>, <<"nothing">>, <<"nothing">>]), + Version = ?config(version, Config), + StompPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_stomp), + {ok, ClientFoo} = rabbit_stomp_client:connect(Version, "user", "pass", StompPort), + rabbit_ct_helpers:set_config(Config, [{client_foo, ClientFoo}]); +init_per_testcase0(_, Config) -> + Config. + +end_per_testcase0(publish_unauthorized_error, Config) -> + ClientFoo = ?config(client_foo, Config), + rabbit_stomp_client:disconnect(ClientFoo), + rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_auth_backend_internal, delete_user, [<<"user">>]), + Config; +end_per_testcase0(_, Config) -> Config. publish_no_dest_error(Config) -> @@ -95,29 +122,12 @@ publish_no_dest_error(Config) -> ok. publish_unauthorized_error(Config) -> - Channel = ?config(amqp_channel, Config), - Version = ?config(version, Config), - #'queue.declare_ok'{} = - amqp_channel:call(Channel, #'queue.declare'{queue = <<"RestrictedQueue">>, - auto_delete = true}), - - rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_auth_backend_internal, add_user, [<<"user">>, <<"pass">>]), - rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_auth_backend_internal, set_permissions, [ - <<"user">>, <<"/">>, <<"nothing">>, <<"nothing">>, <<"nothing">>]), - StompPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_stomp), - {ok, ClientFoo} = rabbit_stomp_client:connect(Version, "user", "pass", StompPort), - try - rabbit_stomp_client:send( - ClientFoo, "SEND", [{"destination", "/amq/queue/RestrictedQueue"}], ["hello"]), - {ok, _Client1, Hdrs, _} = stomp_receive(ClientFoo, "ERROR"), - "access_refused" = proplists:get_value("message", Hdrs), - ok - catch _:Err -> - Err - after - rabbit_stomp_client:disconnect(ClientFoo), - rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_auth_backend_internal, delete_user, [<<"user">>]) - end. + ClientFoo = ?config(client_foo, Config), + rabbit_stomp_client:send( + ClientFoo, "SEND", [{"destination", "/amq/queue/RestrictedQueue"}], ["hello"]), + {ok, _Client1, Hdrs, _} = stomp_receive(ClientFoo, "ERROR"), + "access_refused" = proplists:get_value("message", Hdrs), + ok. subscribe_error(Config) -> Client = ?config(stomp_client, Config), diff --git a/deps/rabbitmq_stomp/test/connections_SUITE.erl b/deps/rabbitmq_stomp/test/connections_SUITE.erl index 37ca6d5fb1..1971c54617 100644 --- a/deps/rabbitmq_stomp/test/connections_SUITE.erl +++ b/deps/rabbitmq_stomp/test/connections_SUITE.erl @@ -31,10 +31,13 @@ all() -> ]. init_per_suite(Config) -> + Config1 = rabbit_ct_helpers:set_config(Config, + [{rmq_nodename_suffix, ?MODULE}]), rabbit_ct_helpers:log_environment(), - rabbit_ct_helpers:run_setup_steps(Config, + rabbit_ct_helpers:run_setup_steps(Config1, rabbit_ct_broker_helpers:setup_steps()). + end_per_suite(Config) -> rabbit_ct_helpers:run_teardown_steps(Config). diff --git a/deps/rabbitmq_stomp/test/src/rabbit_stomp_test_frame.erl b/deps/rabbitmq_stomp/test/frame_SUITE.erl similarity index 78% rename from deps/rabbitmq_stomp/test/src/rabbit_stomp_test_frame.erl rename to deps/rabbitmq_stomp/test/frame_SUITE.erl index 6f427489e7..006d3b64e0 100644 --- a/deps/rabbitmq_stomp/test/src/rabbit_stomp_test_frame.erl +++ b/deps/rabbitmq_stomp/test/frame_SUITE.erl @@ -14,17 +14,45 @@ %% Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved. %% --module(rabbit_stomp_test_frame). +-module(frame_SUITE). +-include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("amqp_client/include/amqp_client.hrl"). -include("rabbit_stomp_frame.hrl"). -include("rabbit_stomp_headers.hrl"). +-compile(export_all). -parse_simple_frame_test() -> +all() -> + [ + parse_simple_frame, + parse_simple_frame_crlf, + parse_command_only, + parse_ignore_empty_frames, + parse_heartbeat_interframe, + parse_crlf_interframe, + parse_carriage_return_not_ignored_interframe, + parse_carriage_return_mid_command, + parse_carriage_return_end_command, + parse_resume_mid_command, + parse_resume_mid_header_key, + parse_resume_mid_header_val, + parse_resume_mid_body, + parse_no_header_stripping, + parse_multiple_headers, + header_no_colon, + no_nested_escapes, + header_name_with_cr, + header_value_with_cr, + header_value_with_colon, + headers_escaping_roundtrip, + headers_escaping_roundtrip_without_trailing_lf + ]. + +parse_simple_frame(_) -> parse_simple_frame_gen("\n"). -parse_simple_frame_crlf_test() -> +parse_simple_frame_crlf(_) -> parse_simple_frame_gen("\r\n"). parse_simple_frame_gen(Term) -> @@ -40,34 +68,34 @@ parse_simple_frame_gen(Term) -> #stomp_frame{body_iolist = Body} = Frame, ?assertEqual(<<"Body Content">>, iolist_to_binary(Body)). -parse_command_only_test() -> +parse_command_only(_) -> {ok, #stomp_frame{command = "COMMAND"}, _Rest} = parse("COMMAND\n\n\0"). -parse_ignore_empty_frames_test() -> +parse_ignore_empty_frames(_) -> {ok, #stomp_frame{command = "COMMAND"}, _Rest} = parse("\0\0COMMAND\n\n\0"). -parse_heartbeat_interframe_test() -> +parse_heartbeat_interframe(_) -> {ok, #stomp_frame{command = "COMMAND"}, _Rest} = parse("\nCOMMAND\n\n\0"). -parse_crlf_interframe_test() -> +parse_crlf_interframe(_) -> {ok, #stomp_frame{command = "COMMAND"}, _Rest} = parse("\r\nCOMMAND\n\n\0"). -parse_carriage_return_not_ignored_interframe_test() -> +parse_carriage_return_not_ignored_interframe(_) -> {error, {unexpected_chars_between_frames, "\rC"}} = parse("\rCOMMAND\n\n\0"). -parse_carriage_return_mid_command_test() -> +parse_carriage_return_mid_command(_) -> {error, {unexpected_chars_in_command, "\rA"}} = parse("COMM\rAND\n\n\0"). -parse_carriage_return_end_command_test() -> +parse_carriage_return_end_command(_) -> {error, {unexpected_chars_in_command, "\r\r"}} = parse("COMMAND\r\r\n\n\0"). -parse_resume_mid_command_test() -> +parse_resume_mid_command(_) -> First = "COMM", Second = "AND\n\n\0", {more, Resume} = parse(First), {ok, #stomp_frame{command = "COMMAND"}, _Rest} = parse(Second, Resume). -parse_resume_mid_header_key_test() -> +parse_resume_mid_header_key(_) -> First = "COMMAND\nheade", Second = "r1:value1\n\n\0", {more, Resume} = parse(First), @@ -76,7 +104,7 @@ parse_resume_mid_header_key_test() -> ?assertEqual({ok, "value1"}, rabbit_stomp_frame:header(Frame, "header1")). -parse_resume_mid_header_val_test() -> +parse_resume_mid_header_val(_) -> First = "COMMAND\nheader1:val", Second = "ue1\n\n\0", {more, Resume} = parse(First), @@ -85,7 +113,7 @@ parse_resume_mid_header_val_test() -> ?assertEqual({ok, "value1"}, rabbit_stomp_frame:header(Frame, "header1")). -parse_resume_mid_body_test() -> +parse_resume_mid_body(_) -> First = "COMMAND\n\nABC", Second = "DEF\0", {more, Resume} = parse(First), @@ -93,19 +121,19 @@ parse_resume_mid_body_test() -> parse(Second, Resume), ?assertEqual([<<"ABC">>, <<"DEF">>], Body). -parse_no_header_stripping_test() -> +parse_no_header_stripping(_) -> Content = "COMMAND\nheader: foo \n\n\0", {ok, Frame, _} = parse(Content), {ok, Val} = rabbit_stomp_frame:header(Frame, "header"), ?assertEqual(" foo ", Val). -parse_multiple_headers_test() -> +parse_multiple_headers(_) -> Content = "COMMAND\nheader:correct\nheader:incorrect\n\n\0", {ok, Frame, _} = parse(Content), {ok, Val} = rabbit_stomp_frame:header(Frame, "header"), ?assertEqual("correct", Val). -header_no_colon_test() -> +header_no_colon(_) -> Content = "COMMAND\n" "hdr1:val1\n" "hdrerror\n" @@ -113,7 +141,7 @@ header_no_colon_test() -> "\n\0", ?assertEqual(parse(Content), {error, {header_no_value, "hdrerror"}}). -no_nested_escapes_test() -> +no_nested_escapes(_) -> Content = "COM\\\\rAND\n" % no escapes "hdr\\\\rname:" % one escape "hdr\\\\rval\n\n\0", % one escape @@ -123,15 +151,15 @@ no_nested_escapes_test() -> headers = [{"hdr\\rname", "hdr\\rval"}], body_iolist = []}). -header_name_with_cr_test() -> +header_name_with_cr(_) -> Content = "COMMAND\nhead\rer:val\n\n\0", {error, {unexpected_chars_in_header, "\re"}} = parse(Content). -header_value_with_cr_test() -> +header_value_with_cr(_) -> Content = "COMMAND\nheader:val\rue\n\n\0", {error, {unexpected_chars_in_header, "\ru"}} = parse(Content). -header_value_with_colon_test() -> +header_value_with_colon(_) -> Content = "COMMAND\nheader:val:ue\n\n\0", {ok, Frame, _} = parse(Content), ?assertEqual(Frame, @@ -146,10 +174,10 @@ test_frame_serialization(Expected, TrailingLF) -> Serialized = lists:flatten(rabbit_stomp_frame:serialize(Frame, TrailingLF)), ?assertEqual(Expected, rabbit_misc:format("~s", [Serialized])). -headers_escaping_roundtrip_test() -> +headers_escaping_roundtrip(_) -> test_frame_serialization("COMMAND\nhead\\r\\c\\ner:\\c\\n\\r\\\\\n\n\0\n", true). -headers_escaping_roundtrip_without_trailing_lf_test() -> +headers_escaping_roundtrip_without_trailing_lf(_) -> test_frame_serialization("COMMAND\nhead\\r\\c\\ner:\\c\\n\\r\\\\\n\n\0", false). parse(Content) -> @@ -161,9 +189,6 @@ parse_complete(Content) -> {ok, Frame = #stomp_frame{command = Command}, State} = parse(Content), {Command, Frame, State}. -frame_string(Command, Headers, BodyContent) -> - frame_string(Command, Headers, BodyContent, "\n"). - frame_string(Command, Headers, BodyContent, Term) -> HeaderString = lists:flatten([Key ++ ":" ++ Value ++ Term || {Key, Value} <- Headers]), diff --git a/deps/rabbitmq_stomp/test/python_SUITE.erl b/deps/rabbitmq_stomp/test/python_SUITE.erl index 0650128b8b..e625d53c82 100644 --- a/deps/rabbitmq_stomp/test/python_SUITE.erl +++ b/deps/rabbitmq_stomp/test/python_SUITE.erl @@ -11,10 +11,12 @@ all() -> init_per_testcase(_, Config) -> - Config1 = rabbit_ct_helpers:set_config(Config, [{rmq_certspwd, "bunnychow"}]), + Config1 = rabbit_ct_helpers:set_config(Config, + [{rmq_certspwd, "bunnychow"}, + {rmq_nodename_suffix, ?MODULE}]), rabbit_ct_helpers:log_environment(), rabbit_ct_helpers:run_setup_steps( - Config1, + Config1, rabbit_ct_broker_helpers:setup_steps()). end_per_testcase(_, Config) -> @@ -22,29 +24,33 @@ end_per_testcase(_, Config) -> common(Config) -> - run(Config, "/src/test.py"). + run(Config, filename:join("src", "test.py")). connect_options(Config) -> - run(Config, "/src/test_connect_options.py"). + run(Config, filename:join("src", "test_connect_options.py")). ssl(Config) -> - run(Config, "/src/test_ssl.py"). + run(Config, filename:join("src", "test_ssl.py")). run(Config, Test) -> - Curdir = cur_dir(), + DataDir = ?config(data_dir, Config), CertsDir = rabbit_ct_helpers:get_config(Config, rmq_certsdir), StompPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_stomp), StompPortTls = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_stomp_tls), AmqpPort = rabbit_ct_broker_helpers:get_node_config(Config, 0, tcp_port_amqp), NodeName = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename), PythonPath = os:getenv("PYTHONPATH"), - os:putenv("PYTHONPATH", Curdir ++ "/deps/pika/pika:"++ Curdir ++ "/deps/stomppy/stomppy:" ++ PythonPath), + os:putenv("PYTHONPATH", filename:join([DataDir, "deps", "pika","pika"]) + ++":"++ + filename:join([DataDir, "deps", "stomppy", "stomppy"]) + ++ ":" ++ + PythonPath), os:putenv("AMQP_PORT", integer_to_list(AmqpPort)), os:putenv("STOMP_PORT", integer_to_list(StompPort)), os:putenv("STOMP_PORT_TLS", integer_to_list(StompPortTls)), os:putenv("RABBITMQ_NODENAME", atom_to_list(NodeName)), os:putenv("SSL_CERTS_PATH", CertsDir), - {ok, _} = rabbit_ct_helpers:exec([Curdir ++ Test]). + {ok, _} = rabbit_ct_helpers:exec([filename:join(DataDir, Test)]). cur_dir() -> diff --git a/deps/rabbitmq_stomp/test/deps/pika/Makefile b/deps/rabbitmq_stomp/test/python_SUITE_data/deps/pika/Makefile similarity index 100% rename from deps/rabbitmq_stomp/test/deps/pika/Makefile rename to deps/rabbitmq_stomp/test/python_SUITE_data/deps/pika/Makefile diff --git a/deps/rabbitmq_stomp/test/deps/stomppy/Makefile b/deps/rabbitmq_stomp/test/python_SUITE_data/deps/stomppy/Makefile similarity index 100% rename from deps/rabbitmq_stomp/test/deps/stomppy/Makefile rename to deps/rabbitmq_stomp/test/python_SUITE_data/deps/stomppy/Makefile diff --git a/deps/rabbitmq_stomp/test/src/ack.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/ack.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/ack.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/ack.py diff --git a/deps/rabbitmq_stomp/test/src/base.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/base.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/base.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/base.py diff --git a/deps/rabbitmq_stomp/test/src/connect_options.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/connect_options.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/connect_options.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/connect_options.py diff --git a/deps/rabbitmq_stomp/test/src/destinations.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/destinations.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/destinations.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/destinations.py diff --git a/deps/rabbitmq_stomp/test/src/errors.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/errors.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/errors.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/errors.py diff --git a/deps/rabbitmq_stomp/test/src/lifecycle.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/lifecycle.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/lifecycle.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/lifecycle.py diff --git a/deps/rabbitmq_stomp/test/src/parsing.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/parsing.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/parsing.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/parsing.py diff --git a/deps/rabbitmq_stomp/test/src/queue_properties.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/queue_properties.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/queue_properties.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/queue_properties.py diff --git a/deps/rabbitmq_stomp/test/src/redelivered.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/redelivered.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/redelivered.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/redelivered.py diff --git a/deps/rabbitmq_stomp/test/src/reliability.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/reliability.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/reliability.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/reliability.py diff --git a/deps/rabbitmq_stomp/test/src/ssl_lifecycle.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/ssl_lifecycle.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/ssl_lifecycle.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/ssl_lifecycle.py diff --git a/deps/rabbitmq_stomp/test/src/test.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/test.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/test.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/test.py diff --git a/deps/rabbitmq_stomp/test/src/test_connect_options.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/test_connect_options.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/test_connect_options.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/test_connect_options.py diff --git a/deps/rabbitmq_stomp/test/src/test_runner.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/test_runner.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/test_runner.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/test_runner.py diff --git a/deps/rabbitmq_stomp/test/src/test_ssl.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/test_ssl.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/test_ssl.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/test_ssl.py diff --git a/deps/rabbitmq_stomp/test/src/test_util.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/test_util.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/test_util.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/test_util.py diff --git a/deps/rabbitmq_stomp/test/src/transactions.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/transactions.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/transactions.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/transactions.py diff --git a/deps/rabbitmq_stomp/test/src/x_queue_name.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/x_queue_name.py similarity index 100% rename from deps/rabbitmq_stomp/test/src/x_queue_name.py rename to deps/rabbitmq_stomp/test/python_SUITE_data/src/x_queue_name.py diff --git a/deps/rabbitmq_stomp/test/src/rabbit_stomp_test_util.erl b/deps/rabbitmq_stomp/test/util_SUITE.erl similarity index 81% rename from deps/rabbitmq_stomp/test/src/rabbit_stomp_test_util.erl rename to deps/rabbitmq_stomp/test/util_SUITE.erl index ce8d226924..c234d5895e 100644 --- a/deps/rabbitmq_stomp/test/src/rabbit_stomp_test_util.erl +++ b/deps/rabbitmq_stomp/test/util_SUITE.erl @@ -14,22 +14,53 @@ %% Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved. %% --module(rabbit_stomp_test_util). +-module(util_SUITE). +-include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("amqp_client/include/amqp_client.hrl"). -include_lib("amqp_client/include/rabbit_routing_prefixes.hrl"). -include("rabbit_stomp_frame.hrl"). +-compile(export_all). + +all() -> [ + longstr_field, + message_properties, + message_headers, + minimal_message_headers_with_no_custom, + headers_post_process, + headers_post_process_noop_replyto, + headers_post_process_noop2, + negotiate_version_both_empty, + negotiate_version_no_common, + negotiate_version_simple_common, + negotiate_version_two_choice_common, + negotiate_version_two_choice_common_out_of_order, + negotiate_version_two_choice_big_common, + negotiate_version_choice_mismatched_length, + negotiate_version_choice_duplicates, + trim_headers, + ack_mode_auto, + ack_mode_auto_default, + ack_mode_client, + ack_mode_client_individual, + consumer_tag_id, + consumer_tag_destination, + consumer_tag_invalid, + parse_valid_message_id, + parse_invalid_message_id + ]. + %%-------------------------------------------------------------------- %% Header Processing Tests %%-------------------------------------------------------------------- -longstr_field_test() -> +longstr_field(_) -> {<<"ABC">>, longstr, <<"DEF">>} = rabbit_stomp_util:longstr_field("ABC", "DEF"). -message_properties_test() -> +message_properties(_) -> Headers = [ {"content-type", "text/plain"}, {"content-encoding", "UTF-8"}, @@ -65,7 +96,7 @@ message_properties_test() -> } = rabbit_stomp_util:message_properties(#stomp_frame{headers = Headers}). -message_headers_test() -> +message_headers(_) -> Properties = #'P_basic'{ headers = [{<<"str">>, longstr, <<"foo">>}, {<<"int">>, signedint, 123}], @@ -102,13 +133,7 @@ message_headers_test() -> [] = lists:subtract(Headers, Expected). -minimal_message_headers_with_no_custom_test() -> - Delivery = #'basic.deliver'{ - consumer_tag = <<"Q_123">>, - delivery_tag = 123, - exchange = <<"">>, - routing_key = <<"foo">>}, - +minimal_message_headers_with_no_custom(_) -> Properties = #'P_basic'{}, Headers = rabbit_stomp_util:message_headers(Properties), @@ -120,7 +145,7 @@ minimal_message_headers_with_no_custom_test() -> [] = lists:subtract(Headers, Expected). -headers_post_process_test() -> +headers_post_process(_) -> Headers = [{"header1", "1"}, {"header2", "12"}, {"reply-to", "something"}], @@ -130,13 +155,13 @@ headers_post_process_test() -> [] = lists:subtract( rabbit_stomp_util:headers_post_process(Headers), Expected). -headers_post_process_noop_replyto_test() -> +headers_post_process_noop_replyto(_) -> [begin Headers = [{"reply-to", Prefix ++ "/something"}], Headers = rabbit_stomp_util:headers_post_process(Headers) end || Prefix <- rabbit_routing_util:dest_prefixes()]. -headers_post_process_noop2_test() -> +headers_post_process_noop2(_) -> Headers = [{"header1", "1"}, {"header2", "12"}], Expected = [{"header1", "1"}, @@ -144,38 +169,38 @@ headers_post_process_noop2_test() -> [] = lists:subtract( rabbit_stomp_util:headers_post_process(Headers), Expected). -negotiate_version_both_empty_test() -> +negotiate_version_both_empty(_) -> {error, no_common_version} = rabbit_stomp_util:negotiate_version([],[]). -negotiate_version_no_common_test() -> +negotiate_version_no_common(_) -> {error, no_common_version} = rabbit_stomp_util:negotiate_version(["1.2"],["1.3"]). -negotiate_version_simple_common_test() -> +negotiate_version_simple_common(_) -> {ok, "1.2"} = rabbit_stomp_util:negotiate_version(["1.2"],["1.2"]). -negotiate_version_two_choice_common_test() -> +negotiate_version_two_choice_common(_) -> {ok, "1.3"} = rabbit_stomp_util:negotiate_version(["1.2", "1.3"],["1.2", "1.3"]). -negotiate_version_two_choice_common_out_of_order_test() -> +negotiate_version_two_choice_common_out_of_order(_) -> {ok, "1.3"} = rabbit_stomp_util:negotiate_version(["1.3", "1.2"],["1.2", "1.3"]). -negotiate_version_two_choice_big_common_test() -> +negotiate_version_two_choice_big_common(_) -> {ok, "1.20.23"} = rabbit_stomp_util:negotiate_version(["1.20.23", "1.30.456"], ["1.20.23", "1.30.457"]). -negotiate_version_choice_mismatched_length_test() -> +negotiate_version_choice_mismatched_length(_) -> {ok, "1.2.3"} = rabbit_stomp_util:negotiate_version(["1.2", "1.2.3"], ["1.2.3", "1.2"]). -negotiate_version_choice_duplicates_test() -> +negotiate_version_choice_duplicates(_) -> {ok, "1.2"} = rabbit_stomp_util:negotiate_version(["1.2", "1.2"], ["1.2", "1.2"]). -trim_headers_test() -> +trim_headers(_) -> #stomp_frame{headers = [{"one", "foo"}, {"two", "baz "}]} = rabbit_stomp_util:trim_headers( #stomp_frame{headers = [{"one", " foo"}, {"two", " baz "}]}). @@ -184,31 +209,31 @@ trim_headers_test() -> %% Frame Parsing Tests %%-------------------------------------------------------------------- -ack_mode_auto_test() -> +ack_mode_auto(_) -> Frame = #stomp_frame{headers = [{"ack", "auto"}]}, {auto, _} = rabbit_stomp_util:ack_mode(Frame). -ack_mode_auto_default_test() -> +ack_mode_auto_default(_) -> Frame = #stomp_frame{headers = []}, {auto, _} = rabbit_stomp_util:ack_mode(Frame). -ack_mode_client_test() -> +ack_mode_client(_) -> Frame = #stomp_frame{headers = [{"ack", "client"}]}, {client, true} = rabbit_stomp_util:ack_mode(Frame). -ack_mode_client_individual_test() -> +ack_mode_client_individual(_) -> Frame = #stomp_frame{headers = [{"ack", "client-individual"}]}, {client, false} = rabbit_stomp_util:ack_mode(Frame). -consumer_tag_id_test() -> +consumer_tag_id(_) -> Frame = #stomp_frame{headers = [{"id", "foo"}]}, {ok, <<"T_foo">>, _} = rabbit_stomp_util:consumer_tag(Frame). -consumer_tag_destination_test() -> +consumer_tag_destination(_) -> Frame = #stomp_frame{headers = [{"destination", "foo"}]}, {ok, <<"Q_foo">>, _} = rabbit_stomp_util:consumer_tag(Frame). -consumer_tag_invalid_test() -> +consumer_tag_invalid(_) -> Frame = #stomp_frame{headers = []}, {error, missing_destination_header} = rabbit_stomp_util:consumer_tag(Frame). @@ -216,11 +241,11 @@ consumer_tag_invalid_test() -> %% Message ID Parsing Tests %%-------------------------------------------------------------------- -parse_valid_message_id_test() -> +parse_valid_message_id(_) -> {ok, {<<"bar">>, "abc", 123}} = rabbit_stomp_util:parse_message_id("bar@@abc@@123"). -parse_invalid_message_id_test() -> +parse_invalid_message_id(_) -> {error, invalid_message_id} = rabbit_stomp_util:parse_message_id("blah").