diff options
| author | Diana Corbacho <diana@rabbitmq.com> | 2017-03-07 10:06:26 +0000 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2017-03-08 09:55:09 +0300 |
| commit | fcf04fbdf6d3f943254a1431f0d1e4c2d1745e17 (patch) | |
| tree | d75953ad7265512cc938e6a6bf25891188b4b427 /test | |
| parent | 1a7a5571ff369831b7af5ce2c24a4cf3d4e58fe1 (diff) | |
| download | rabbitmq-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.erl | 33 |
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). |
