Merge pull request #7774 from EMQ-YangM/fix_error_field

fix: remove error field
This commit is contained in:
Xinyu Liu 2022-04-27 13:40:51 +08:00 committed by GitHub
commit e415425780
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 17 deletions

View File

@ -2,7 +2,8 @@
%% Unless you know what you are doing, DO NOT edit manually!! %% Unless you know what you are doing, DO NOT edit manually!!
{VSN, {VSN,
[{"4.4.3", [{"4.4.3",
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, [{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]}]}, {load_module,emqx_rule_maps,brutal_purge,soft_purge,[]}]},
{"4.4.2", {"4.4.2",
[{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]}, [{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
@ -41,7 +42,8 @@
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
{<<".*">>,[]}], {<<".*">>,[]}],
[{"4.4.3", [{"4.4.3",
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, [{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]}]}, {load_module,emqx_rule_maps,brutal_purge,soft_purge,[]}]},
{"4.4.2", {"4.4.2",
[{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]}, [{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},

View File

@ -236,19 +236,18 @@ eventmsg_disconnected(_ClientInfo = #{
disconnected_at => DisconnectedAt disconnected_at => DisconnectedAt
}). }).
eventmsg_connack(_ConnInfo = #{ eventmsg_connack(ConnInfo = #{
clientid := ClientId, clientid := ClientId,
clean_start := CleanStart, clean_start := CleanStart,
username := Username, username := Username,
peername := PeerName, peername := PeerName,
sockname := SockName, sockname := SockName,
proto_name := ProtoName, proto_name := ProtoName,
proto_ver := ProtoVer, proto_ver := ProtoVer
keepalive := Keepalive,
connected_at := ConnectedAt,
conn_props := ConnProps,
expiry_interval := ExpiryInterval
}, Reason) -> }, Reason) ->
Keepalive = maps:get(keepalive, ConnInfo, 0),
ConnProps = maps:get(conn_props, ConnInfo, #{}),
ExpiryInterval = maps:get(expiry_interval, ConnInfo, 0),
with_basic_columns('client.connack', with_basic_columns('client.connack',
#{reason_code => reason(Reason), #{reason_code => reason(Reason),
clientid => ClientId, clientid => ClientId,
@ -260,7 +259,6 @@ eventmsg_connack(_ConnInfo = #{
proto_ver => ProtoVer, proto_ver => ProtoVer,
keepalive => Keepalive, keepalive => Keepalive,
expiry_interval => ExpiryInterval, expiry_interval => ExpiryInterval,
connected_at => ConnectedAt,
conn_props => printable_maps(ConnProps) conn_props => printable_maps(ConnProps)
}). }).
eventmsg_check_acl_complete(_ClientInfo = #{ eventmsg_check_acl_complete(_ClientInfo = #{

View File

@ -1058,6 +1058,7 @@ t_events(_Config) ->
, {proto_ver, v5} , {proto_ver, v5}
, {properties, #{'Session-Expiry-Interval' => 60}} , {properties, #{'Session-Expiry-Interval' => 60}}
]), ]),
ct:pal("====== verify $events/client_connected, $events/client_connack"), ct:pal("====== verify $events/client_connected, $events/client_connack"),
client_connected(Client, Client2), client_connected(Client, Client2),
ct:pal("====== verify $events/session_subscribed, $events/client_check_acl_complete"), ct:pal("====== verify $events/session_subscribed, $events/client_check_acl_complete"),
@ -1074,6 +1075,8 @@ t_events(_Config) ->
message_dropped(Client), message_dropped(Client),
ct:pal("====== verify $events/client_disconnected"), ct:pal("====== verify $events/client_disconnected"),
client_disconnected(Client, Client2), client_disconnected(Client, Client2),
ct:pal("====== verify $events/client_connack"),
client_connack_failed(),
ok. ok.
message_publish(Client) -> message_publish(Client) ->
@ -1081,12 +1084,33 @@ message_publish(Client) ->
<<"{\"id\": 1, \"name\": \"ha\"}">>, [{qos, 1}]), <<"{\"id\": 1, \"name\": \"ha\"}">>, [{qos, 1}]),
verify_event('message.publish'), verify_event('message.publish'),
ok. ok.
client_connected(Client, Client2) -> client_connected(Client, Client2) ->
{ok, _} = emqtt:connect(Client), {ok, _} = emqtt:connect(Client),
{ok, _} = emqtt:connect(Client2), {ok, _} = emqtt:connect(Client2),
verify_event('client.connack'), verify_event('client.connack'),
verify_event('client.connected'), verify_event('client.connected'),
ok. ok.
client_connack_failed() ->
{ok, Client} = emqtt:start_link(
[ {username, <<"u_event3">>}
, {clientid, <<"c_event3">>}
, {proto_ver, v5}
, {properties, #{'Session-Expiry-Interval' => 60}}
]),
try
meck:new(emqx_access_control, [non_strict, passthrough]),
meck:expect(emqx_access_control, authenticate,
fun(_) -> {error, bad_username_or_password} end),
process_flag(trap_exit, true),
?assertMatch({error, _}, emqtt:connect(Client)),
timer:sleep(300),
verify_event('client.connack')
after
meck:unload(emqx_access_control)
end,
ok.
client_disconnected(Client, Client2) -> client_disconnected(Client, Client2) ->
ok = emqtt:disconnect(Client, 0, #{'User-Property' => {<<"reason">>, <<"normal">>}}), ok = emqtt:disconnect(Client, 0, #{'User-Property' => {<<"reason">>, <<"normal">>}}),
ok = emqtt:disconnect(Client2, 0, #{'User-Property' => {<<"reason">>, <<"normal">>}}), ok = emqtt:disconnect(Client2, 0, #{'User-Property' => {<<"reason">>, <<"normal">>}}),
@ -2726,14 +2750,14 @@ verify_event_fields('client.connack', Fields) ->
keepalive := Keepalive, keepalive := Keepalive,
expiry_interval := ExpiryInterval, expiry_interval := ExpiryInterval,
conn_props := Properties, conn_props := Properties,
timestamp := Timestamp, reason_code := Reason,
connected_at := EventAt timestamp := Timestamp
} = Fields, } = Fields,
Now = erlang:system_time(millisecond), Now = erlang:system_time(millisecond),
TimestampElapse = Now - Timestamp, TimestampElapse = Now - Timestamp,
RcvdAtElapse = Now - EventAt, ?assert(lists:member(Reason, [success, bad_username_or_password])),
?assert(lists:member(ClientId, [<<"c_event">>, <<"c_event2">>])), ?assert(lists:member(ClientId, [<<"c_event">>, <<"c_event2">>, <<"c_event3">>])),
?assert(lists:member(Username, [<<"u_event">>, <<"u_event2">>])), ?assert(lists:member(Username, [<<"u_event">>, <<"u_event2">>, <<"u_event3">>])),
verify_peername(PeerName), verify_peername(PeerName),
verify_peername(SockName), verify_peername(SockName),
?assertEqual(<<"MQTT">>, ProtoName), ?assertEqual(<<"MQTT">>, ProtoName),
@ -2742,9 +2766,7 @@ verify_event_fields('client.connack', Fields) ->
?assert(is_boolean(CleanStart)), ?assert(is_boolean(CleanStart)),
?assertEqual(60, ExpiryInterval), ?assertEqual(60, ExpiryInterval),
?assertMatch(#{'Session-Expiry-Interval' := 60}, Properties), ?assertMatch(#{'Session-Expiry-Interval' := 60}, Properties),
?assert(0 =< TimestampElapse andalso TimestampElapse =< 60*1000), ?assert(0 =< TimestampElapse andalso TimestampElapse =< 60*1000);
?assert(0 =< RcvdAtElapse andalso RcvdAtElapse =< 60*1000),
?assert(EventAt =< Timestamp);
verify_event_fields(SubUnsub, Fields) when SubUnsub == 'session.subscribed' verify_event_fields(SubUnsub, Fields) when SubUnsub == 'session.subscribed'
; SubUnsub == 'session.unsubscribed' -> ; SubUnsub == 'session.unsubscribed' ->