This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 284ebff785 Attempt to make test more robust
284ebff785 is described below
commit 284ebff78535859eb4bd0fb48e286e2bea1680d1
Author: Mark Thomas <[email protected]>
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 c2ace4e454..8d94b273e0 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: [email protected]
For additional commands, e-mail: [email protected]