summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDiana Corbacho <diana@rabbitmq.com>2017-03-07 10:06:26 +0000
committerMichael Klishin <mklishin@pivotal.io>2017-03-08 09:55:09 +0300
commitfcf04fbdf6d3f943254a1431f0d1e4c2d1745e17 (patch)
treed75953ad7265512cc938e6a6bf25891188b4b427 /test
parent1a7a5571ff369831b7af5ce2c24a4cf3d4e58fe1 (diff)
downloadrabbitmq-server-git-fcf04fbdf6d3f943254a1431f0d1e4c2d1745e17.tar.gz
Test and clean up metrics dependent on both process and entity
It leaked consumer_created when the queue still existed, now both entity and process must exists to keep the metrics.
Diffstat (limited to 'test')
-rw-r--r--test/rabbit_core_metrics_gc_SUITE.erl33
1 files changed, 32 insertions, 1 deletions
diff --git a/test/rabbit_core_metrics_gc_SUITE.erl b/test/rabbit_core_metrics_gc_SUITE.erl
index c3997f31e2..6e7607eea6 100644
--- a/test/rabbit_core_metrics_gc_SUITE.erl
+++ b/test/rabbit_core_metrics_gc_SUITE.erl
@@ -34,7 +34,8 @@ groups() ->
connection_metrics,
channel_metrics,
node_metrics,
- gen_server2_metrics
+ gen_server2_metrics,
+ consumer_metrics
]
}
].
@@ -286,6 +287,36 @@ gen_server2_metrics(Config) ->
ok.
+consumer_metrics(Config) ->
+ A = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
+ Ch = rabbit_ct_client_helpers:open_channel(Config, A),
+
+ amqp_channel:call(Ch, #'queue.declare'{queue = <<"queue_metrics">>}),
+ amqp_channel:call(Ch, #'basic.consume'{queue = <<"queue_metrics">>}),
+ timer:sleep(200),
+
+ DeadPid = rabbit_ct_broker_helpers:rpc(Config, A, ?MODULE, dead_pid, []),
+
+ QName = q(<<"queue_metrics">>),
+ CTag = <<"tag">>,
+ rabbit_ct_broker_helpers:rpc(Config, A, rabbit_core_metrics,
+ consumer_created, [DeadPid, CTag, true, true,
+ QName, 1, []]),
+ Id = {QName, DeadPid, CTag},
+ [_] = rabbit_ct_broker_helpers:rpc(Config, A, ets, lookup, [consumer_created, Id]),
+
+ %% Trigger gc. When the gen_server:call returns, the gc has already finished.
+ rabbit_ct_broker_helpers:rpc(Config, A, erlang, send, [rabbit_core_metrics_gc, start_gc]),
+ rabbit_ct_broker_helpers:rpc(Config, A, gen_server, call, [rabbit_core_metrics_gc, test]),
+
+ [_|_] = rabbit_ct_broker_helpers:rpc(Config, A, ets, tab2list, [consumer_created]),
+ [] = rabbit_ct_broker_helpers:rpc(Config, A, ets, lookup, [consumer_created, Id]),
+
+ amqp_channel:call(Ch, #'queue.delete'{queue = <<"queue_metrics">>}),
+ rabbit_ct_client_helpers:close_channel(Ch),
+
+ ok.
+
dead_pid() ->
spawn(fun() -> ok end).