This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 11.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/11.0.x by this push: new 1eb5ba7738 Attempt to make test more robust 1eb5ba7738 is described below commit 1eb5ba77388dd54f1bbf30c9c3eec3f40bb228ba Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Mar 19 05:22:20 2025 +0000 Attempt to make test more robust --- .../filters/TestRateLimitFilterWithExactRateLimiter.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/test/org/apache/catalina/filters/TestRateLimitFilterWithExactRateLimiter.java b/test/org/apache/catalina/filters/TestRateLimitFilterWithExactRateLimiter.java index a2172c1d1e..6eacfd081c 100644 --- a/test/org/apache/catalina/filters/TestRateLimitFilterWithExactRateLimiter.java +++ b/test/org/apache/catalina/filters/TestRateLimitFilterWithExactRateLimiter.java @@ -148,7 +148,7 @@ public class TestRateLimitFilterWithExactRateLimiter extends TomcatBaseTest { String ip; int requests; - int sleep; + int timePerRequest; int[] results; volatile String[] rlpHeader; @@ -159,7 +159,7 @@ public class TestRateLimitFilterWithExactRateLimiter extends TomcatBaseTest { this.filterChain = filterChain; this.ip = ip; this.requests = requests; - this.sleep = 1000 / rps; + this.timePerRequest = 1000 / rps; this.results = new int[requests]; this.rlpHeader = new String[requests]; this.rlHeader = new String[requests]; @@ -169,6 +169,8 @@ public class TestRateLimitFilterWithExactRateLimiter extends TomcatBaseTest { @Override public void run() { + long start = System.nanoTime(); + try { for (int i = 0; i < requests; i++) { MockHttpServletRequest request = new MockHttpServletRequest(); @@ -184,7 +186,15 @@ public class TestRateLimitFilterWithExactRateLimiter extends TomcatBaseTest { if (results[i] != 200) { break; } - sleep(sleep); + /* + * Ensure requests are evenly spaced through time irrespective of how long each request takes to + * complete. Do comparisons in milliseconds. + */ + long expectedDuration = (i + 1) * timePerRequest; + long duration = (System.nanoTime() - start)/1000000; + if (expectedDuration > duration) { + sleep(expectedDuration - duration); + } } } catch (Exception ex) { ex.printStackTrace(); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org