chore(action): fix syntax error (#4885)

This commit is contained in:
JianBo He 2021-05-31 15:08:52 +08:00 committed by GitHub
parent 818a7e9772
commit 3a89b1f00b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 72 additions and 37 deletions

View File

@ -130,7 +130,7 @@ jobs:
docker exec --env-file .env -i erlang bash -c "make coveralls" docker exec --env-file .env -i erlang bash -c "make coveralls"
- name: cat rebar.crashdump - name: cat rebar.crashdump
if: failure() if: failure()
run: if [ -f 'rebar3.crashdump' ];then cat 'rebar3.crashdump' fi run: if [ -f 'rebar3.crashdump' ];then cat 'rebar3.crashdump'; fi
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v1
if: failure() if: failure()
with: with:

View File

@ -120,7 +120,7 @@ t_observe_acl_deny(_Config) ->
ok = meck:unload(emqx_access_control). ok = meck:unload(emqx_access_control).
t_observe_wildcard(_Config) -> t_observe_wildcard(_Config) ->
Topic = <<"+/b">>, TopicStr = http_uri:encode(binary_to_list(Topic)), Topic = <<"+/b">>, TopicStr = emqx_http_lib:uri_encode(binary_to_list(Topic)),
Payload = <<"123">>, Payload = <<"123">>,
Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret",
{ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri),
@ -143,7 +143,7 @@ t_observe_wildcard(_Config) ->
[] = emqx:subscribers(Topic). [] = emqx:subscribers(Topic).
t_observe_pub(_Config) -> t_observe_pub(_Config) ->
Topic = <<"+/b">>, TopicStr = http_uri:encode(binary_to_list(Topic)), Topic = <<"+/b">>, TopicStr = emqx_http_lib:uri_encode(binary_to_list(Topic)),
Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret",
{ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri),
?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]),
@ -152,7 +152,7 @@ t_observe_pub(_Config) ->
?assert(is_pid(SubPid)), ?assert(is_pid(SubPid)),
Topic2 = <<"a/b">>, Payload2 = <<"UFO">>, Topic2 = <<"a/b">>, Payload2 = <<"UFO">>,
TopicStr2 = http_uri:encode(binary_to_list(Topic2)), TopicStr2 = emqx_http_lib:uri_encode(binary_to_list(Topic2)),
URI2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret", URI2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret",
Reply2 = er_coap_client:request(put, URI2, #coap_content{format = <<"application/octet-stream">>, payload = Payload2}), Reply2 = er_coap_client:request(put, URI2, #coap_content{format = <<"application/octet-stream">>, payload = Payload2}),
@ -164,7 +164,7 @@ t_observe_pub(_Config) ->
?assertEqual(Payload2, PayloadRecv2), ?assertEqual(Payload2, PayloadRecv2),
Topic3 = <<"j/b">>, Payload3 = <<"ET629">>, Topic3 = <<"j/b">>, Payload3 = <<"ET629">>,
TopicStr3 = http_uri:encode(binary_to_list(Topic3)), TopicStr3 = emqx_http_lib:uri_encode(binary_to_list(Topic3)),
URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?c=client2&u=mike&p=guess", URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?c=client2&u=mike&p=guess",
Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}),
{ok,changed, _} = Reply3, {ok,changed, _} = Reply3,
@ -186,7 +186,7 @@ t_one_clientid_sub_2_topics(_Config) ->
[SubPid] = emqx:subscribers(Topic1), [SubPid] = emqx:subscribers(Topic1),
?assert(is_pid(SubPid)), ?assert(is_pid(SubPid)),
Topic2 = <<"x/y">>, TopicStr2 = http_uri:encode(binary_to_list(Topic2)), Topic2 = <<"x/y">>, TopicStr2 = emqx_http_lib:uri_encode(binary_to_list(Topic2)),
Payload2 = <<"456">>, Payload2 = <<"456">>,
Uri2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret", Uri2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret",
{ok, Pid2, N2, Code2, Content2} = er_coap_observer:observe(Uri2), {ok, Pid2, N2, Code2, Content2} = er_coap_observer:observe(Uri2),
@ -217,7 +217,7 @@ t_invalid_parameter(_Config) ->
%% "cid=client2" is invaid %% "cid=client2" is invaid
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Topic3 = <<"a/b">>, Payload3 = <<"ET629">>, Topic3 = <<"a/b">>, Payload3 = <<"ET629">>,
TopicStr3 = http_uri:encode(binary_to_list(Topic3)), TopicStr3 = emqx_http_lib:uri_encode(binary_to_list(Topic3)),
URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?cid=client2&u=tom&p=simple", URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?cid=client2&u=tom&p=simple",
Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}),
?assertMatch({error,bad_request}, Reply3), ?assertMatch({error,bad_request}, Reply3),

