Add ensure/2 funcs to avoid needless logs (#3483)
This commit is contained in:
parent
f456f40c59
commit
ea2a424ce2
|
@ -30,6 +30,8 @@
|
||||||
|
|
||||||
-export([ new/1
|
-export([ new/1
|
||||||
, new/2
|
, new/2
|
||||||
|
, ensure/1
|
||||||
|
, ensure/2
|
||||||
, all/0
|
, all/0
|
||||||
]).
|
]).
|
||||||
|
|
||||||
|
@ -204,6 +206,17 @@ new(gauge, Name) ->
|
||||||
new(counter, Name) ->
|
new(counter, Name) ->
|
||||||
create(counter, Name).
|
create(counter, Name).
|
||||||
|
|
||||||
|
-spec(ensure(metric_name()) -> ok).
|
||||||
|
ensure(Name) ->
|
||||||
|
ensure(counter, Name).
|
||||||
|
|
||||||
|
-spec(ensure(gauge|counter, metric_name()) -> ok).
|
||||||
|
ensure(Type, Name) when Type =:= gauge; Type =:= counter ->
|
||||||
|
case ets:lookup(?TAB, Name) of
|
||||||
|
[] -> create(Type, Name);
|
||||||
|
_ -> ok
|
||||||
|
end.
|
||||||
|
|
||||||
%% @private
|
%% @private
|
||||||
create(Type, Name) ->
|
create(Type, Name) ->
|
||||||
case gen_server:call(?SERVER, {create, Type, Name}) of
|
case gen_server:call(?SERVER, {create, Type, Name}) of
|
||||||
|
|
|
@ -50,7 +50,7 @@ name(16#11) -> no_subscription_existed;
|
||||||
name(16#18) -> continue_authentication;
|
name(16#18) -> continue_authentication;
|
||||||
name(16#19) -> re_authenticate;
|
name(16#19) -> re_authenticate;
|
||||||
name(16#80) -> unspecified_error;
|
name(16#80) -> unspecified_error;
|
||||||
name(16#81) -> malformed_Packet;
|
name(16#81) -> malformed_packet;
|
||||||
name(16#82) -> protocol_error;
|
name(16#82) -> protocol_error;
|
||||||
name(16#83) -> implementation_specific_error;
|
name(16#83) -> implementation_specific_error;
|
||||||
name(16#84) -> unsupported_protocol_version;
|
name(16#84) -> unsupported_protocol_version;
|
||||||
|
|
|
@ -91,7 +91,9 @@
|
||||||
|
|
||||||
-type(ver() :: ?MQTT_PROTO_V3
|
-type(ver() :: ?MQTT_PROTO_V3
|
||||||
| ?MQTT_PROTO_V4
|
| ?MQTT_PROTO_V4
|
||||||
| ?MQTT_PROTO_V5).
|
| ?MQTT_PROTO_V5
|
||||||
|
| non_neg_integer()).
|
||||||
|
|
||||||
-type(qos() :: ?QOS_0 | ?QOS_1 | ?QOS_2).
|
-type(qos() :: ?QOS_0 | ?QOS_1 | ?QOS_2).
|
||||||
-type(qos_name() :: qos0 | at_most_once |
|
-type(qos_name() :: qos0 | at_most_once |
|
||||||
qos1 | at_least_once |
|
qos1 | at_least_once |
|
||||||
|
@ -107,7 +109,7 @@
|
||||||
-type(conninfo() :: #{socktype := socktype(),
|
-type(conninfo() :: #{socktype := socktype(),
|
||||||
sockname := peername(),
|
sockname := peername(),
|
||||||
peername := peername(),
|
peername := peername(),
|
||||||
peercert := esockd_peercert:peercert(),
|
peercert := nossl | undefined | esockd_peercert:peercert(),
|
||||||
conn_mod := module(),
|
conn_mod := module(),
|
||||||
proto_name := binary(),
|
proto_name := binary(),
|
||||||
proto_ver := ver(),
|
proto_ver := ver(),
|
||||||
|
@ -116,7 +118,7 @@
|
||||||
username := username(),
|
username := username(),
|
||||||
conn_props := properties(),
|
conn_props := properties(),
|
||||||
connected := boolean(),
|
connected := boolean(),
|
||||||
connected_at := erlang:timestamp(),
|
connected_at := non_neg_integer(),
|
||||||
keepalive := 0..16#FFFF,
|
keepalive := 0..16#FFFF,
|
||||||
receive_maximum := non_neg_integer(),
|
receive_maximum := non_neg_integer(),
|
||||||
expiry_interval := non_neg_integer(),
|
expiry_interval := non_neg_integer(),
|
||||||
|
|
|
@ -42,6 +42,24 @@ t_new(_) ->
|
||||||
1 = emqx_metrics:val('metrics.test.total')
|
1 = emqx_metrics:val('metrics.test.total')
|
||||||
end).
|
end).
|
||||||
|
|
||||||
|
t_ensure(_) ->
|
||||||
|
with_metrics_server(
|
||||||
|
fun() ->
|
||||||
|
ok = emqx_metrics:ensure('metrics.test'),
|
||||||
|
ok = emqx_metrics:ensure('metrics.test'),
|
||||||
|
0 = emqx_metrics:val('metrics.test'),
|
||||||
|
ok = emqx_metrics:inc('metrics.test'),
|
||||||
|
1 = emqx_metrics:val('metrics.test'),
|
||||||
|
ok = emqx_metrics:ensure(counter, 'metrics.test.cnt'),
|
||||||
|
0 = emqx_metrics:val('metrics.test.cnt'),
|
||||||
|
ok = emqx_metrics:inc('metrics.test.cnt'),
|
||||||
|
1 = emqx_metrics:val('metrics.test.cnt'),
|
||||||
|
ok = emqx_metrics:ensure(gauge, 'metrics.test.total'),
|
||||||
|
0 = emqx_metrics:val('metrics.test.total'),
|
||||||
|
ok = emqx_metrics:inc('metrics.test.total'),
|
||||||
|
1 = emqx_metrics:val('metrics.test.total')
|
||||||
|
end).
|
||||||
|
|
||||||
t_all(_) ->
|
t_all(_) ->
|
||||||
with_metrics_server(
|
with_metrics_server(
|
||||||
fun() ->
|
fun() ->
|
||||||
|
|
Loading…
Reference in New Issue