diff --git a/apps/emqx_modules/src/emqx_telemetry.erl b/apps/emqx_modules/src/emqx_telemetry.erl index dfcbe9929..02e3bc3f9 100644 --- a/apps/emqx_modules/src/emqx_telemetry.erl +++ b/apps/emqx_modules/src/emqx_telemetry.erl @@ -290,7 +290,7 @@ active_plugins() -> ). num_clients() -> - emqx_stats:getstat('connections.max'). + emqx_stats:getstat('live_connections.count'). messages_sent() -> emqx_metrics:val('messages.sent'). diff --git a/apps/emqx_modules/test/emqx_telemetry_SUITE.erl b/apps/emqx_modules/test/emqx_telemetry_SUITE.erl index 1de800b26..b90c0d6fc 100644 --- a/apps/emqx_modules/test/emqx_telemetry_SUITE.erl +++ b/apps/emqx_modules/test/emqx_telemetry_SUITE.erl @@ -151,6 +151,10 @@ init_per_testcase(t_cluster_uuid, Config) -> Node = start_slave(n1), ok = setup_slave(Node), [{n1, Node} | Config]; +init_per_testcase(t_num_clients, Config) -> + mock_httpc(), + ok = snabbkaffe:start_trace(), + Config; init_per_testcase(_Testcase, Config) -> mock_httpc(), Config. @@ -205,6 +209,10 @@ end_per_testcase(t_exhook_info, _Config) -> end_per_testcase(t_cluster_uuid, Config) -> Node = proplists:get_value(n1, Config), ok = stop_slave(Node); +end_per_testcase(t_num_clients, Config) -> + meck:unload([httpc]), + ok = snabbkaffe:stop(), + Config; end_per_testcase(_Testcase, _Config) -> meck:unload([httpc]), ok. @@ -323,6 +331,34 @@ t_get_telemetry(_Config) -> ), ok. +t_num_clients(_Config) -> + {ok, Client} = emqtt:start_link([ + {client_id, <<"live_client">>}, + {port, 1883}, + {clean_start, false} + ]), + ?wait_async_action( + {ok, _} = emqtt:connect(Client), + #{ + ?snk_kind := emqx_stats_setstat, + count_stat := 'live_connections.count', + value := 1 + } + ), + {ok, TelemetryData0} = emqx_telemetry:get_telemetry(), + ?assertEqual(1, get_value(num_clients, TelemetryData0)), + ?wait_async_action( + ok = emqtt:disconnect(Client), + #{ + ?snk_kind := emqx_stats_setstat, + count_stat := 'live_connections.count', + value := 0 + } + ), + {ok, TelemetryData1} = emqx_telemetry:get_telemetry(), + ?assertEqual(0, get_value(num_clients, TelemetryData1)), + ok. + t_advanced_mqtt_features(_) -> {ok, TelemetryData} = emqx_telemetry:get_telemetry(), AdvFeats = get_value(advanced_mqtt_features, TelemetryData),