Author: markt Date: Thu Feb 5 08:18:50 2015 New Revision: 1657492 URL: http://svn.apache.org/r1657492 Log: Re-work test to use a warm-up followed by a "best of 5" approach to try and avoid false failures with the CI system. (Running on my laptop, homebrew is ~2x as fast).
Modified: tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java Modified: tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java?rev=1657492&r1=1657491&r2=1657492&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java (original) +++ tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java Thu Feb 5 08:18:50 2015 @@ -22,28 +22,53 @@ import static org.junit.Assert.assertTru import org.junit.Test; public class TestResponsePerformance { + + private final int ITERATIONS = 100000; + @Test public void testToAbsolutePerformance() throws Exception { Request req = new TesterRequest(); Response resp = new Response(); resp.setRequest(req); + // Warm up + doHomebrew(resp); + doUri(); + + final int bestOf = 5; + final int winTarget = (bestOf + 1) / 2; + int homebrewWin = 0; + int count = 0; + + while (count < bestOf && homebrewWin < winTarget) { + long homebrew = doHomebrew(resp); + long uri = doUri(); + System.out.println("Current 'home-brew': " + homebrew + "ms, Using URI: " + uri + "ms"); + if (homebrew < uri) { + homebrewWin++; + } + count++; + } + assertTrue(homebrewWin == winTarget); + } + + + private long doHomebrew(Response resp) { long start = System.currentTimeMillis(); - for (int i = 0; i < 100000; i++) { + for (int i = 0; i < ITERATIONS; i++) { resp.toAbsolute("bar.html"); } - long homebrew = System.currentTimeMillis() - start; + return System.currentTimeMillis() - start; + } - start = System.currentTimeMillis(); - for (int i = 0; i < 100000; i++) { + + private long doUri() { + long start = System.currentTimeMillis(); + for (int i = 0; i < ITERATIONS; i++) { URI base = URI.create( "http://localhost:8080/level1/level2/foo.html"); base.resolve(URI.create("bar.html")).toASCIIString(); } - long uri = System.currentTimeMillis() - start; - - System.out.println("Current 'home-brew': " + homebrew + - "ms, Using URI: " + uri + "ms"); - assertTrue(homebrew < uri); + return System.currentTimeMillis() - start; } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org