|
|
@@ -141,18 +141,50 @@ t_undefined_headers(_) ->
|
|
|
Msg2 = emqx_message:set_header(c, 3, Msg),
|
|
|
?assertEqual(3, emqx_message:get_header(c, Msg2)).
|
|
|
|
|
|
-t_is_expired(_) ->
|
|
|
+t_is_expired_1(_) ->
|
|
|
+ test_msg_expired_property(?MODULE).
|
|
|
+
|
|
|
+t_is_expired_2(_) ->
|
|
|
+ %% if the 'Message-Expiry-Interval' property is set, the message_expiry_interval should be ignored
|
|
|
+ try
|
|
|
+ emqx_config:put(
|
|
|
+ maps:from_list([{list_to_atom(Root), #{}} || Root <- emqx_zone_schema:roots()])
|
|
|
+ ),
|
|
|
+ emqx_config:put_zone_conf(?MODULE, [mqtt, message_expiry_interval], timer:seconds(10)),
|
|
|
+ test_msg_expired_property(?MODULE)
|
|
|
+ after
|
|
|
+ emqx_config:erase_all()
|
|
|
+ end.
|
|
|
+
|
|
|
+t_is_expired_3(_) ->
|
|
|
+ try
|
|
|
+ emqx_config:put(
|
|
|
+ maps:from_list([{list_to_atom(Root), #{}} || Root <- emqx_zone_schema:roots()])
|
|
|
+ ),
|
|
|
+ emqx_config:put_zone_conf(?MODULE, [mqtt, message_expiry_interval], 100),
|
|
|
+ Msg = emqx_message:make(<<"clientid">>, <<"topic">>, <<"payload">>),
|
|
|
+ ?assertNot(emqx_message:is_expired(Msg, ?MODULE)),
|
|
|
+ timer:sleep(120),
|
|
|
+ ?assert(emqx_message:is_expired(Msg, ?MODULE))
|
|
|
+ after
|
|
|
+ emqx_config:erase_all()
|
|
|
+ end.
|
|
|
+
|
|
|
+test_msg_expired_property(Zone) ->
|
|
|
Msg = emqx_message:make(<<"clientid">>, <<"topic">>, <<"payload">>),
|
|
|
- ?assertNot(emqx_message:is_expired(Msg, ?MODULE)),
|
|
|
+ ?assertNot(emqx_message:is_expired(Msg, Zone)),
|
|
|
Msg1 = emqx_message:set_headers(#{properties => #{'Message-Expiry-Interval' => 1}}, Msg),
|
|
|
timer:sleep(500),
|
|
|
- ?assertNot(emqx_message:is_expired(Msg1, ?MODULE)),
|
|
|
+ ?assertNot(emqx_message:is_expired(Msg1, Zone)),
|
|
|
timer:sleep(600),
|
|
|
- ?assert(emqx_message:is_expired(Msg1, ?MODULE)),
|
|
|
+ ?assert(emqx_message:is_expired(Msg1, Zone)).
|
|
|
+
|
|
|
+t_update_expired(_) ->
|
|
|
+ Msg = emqx_message:make(<<"clientid">>, <<"topic">>, <<"payload">>),
|
|
|
timer:sleep(1000),
|
|
|
- Msg = emqx_message:update_expiry(Msg),
|
|
|
- Msg2 = emqx_message:update_expiry(Msg1),
|
|
|
- Props = emqx_message:get_header(properties, Msg2),
|
|
|
+ ?assertEqual(Msg, emqx_message:update_expiry(Msg)),
|
|
|
+ Msg1 = emqx_message:set_headers(#{properties => #{'Message-Expiry-Interval' => 1}}, Msg),
|
|
|
+ Props = emqx_message:get_header(properties, emqx_message:update_expiry(Msg1)),
|
|
|
?assertEqual(1, maps:get('Message-Expiry-Interval', Props)).
|
|
|
|
|
|
% t_to_list(_) ->
|