mirror of
https://github.com/penpot/penpot.git
synced 2026-08-19 11:19:10 +00:00
Round bucket reset intervals up to whole milliseconds before adding them to an instant. This prevents Clojure ratios from reaching duration conversion and disabling rate limiting for the request. Add a regression test for a refill rate that produces fractional milliseconds. Closes #11253 AI-assisted-by: gpt-5.6-luna
29 lines
1.0 KiB
Clojure
29 lines
1.0 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC Sucursal en Espana SL
|
|
|
|
(ns backend-tests.rpc-rlimit-test
|
|
(:require
|
|
[app.common.time :as ct]
|
|
[app.redis :as rds]
|
|
[app.rpc.rlimit :as rlimit]
|
|
[clojure.test :as t]))
|
|
|
|
(t/deftest bucket-reset-supports-fractional-milliseconds
|
|
(let [now (ct/inst 0)
|
|
limit {::rlimit/name :test
|
|
::rlimit/strategy :bucket
|
|
::rlimit/key "test"
|
|
::rlimit/method "main.test"
|
|
::rlimit/capacity 5
|
|
::rlimit/rate 3
|
|
::rlimit/interval (ct/duration 1000)
|
|
::rlimit/params [1 3 5]
|
|
::rlimit/opts "5/3/1s"}]
|
|
(with-redefs [rds/eval (fn [_ _] [true 4])]
|
|
(let [result (rlimit/process-limit nil "profile" now limit)]
|
|
(t/is (= (ct/inst 334)
|
|
(:app.rpc.rlimit.result/reset result)))))))
|