View File

@ -173,7 +173,7 @@ t_case01_publish_post(_Config) ->
?assertEqual(<<"42">>, CT2), ?assertEqual(<<"42">>, CT2),
%% post to publish message to topic maintopic/topic1 %% post to publish message to topic maintopic/topic1
FullTopicStr = http_uri:encode(binary_to_list(FullTopic)), FullTopicStr = emqx_http_lib:uri_encode(binary_to_list(FullTopic)),
URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret", URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret",
PubPayload = <<"PUBLISH">>, PubPayload = <<"PUBLISH">>,
@ -286,7 +286,7 @@ t_case01_publish_put(_Config) ->
?assertEqual(<<"42">>, CT2), ?assertEqual(<<"42">>, CT2),
%% put to publish message to topic maintopic/topic1 %% put to publish message to topic maintopic/topic1
FullTopicStr = http_uri:encode(binary_to_list(FullTopic)), FullTopicStr = emqx_http_lib:uri_encode(binary_to_list(FullTopic)),
URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret", URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret",
PubPayload = <<"PUBLISH">>, PubPayload = <<"PUBLISH">>,
@ -430,7 +430,7 @@ t_case01_subscribe(_Config) ->
t_case02_subscribe(_Config) -> t_case02_subscribe(_Config) ->
Topic = <<"a/b">>, Topic = <<"a/b">>,
TopicStr = binary_to_list(Topic), TopicStr = binary_to_list(Topic),
PercentEncodedTopic = http_uri:encode(TopicStr), PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr),
Payload = <<"payload">>, Payload = <<"payload">>,
%% post to publish a new topic "a/b", and the topic is created %% post to publish a new topic "a/b", and the topic is created
@ -477,7 +477,7 @@ t_case03_subscribe(_Config) ->
%% Subscribe to the unexisted topic "a/b", got not_found %% Subscribe to the unexisted topic "a/b", got not_found
Topic = <<"a/b">>, Topic = <<"a/b">>,
TopicStr = binary_to_list(Topic), TopicStr = binary_to_list(Topic),
PercentEncodedTopic = http_uri:encode(TopicStr), PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr),
Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret",
{error, not_found} = er_coap_observer:observe(Uri), {error, not_found} = er_coap_observer:observe(Uri),
@ -487,7 +487,7 @@ t_case04_subscribe(_Config) ->
%% Subscribe to the wildcad topic "+/b", got bad_request %% Subscribe to the wildcad topic "+/b", got bad_request
Topic = <<"+/b">>, Topic = <<"+/b">>,
TopicStr = binary_to_list(Topic), TopicStr = binary_to_list(Topic),
PercentEncodedTopic = http_uri:encode(TopicStr), PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr),
Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret",
{error, bad_request} = er_coap_observer:observe(Uri), {error, bad_request} = er_coap_observer:observe(Uri),
@ -582,7 +582,7 @@ t_case04_read(_Config) ->
t_case05_read(_Config) -> t_case05_read(_Config) ->
Topic = <<"a/b">>, Topic = <<"a/b">>,
TopicStr = binary_to_list(Topic), TopicStr = binary_to_list(Topic),
PercentEncodedTopic = http_uri:encode(TopicStr), PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr),
Payload = <<"payload">>, Payload = <<"payload">>,
%% post to publish a new topic "a/b", and the topic is created %% post to publish a new topic "a/b", and the topic is created
@ -609,7 +609,7 @@ t_case05_read(_Config) ->
t_case01_delete(_Config) -> t_case01_delete(_Config) ->
TopicInPayload = <<"a/b">>, TopicInPayload = <<"a/b">>,
TopicStr = binary_to_list(TopicInPayload), TopicStr = binary_to_list(TopicInPayload),
PercentEncodedTopic = http_uri:encode(TopicStr), PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr),
Payload = list_to_binary("<"++PercentEncodedTopic++">;ct=42"), Payload = list_to_binary("<"++PercentEncodedTopic++">;ct=42"),
URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret",
@ -621,7 +621,7 @@ t_case01_delete(_Config) ->
%% Client post to CREATE topic "a/b/c" %% Client post to CREATE topic "a/b/c"
TopicInPayload1 = <<"a/b/c">>, TopicInPayload1 = <<"a/b/c">>,
PercentEncodedTopic1 = http_uri:encode(binary_to_list(TopicInPayload1)), PercentEncodedTopic1 = emqx_http_lib:uri_encode(binary_to_list(TopicInPayload1)),
Payload1 = list_to_binary("<"++PercentEncodedTopic1++">;ct=42"), Payload1 = list_to_binary("<"++PercentEncodedTopic1++">;ct=42"),
Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload1}), Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload1}),
?LOGT("Reply =~p", [Reply1]), ?LOGT("Reply =~p", [Reply1]),
@ -643,7 +643,7 @@ t_case01_delete(_Config) ->
t_case02_delete(_Config) -> t_case02_delete(_Config) ->
TopicInPayload = <<"a/b">>, TopicInPayload = <<"a/b">>,
TopicStr = binary_to_list(TopicInPayload), TopicStr = binary_to_list(TopicInPayload),
PercentEncodedTopic = http_uri:encode(TopicStr), PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr),
%% DELETE the unexisted topic "a/b" %% DELETE the unexisted topic "a/b"
Uri1 = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", Uri1 = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret",

