diff options
| -rw-r--r-- | deps/rabbit/src/rabbit_policies.erl | 4 | ||||
| -rw-r--r-- | deps/rabbit/test/unit_operator_policy_SUITE.erl | 55 |
2 files changed, 55 insertions, 4 deletions
diff --git a/deps/rabbit/src/rabbit_policies.erl b/deps/rabbit/src/rabbit_policies.erl index 062635c5b4..e23d12d81a 100644 --- a/deps/rabbit/src/rabbit_policies.erl +++ b/deps/rabbit/src/rabbit_policies.erl @@ -176,4 +176,6 @@ merge_policy_value(<<"max-length-bytes">>, Val, OpVal) -> min(Val, OpVal); merge_policy_value(<<"max-in-memory-length">>, Val, OpVal) -> min(Val, OpVal); merge_policy_value(<<"max-in-memory-bytes">>, Val, OpVal) -> min(Val, OpVal); merge_policy_value(<<"expires">>, Val, OpVal) -> min(Val, OpVal); -merge_policy_value(<<"delivery-limit">>, Val, OpVal) -> min(Val, OpVal). +merge_policy_value(<<"delivery-limit">>, Val, OpVal) -> min(Val, OpVal); +%% use operator policy value for booleans +merge_policy_value(_Key, Val, OpVal) when is_boolean(Val) andalso is_boolean(OpVal) -> OpVal. diff --git a/deps/rabbit/test/unit_operator_policy_SUITE.erl b/deps/rabbit/test/unit_operator_policy_SUITE.erl index 804da2d1c9..dedd6c82af 100644 --- a/deps/rabbit/test/unit_operator_policy_SUITE.erl +++ b/deps/rabbit/test/unit_operator_policy_SUITE.erl @@ -21,7 +21,8 @@ all() -> groups() -> [ {parallel_tests, [parallel], [ - merge_operator_policy_definitions + merge_operator_policy_definitions, + conflict_resolution_for_booleans ]} ]. @@ -102,6 +103,54 @@ merge_operator_policy_definitions(_Config) -> [{definition, [ {<<"message-ttl">>, 3000} ]}]) - ), + ). + - passed. + conflict_resolution_for_booleans(_Config) -> + ?assertEqual( + [ + {<<"remote-dc-replicate">>, true} + ], + rabbit_policy:merge_operator_definitions( + #{definition => #{ + <<"remote-dc-replicate">> => true + }}, + [{definition, [ + {<<"remote-dc-replicate">>, true} + ]}])), + + ?assertEqual( + [ + {<<"remote-dc-replicate">>, false} + ], + rabbit_policy:merge_operator_definitions( + #{definition => #{ + <<"remote-dc-replicate">> => false + }}, + [{definition, [ + {<<"remote-dc-replicate">>, false} + ]}])), + + ?assertEqual( + [ + {<<"remote-dc-replicate">>, true} + ], + rabbit_policy:merge_operator_definitions( + #{definition => #{ + <<"remote-dc-replicate">> => false + }}, + [{definition, [ + {<<"remote-dc-replicate">>, true} + ]}])), + + ?assertEqual( + [ + {<<"remote-dc-replicate">>, false} + ], + rabbit_policy:merge_operator_definitions( + #{definition => #{ + <<"remote-dc-replicate">> => true + }}, + [{definition, [ + {<<"remote-dc-replicate">>, false} + ]}])).
\ No newline at end of file |
