diff --git a/deps/rabbitmq_management/src/rabbit_mgmt_db.erl b/deps/rabbitmq_management/src/rabbit_mgmt_db.erl index da10224749b7..fb493a05afed 100644 --- a/deps/rabbitmq_management/src/rabbit_mgmt_db.erl +++ b/deps/rabbitmq_management/src/rabbit_mgmt_db.erl @@ -144,7 +144,12 @@ augment_exchanges(Xs, Ranges, _) -> %% we can only cache if no ranges are requested. %% The mgmt ui doesn't use ranges for queue listings --spec augment_queues([proplists:proplist()], ranges(), basic | detailed | full) -> any(). +-spec augment_queues([proplists:proplist()], ranges(), core | basic | detailed | full) -> any(). +augment_queues(Qs, ?NO_RANGES = Ranges, core) -> + submit_cached(queues, + fun(_Interval, Queues) -> + list_core_queue_data(Ranges, Queues) + end, Qs, max(60000, length(Qs) * 2)); augment_queues(Qs, ?NO_RANGES = Ranges, basic) -> submit_cached(queues, fun(Interval, Queues) -> @@ -357,6 +362,24 @@ consumers_stats(VHost) -> list_queue_stats(Ranges, Objs, Interval) -> list_queue_stats(Ranges, Objs, Interval, all_list_queue_data). +-spec list_core_queue_data(ranges(), [proplists:proplist()]) -> + [proplists:proplist()]. +list_core_queue_data(Ranges, Objs) -> + Ids = [id_lookup(queue_stats, Obj) || Obj <- Objs], + DataLookup = get_data_from_nodes({rabbit_mgmt_data, all_detail_queue_data, [Ids, Ranges]}), + adjust_hibernated_memory_use( + [begin + Id = id_lookup(queue_stats, Obj), + Pid = pget(pid, Obj), + QueueData = maps:get(Id, DataLookup), + Props = maps:get(queue_stats, QueueData), + ConsumerStats = rabbit_mgmt_data_compat:fill_consumer_active_fields( + maps:get(consumer_stats, QueueData)), + Consumers = [{consumer_details, ConsumerStats}], + + {Pid, combine(Props, Obj) ++ Consumers} + end || Obj <- Objs]). + -spec list_basic_queue_stats(ranges(), [proplists:proplist()], integer()) -> [proplists:proplist()]. list_basic_queue_stats(Ranges, Objs, Interval) -> diff --git a/deps/rabbitmq_management/src/rabbit_mgmt_wm_queue.erl b/deps/rabbitmq_management/src/rabbit_mgmt_wm_queue.erl index 9a0f406a5cb0..2144579abe56 100644 --- a/deps/rabbitmq_management/src/rabbit_mgmt_wm_queue.erl +++ b/deps/rabbitmq_management/src/rabbit_mgmt_wm_queue.erl @@ -48,9 +48,10 @@ to_json(ReqData, Context) -> rabbit_mgmt_format:strip_pids(Q)), rabbit_mgmt_util:reply(ensure_defaults(Payload), ReqData, Context); true -> - Q = case rabbit_mgmt_util:enable_queue_totals(ReqData) of - false -> queue(ReqData); - true -> queue_with_totals(ReqData) + [Q] = case rabbit_mgmt_util:enable_queue_totals(ReqData) of + false -> rabbit_mgmt_db:augment_queues([queue(ReqData)], + rabbit_mgmt_util:range_ceil(ReqData), core); + true -> [queue_with_totals(ReqData)] end, rabbit_mgmt_util:reply( rabbit_mgmt_format:strip_pids(Q), diff --git a/selenium/suites/mgt/mgt-only-queuesAndStreams.sh b/selenium/suites/mgt/mgt-only-queuesAndStreams.sh new file mode 100755 index 000000000000..8ef8c42e06c6 --- /dev/null +++ b/selenium/suites/mgt/mgt-only-queuesAndStreams.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +TEST_CASES_PATH=/queuesAndStreams +TEST_CONFIG_PATH=/basic-auth +PROFILES="disable-metrics" + +source $SCRIPT/../../bin/suite_template $@ +run diff --git a/selenium/test/basic-auth/rabbitmq.disable-metrics.conf b/selenium/test/basic-auth/rabbitmq.disable-metrics.conf new file mode 100644 index 000000000000..795c235f248a --- /dev/null +++ b/selenium/test/basic-auth/rabbitmq.disable-metrics.conf @@ -0,0 +1,3 @@ + +management.disable_stats = true +management_agent.disable_metrics_collector = true