View File

@ -1,6 +1,6 @@
{application, emqx_exhook, {application, emqx_exhook,
[{description, "EMQ X Extension for Hook"}, [{description, "EMQ X Extension for Hook"},
{vsn, "4.3.0"}, {vsn, "4.3.1"},
{modules, []}, {modules, []},
{registered, []}, {registered, []},
{mod, {emqx_exhook_app, []}}, {mod, {emqx_exhook_app, []}},

View File

@ -0,0 +1,15 @@
%% -*-: erlang -*-
{VSN,
[
{"4.3.0", [
{load_module, emqx_exhook_pb, brutal_purge, soft_purge, []}
]},
{<<".*">>, []}
],
[
{"4.3.0", [
{load_module, emqx_exhook_pb, brutal_purge, soft_purge, []}
]},
{<<".*">>, []}
]
}.

View File

@ -1886,8 +1886,11 @@ std_register(UdpSock, Epn, ObjectList, MsgId1, RespTopic) ->
timer:sleep(100). timer:sleep(100).
resolve_uri(Uri) -> resolve_uri(Uri) ->
{ok, {Scheme, _UserInfo, Host, PortNo, Path, Query}} = {ok, #{scheme := Scheme,
http_uri:parse(Uri, [{scheme_defaults, [{coap, ?DEFAULT_COAP_PORT}, {coaps, ?DEFAULT_COAPS_PORT}]}]), host := Host,
port := PortNo,
path := Path} = URIMap} = emqx_http_lib:uri_parse(Uri),
Query = maps:get(query, URIMap, ""),
{ok, PeerIP} = inet:getaddr(Host, inet), {ok, PeerIP} = inet:getaddr(Host, inet),
{Scheme, {PeerIP, PortNo}, split_path(Path), split_query(Query)}. {Scheme, {PeerIP, PortNo}, split_path(Path), split_query(Query)}.
@ -1896,7 +1899,7 @@ split_path([$/]) -> [];
split_path([$/ | Path]) -> split_segments(Path, $/, []). split_path([$/ | Path]) -> split_segments(Path, $/, []).
split_query([]) -> []; split_query([]) -> [];
split_query([$? | Path]) -> split_segments(Path, $&, []). split_query(Path) -> split_segments(Path, $&, []).
split_segments(Path, Char, Acc) -> split_segments(Path, Char, Acc) ->
case string:rchr(Path, Char) of case string:rchr(Path, Char) of
@ -1908,7 +1911,7 @@ split_segments(Path, Char, Acc) ->
end. end.
make_segment(Seg) -> make_segment(Seg) ->
list_to_binary(http_uri:decode(Seg)). list_to_binary(emqx_http_lib:uri_decode(Seg)).
get_coap_path(Options) -> get_coap_path(Options) ->

View File

@ -1,7 +1,7 @@
{application, emqx, {application, emqx,
[{id, "emqx"}, [{id, "emqx"},
{description, "EMQ X"}, {description, "EMQ X"},
{vsn, "4.3.2"}, % strict semver, bump manually! {vsn, "4.3.3"}, % strict semver, bump manually!
{modules, []}, {modules, []},
{registered, []}, {registered, []},
{applications, [kernel,stdlib,gproc,gen_rpc,esockd,cowboy,sasl,os_mon]}, {applications, [kernel,stdlib,gproc,gen_rpc,esockd,cowboy,sasl,os_mon]},

View File

@ -1,6 +1,9 @@
%% -*- mode: erlang -*- %% -*- mode: erlang -*-
{VSN, {VSN,
[ [
{"4.3.2", [
{load_module, emqx_http_lib, brutal_purge, soft_purge, []}
]},
{"4.3.1", [ {"4.3.1", [
{load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, {load_module, emqx_ws_connection, brutal_purge, soft_purge, []},
{load_module, emqx_connection, brutal_purge, soft_purge, []}, {load_module, emqx_connection, brutal_purge, soft_purge, []},
@ -11,7 +14,8 @@
{load_module, emqx_channel, brutal_purge, soft_purge, []}, {load_module, emqx_channel, brutal_purge, soft_purge, []},
{load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []},
{load_module, emqx_plugins, brutal_purge, soft_purge, []}, {load_module, emqx_plugins, brutal_purge, soft_purge, []},
{load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []} {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []},
{load_module, emqx_http_lib, brutal_purge, soft_purge, []}
]}, ]},
{"4.3.0", [ {"4.3.0", [
{load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []}, {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []},
@ -26,13 +30,16 @@
{load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []},
{load_module, emqx_plugins, brutal_purge, soft_purge, []}, {load_module, emqx_plugins, brutal_purge, soft_purge, []},
{load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []}, {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []},
%%
{load_module, emqx_metrics, brutal_purge, soft_purge, []}, {load_module, emqx_metrics, brutal_purge, soft_purge, []},
{apply, {emqx_metrics, upgrade_retained_delayed_counter_type, []}} {apply, {emqx_metrics, upgrade_retained_delayed_counter_type, []}},
{load_module, emqx_http_lib, brutal_purge, soft_purge, []}
]}, ]},
{<<".*">>, []} {<<".*">>, []}
], ],
[ [
{"4.3.2", [
{load_module, emqx_http_lib, brutal_purge, soft_purge, []}
]},
{"4.3.1", [ {"4.3.1", [
{load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, {load_module, emqx_ws_connection, brutal_purge, soft_purge, []},
{load_module, emqx_connection, brutal_purge, soft_purge, []}, {load_module, emqx_connection, brutal_purge, soft_purge, []},
@ -43,7 +50,8 @@
{load_module, emqx_channel, brutal_purge, soft_purge, []}, {load_module, emqx_channel, brutal_purge, soft_purge, []},
{load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []},
{load_module, emqx_plugins, brutal_purge, soft_purge, []}, {load_module, emqx_plugins, brutal_purge, soft_purge, []},
{load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []} {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []},
{load_module, emqx_http_lib, brutal_purge, soft_purge, []}
]}, ]},
{"4.3.0", [ {"4.3.0", [
{load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []}, {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []},
@ -61,7 +69,7 @@
%% Just load the module. We don't need to change the 'messages.retained' %% Just load the module. We don't need to change the 'messages.retained'
%% and 'messages.retained' counter type. %% and 'messages.retained' counter type.
{load_module, emqx_metrics, brutal_purge, soft_purge, []}, {load_module, emqx_metrics, brutal_purge, soft_purge, []},
{apply, {emqx_metrics, upgrade_retained_delayed_counter_type, []}} {load_module, emqx_http_lib, brutal_purge, soft_purge, []}
]}, ]},
{<<".*">>, []} {<<".*">>, []}
] ]

View File

@ -108,11 +108,7 @@ normalise_headers(Headers0) ->
[{K, proplists:get_value(K, Headers)} || K <- Keys]. [{K, proplists:get_value(K, Headers)} || K <- Keys].
normalise_parse_result(#{host := Host, scheme := Scheme0} = Map) -> normalise_parse_result(#{host := Host, scheme := Scheme0} = Map) ->
Scheme = atom_scheme(Scheme0), {Scheme, DefaultPort} = atom_scheme_and_default_port(Scheme0),
DefaultPort = case https =:= Scheme of
true -> 443;
false -> 80
end,
Port = case maps:get(port, Map, undefined) of Port = case maps:get(port, Map, undefined) of
N when is_number(N) -> N; N when is_number(N) -> N;
_ -> DefaultPort _ -> DefaultPort
@ -122,11 +118,14 @@ normalise_parse_result(#{host := Host, scheme := Scheme0} = Map) ->
, port => Port , port => Port
}. }.
%% NOTE: so far we only support http schemes. %% NOTE: so far we only support http/coap schemes.
atom_scheme(Scheme) when is_list(Scheme) -> atom_scheme(list_to_binary(Scheme)); atom_scheme_and_default_port(Scheme) when is_list(Scheme) ->
atom_scheme(<<"https">>) -> https; atom_scheme_and_default_port(list_to_binary(Scheme));
atom_scheme(<<"http">>) -> http; atom_scheme_and_default_port(<<"http">> ) -> {http, 80};
atom_scheme(Other) -> throw({unsupported_scheme, Other}). atom_scheme_and_default_port(<<"https">>) -> {https, 443};
atom_scheme_and_default_port(<<"coap">> ) -> {coap, 5683};
atom_scheme_and_default_port(<<"coaps">>) -> {coaps, 5684};
atom_scheme_and_default_port(Other) -> throw({unsupported_scheme, Other}).
do_uri_encode(Char) -> do_uri_encode(Char) ->
case reserved(Char) of case reserved(Char) of

View File

@ -66,6 +66,16 @@ uri_parse_test_() ->
emqx_http_lib:uri_parse("HTTPS://127.0.0.1")) emqx_http_lib:uri_parse("HTTPS://127.0.0.1"))
end end
} }
, {"coap default port",
fun() -> ?assertMatch({ok, #{scheme := coap, port := 5683}},
emqx_http_lib:uri_parse("coap://127.0.0.1"))
end
}
, {"coaps default port",
fun() -> ?assertMatch({ok, #{scheme := coaps, port := 5684}},
emqx_http_lib:uri_parse("coaps://127.0.0.1"))
end
}
, {"unsupported_scheme", , {"unsupported_scheme",
fun() -> ?assertEqual({error, {unsupported_scheme, <<"wss">>}}, fun() -> ?assertEqual({error, {unsupported_scheme, <<"wss">>}},
emqx_http_lib:uri_parse("wss://127.0.0.1")) emqx_http_lib:uri_parse("wss://127.0.0.1"))