فهرست منبع

fix(limiter): fix test case error

firest 3 سال پیش
والد
کامیت
6ca58e5fbc
2فایلهای تغییر یافته به همراه11 افزوده شده و 8 حذف شده
  1. 8 6
      apps/emqx/src/emqx_limiter/src/emqx_limiter_server.erl
  2. 3 2
      apps/emqx/test/emqx_ratelimiter_SUITE.erl

+ 8 - 6
apps/emqx/src/emqx_limiter/src/emqx_limiter_server.erl

@@ -558,11 +558,13 @@ get_counter_rate(_Cfg, _GlobalCfg) ->
     emqx_limiter_schema:infinity_value().
 
 -spec get_initial_val(hocons:config()) -> decimal().
-get_initial_val(#{
-    initial := Initial,
-    rate := Rate,
-    capacity := Capacity
-}) ->
+get_initial_val(
+    #{
+        initial := Initial,
+        rate := Rate,
+        capacity := Capacity
+    }
+) ->
     %% initial will nevner be infinity(see the emqx_limiter_schema)
     InfVal = emqx_limiter_schema:infinity_value(),
     if
@@ -570,7 +572,7 @@ get_initial_val(#{
             Initial;
         Rate =/= infinity ->
             erlang:min(Rate, Capacity);
-        Capacity =/= InfVal ->
+        Capacity =/= infinity andalso Capacity =/= InfVal ->
             Capacity;
         true ->
             0

+ 3 - 2
apps/emqx/test/emqx_ratelimiter_SUITE.erl

@@ -246,7 +246,8 @@ t_infinity_client(_) ->
     end,
     Case = fun() ->
         Client = connect(default),
-        ?assertEqual(infinity, Client),
+        InfVal = emqx_limiter_schema:infinity_value(),
+        ?assertMatch(#{bucket := #{rate := InfVal}}, Client),
         Result = emqx_htb_limiter:check(100000, Client),
         ?assertEqual({ok, Client}, Result)
     end,
@@ -596,7 +597,7 @@ t_schema_unit(_) ->
     ?assertMatch({error, _}, M:to_rate("100MB/1")),
     ?assertMatch({error, _}, M:to_rate("100/10x")),
 
-    ?assertEqual({ok, infinity}, M:to_capacity("infinity")),
+    ?assertEqual({ok, emqx_limiter_schema:infinity_value()}, M:to_capacity("infinity")),
     ?assertEqual({ok, 100}, M:to_capacity("100")),
     ?assertEqual({ok, 100 * 1024}, M:to_capacity("100KB")),
     ?assertEqual({ok, 100 * 1024 * 1024}, M:to_capacity("100MB")),