diff options
| author | Michael Klishin <michael@novemberain.com> | 2017-04-25 20:36:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-04-25 20:36:30 +0200 |
| commit | 12d73ad7c11f3fdf6c3e28c3a35c0ba45429a2f1 (patch) | |
| tree | 3ae7a8caad5469c86dc5792de5c2712eda085cb1 | |
| parent | e5ece87867366158c38bb09baf1d35a43f110847 (diff) | |
| parent | 1b51bb0ad8ed5e4add43dc59302bd676c2b11233 (diff) | |
| download | rabbitmq-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.erl | 4 | ||||
| -rw-r--r-- | test/unit_inbroker_parallel_SUITE.erl | 21 |
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. %% --------------------------------------------------------------------------- |
