diff --git a/apps/emqx_rule_engine/src/emqx_rule_events.erl b/apps/emqx_rule_engine/src/emqx_rule_events.erl index 1a4562c3e..91c90f3e2 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_events.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_events.erl @@ -258,8 +258,7 @@ eventmsg_connack(ConnInfo = #{ peername := PeerName, sockname := SockName, proto_name := ProtoName, - proto_ver := ProtoVer, - connected_at := ConnectedAt + proto_ver := ProtoVer }, Reason) -> Keepalive = maps:get(keepalive, ConnInfo, 0), ConnProps = maps:get(conn_props, ConnInfo, #{}), @@ -275,7 +274,6 @@ eventmsg_connack(ConnInfo = #{ proto_ver => ProtoVer, keepalive => Keepalive, expiry_interval => ExpiryInterval, - connected_at => ConnectedAt, conn_props => printable_maps(ConnProps) }). diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index 1007bc2d2..0abd47a59 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -366,6 +366,28 @@ t_events(_Config) -> session_unsubscribed(Client2), ct:pal("====== verify $events/client_disconnected"), client_disconnected(Client, Client2), + ct:pal("====== verify $events/client_connack"), + client_connack_failed(), + 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. message_publish(Client) -> @@ -1745,14 +1767,14 @@ verify_event_fields('client.connack', Fields) -> keepalive := Keepalive, expiry_interval := ExpiryInterval, conn_props := Properties, - timestamp := Timestamp, - connected_at := EventAt + reason_code := Reason, + timestamp := Timestamp } = Fields, Now = erlang:system_time(millisecond), TimestampElapse = Now - Timestamp, - RcvdAtElapse = Now - EventAt, - ?assert(lists:member(ClientId, [<<"c_event">>, <<"c_event2">>])), - ?assert(lists:member(Username, [<<"u_event">>, <<"u_event2">>])), + ?assert(lists:member(Reason, [success, bad_username_or_password])), + ?assert(lists:member(ClientId, [<<"c_event">>, <<"c_event2">>, <<"c_event3">>])), + ?assert(lists:member(Username, [<<"u_event">>, <<"u_event2">>, <<"u_event3">>])), verify_peername(PeerName), verify_peername(SockName), ?assertEqual(<<"MQTT">>, ProtoName), @@ -1761,9 +1783,7 @@ verify_event_fields('client.connack', Fields) -> ?assert(is_boolean(CleanStart)), ?assertEqual(60000, ExpiryInterval), ?assertMatch(#{'Session-Expiry-Interval' := 60}, Properties), - ?assert(0 =< TimestampElapse andalso TimestampElapse =< 60*1000), - ?assert(0 =< RcvdAtElapse andalso RcvdAtElapse =< 60*1000), - ?assert(EventAt =< Timestamp); + ?assert(0 =< TimestampElapse andalso TimestampElapse =< 60*1000); verify_event_fields('client.check_authz_complete', Fields) -> #{clientid := ClientId,