소스 검색

ci: update testcases for message-expiry-interval

Shawn 2 년 전
부모
커밋
206af96a33
1개의 변경된 파일39개의 추가작업 그리고 7개의 파일을 삭제
  1. 39 7
      apps/emqx/test/emqx_message_SUITE.erl

+ 39 - 7
apps/emqx/test/emqx_message_SUITE.erl

@@ -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(_) ->