summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2017-04-25 20:36:30 +0200
committerGitHub <noreply@github.com>2017-04-25 20:36:30 +0200
commit12d73ad7c11f3fdf6c3e28c3a35c0ba45429a2f1 (patch)
tree3ae7a8caad5469c86dc5792de5c2712eda085cb1
parente5ece87867366158c38bb09baf1d35a43f110847 (diff)
parent1b51bb0ad8ed5e4add43dc59302bd676c2b11233 (diff)
downloadrabbitmq-server-git-12d73ad7c11f3fdf6c3e28c3a35c0ba45429a2f1.tar.gz
Merge pull request #1196 from rabbitmq/rabbitmq-server-1194
Support integers in memory relative free disk space limits
-rw-r--r--src/rabbit_disk_monitor.erl4
-rw-r--r--test/unit_inbroker_parallel_SUITE.erl21
2 files changed, 18 insertions, 7 deletions
diff --git a/src/rabbit_disk_monitor.erl b/src/rabbit_disk_monitor.erl
index 629228a1be..868fc1a4aa 100644
--- a/src/rabbit_disk_monitor.erl
+++ b/src/rabbit_disk_monitor.erl
@@ -75,7 +75,7 @@
%%----------------------------------------------------------------------------
--type disk_free_limit() :: (integer() | string() | {'mem_relative', float()}).
+-type disk_free_limit() :: (integer() | string() | {'mem_relative', float() | integer()}).
-spec start_link(disk_free_limit()) -> rabbit_types:ok_pid_or_error().
-spec get_disk_free_limit() -> integer().
-spec set_disk_free_limit(disk_free_limit()) -> 'ok'.
@@ -237,7 +237,7 @@ parse_free_win32(CommandResult) ->
list_to_integer(lists:reverse(Free)).
interpret_limit({mem_relative, Relative})
- when is_float(Relative) ->
+ when is_number(Relative) ->
round(Relative * vm_memory_monitor:get_total_memory());
interpret_limit(Absolute) ->
case rabbit_resource_monitor_misc:parse_information_unit(Absolute) of
diff --git a/test/unit_inbroker_parallel_SUITE.erl b/test/unit_inbroker_parallel_SUITE.erl
index 3867459cdc..2ee6411893 100644
--- a/test/unit_inbroker_parallel_SUITE.erl
+++ b/test/unit_inbroker_parallel_SUITE.erl
@@ -1521,15 +1521,26 @@ set_disk_free_limit_command1(_Config) ->
ok = control_action(set_disk_free_limit,
["2000kiB"]),
2048000 = rabbit_disk_monitor:get_disk_free_limit(),
+
+ %% Use an integer
ok = control_action(set_disk_free_limit,
- ["mem_relative", "1.1"]),
- ExpectedLimit = 1.1 * vm_memory_monitor:get_total_memory(),
- % Total memory is unstable, so checking order
- true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() < 1.2,
- true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() > 0.98,
+ ["mem_relative", "1"]),
+ check_limit(1),
+
+ %% Use a float
+ ok = control_action(set_disk_free_limit,
+ ["mem_relative", "1.5"]),
+ check_limit(1.5),
+
ok = control_action(set_disk_free_limit, ["50MB"]),
passed.
+check_limit(Limit) ->
+ ExpectedLimit = Limit * vm_memory_monitor:get_total_memory(),
+ % Total memory is unstable, so checking order
+ true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() < 1.2,
+ true = ExpectedLimit/rabbit_disk_monitor:get_disk_free_limit() > 0.98.
+
%% ---------------------------------------------------------------------------
%% rabbitmqctl helpers.
%% ---------------------------------------------------------------------------