Community
Participate
Working Groups
The build is taking > 13 minutes on a 8 CPU machine and is hardly using any CPU. There are too many tests that do too much waiting. We need to reduce the number of tests that do stuff like Thread.sleep(2000) and that is a) unreliable b) a waste of time. Code should be able to be unit tested without having to do waits.
Created attachment 196782 [details] modules which take more than a second to unit test Added a screenshot of all modules which take more than a second to execute it's unit tests.
Here's the current timing information for 7.5.2-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] Jetty :: Project .................................. SUCCESS [8.838s] [INFO] Jetty :: Utilities ................................ SUCCESS [41.455s] [INFO] Jetty :: JMX Management ........................... SUCCESS [9.927s] [INFO] Jetty :: IO Utility ............................... SUCCESS [6.678s] [INFO] Jetty :: Http Utility ............................. SUCCESS [5.030s] [INFO] Jetty :: Continuation ............................. SUCCESS [1.998s] [INFO] Jetty :: Server Core .............................. SUCCESS [3:33.950s] [INFO] Jetty :: Websocket ................................ SUCCESS [37.929s] [INFO] Jetty :: Security ................................. SUCCESS [12.746s] [INFO] Jetty :: Servlet Handling ......................... SUCCESS [5.584s] [INFO] Jetty :: Asynchronous HTTP Client ................. SUCCESS [1:30.419s] [INFO] Jetty :: XML utilities ............................ SUCCESS [3.229s] [INFO] Jetty :: JASPI Security ........................... SUCCESS [2.533s] [INFO] Jetty :: Webapp Application Support ............... SUCCESS [5.006s] [INFO] Test :: Jetty Servlet Tester ...................... SUCCESS [2.509s] [INFO] Jetty :: Utility Servlets and Filters ............. SUCCESS [56.856s] [INFO] Jetty :: Jetty JSP Additions ...................... SUCCESS [1.602s] [INFO] Jetty :: Deployers ................................ SUCCESS [21.800s] [INFO] Jetty :: AJP ...................................... SUCCESS [6.521s] [INFO] Jetty :: JNDI Naming .............................. SUCCESS [2.620s] [INFO] Jetty :: Plus ..................................... SUCCESS [3.548s] [INFO] Jetty :: Servlet Annotations ...................... SUCCESS [2.865s] [INFO] Jetty :: Rewrite Handler .......................... SUCCESS [5.000s] [INFO] Jetty :: Policy Tool .............................. SUCCESS [20.977s] [INFO] Jetty :: Monitoring ............................... SUCCESS [2:11.860s] [INFO] Jetty :: Start .................................... SUCCESS [3.204s] [INFO] Jetty :: Nested ................................... SUCCESS [1.600s] [INFO] Jetty :: Overlay Deployer ......................... SUCCESS [7.999s] [INFO] Jetty Tests :: Parent ............................. SUCCESS [0.078s] [INFO] Jetty Tests :: Sessions :: Parent ................. SUCCESS [0.042s] [INFO] Jetty Tests :: Sessions :: Common ................. SUCCESS [2.233s] [INFO] Jetty :: NoSQL Session Managers ................... SUCCESS [2.942s] [INFO] Test :: Jetty Test Webapp ......................... SUCCESS [4.637s] [INFO] Jetty :: Distribution Assemblies .................. SUCCESS [3.737s] [INFO] Test :: Continuation .............................. SUCCESS [6.696s] [INFO] Test :: Continuation - (Jetty 6) .................. SUCCESS [11.122s] [INFO] Jetty :: Nested Test .............................. SUCCESS [2.323s] [INFO] Example :: Jetty Embedded ......................... SUCCESS [2.737s] [INFO] Jetty Tests :: WebApps :: Parent .................. SUCCESS [0.095s] [INFO] Jetty Tests :: WebApp :: RFC2616 .................. SUCCESS [1.482s] [INFO] Jetty Tests :: Integrations ....................... SUCCESS [1:26.124s] [INFO] Jetty Tests :: Sessions :: Hash ................... SUCCESS [19.094s] [INFO] Jetty Tests :: Sessions :: JDBC ................... SUCCESS [1:01.200s] [INFO] Jetty Tests :: Login Service ...................... SUCCESS [4.666s] [INFO] Jetty :: Aggregate Project ........................ SUCCESS [0.082s] [INFO] Jetty :: Aggregate :: HTTP Server ................. SUCCESS [2.779s] [INFO] Jetty :: Aggregate :: HTTP Client ................. SUCCESS [2.383s] [INFO] Jetty :: Aggregate :: Servlet Server .............. SUCCESS [2.886s] [INFO] Jetty :: Aggregate :: WebApp Server ............... SUCCESS [3.324s] [INFO] Jetty :: Aggregate :: Plus Server ................. SUCCESS [3.248s] [INFO] Jetty :: Aggregate :: All Server .................. SUCCESS [4.346s] [INFO] Jetty :: Aggregate :: All core Jetty .............. SUCCESS [4.427s] [INFO] Jetty :: OSGi ..................................... SUCCESS [0.102s] [INFO] Jetty :: OSGi :: Boot ............................. SUCCESS [4.134s] [INFO] Jetty :: OSGi :: Boot JSP ......................... SUCCESS [2.653s] [INFO] Jetty :: OSGi :: Boot Logback ..................... SUCCESS [4.853s] [INFO] Jetty :: OSGi :: Boot :: Warurl ................... SUCCESS [2.450s] [INFO] Jetty :: OSGi :: HttpService ...................... SUCCESS [2.403s] [INFO] Jetty :: OSGi :: Example Equinox Tools ............ SUCCESS [2.742s] [INFO] Jetty :: OSGi :: Test ............................. SUCCESS [10.396s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 16:20.312s [INFO] Finished at: Mon Sep 12 09:59:41 MST 2011 [INFO] Final Memory: 188M/400M [INFO] ------------------------------------------------------------------------
Thread.sleep in test cases is pretty prevalent. [joakim@lapetus org.eclipse.jetty.project][master]$ grep -RHn Thread.sleep * | grep -v aggregate | grep "src/test" | sed -e "s/^.*:[0-9]*:.*\(Thread.sleep[^)]*)\).*/\1/g" | sort | uniq -c | sort -nr 23 Thread.sleep(100) 22 Thread.sleep(200) 21 Thread.sleep(10) 20 Thread.sleep(1000) 14 Thread.sleep(500) 11 Thread.sleep(50) 7 Thread.sleep(2000) 6 Thread.sleep(PAUSE) 5 Thread.sleep(25) 4 Thread.sleep(1100) 3 Thread.sleep(5) 3 Thread.sleep(300) 3 Thread.sleep(1) 2 Thread.sleep(wait) 2 Thread.sleep(_timeout * 2) 2 Thread.sleep(sleep) 2 Thread.sleep(interval) 2 Thread.sleep(500L) 2 Thread.sleep(5000) 2 Thread.sleep(4000) 2 Thread.sleep(250) 2 Thread.sleep(1+random.nextInt(10) 2 Thread.sleep(1500) 2 Thread.sleep(1000L) 2 Thread.sleep(10000) 1 Thread.sleep(TIMEOUT*4) 1 Thread.sleep(timeout * 2) 1 Thread.sleep(sleep.get() 1 Thread.sleep(sleep_for) 1 Thread.sleep(scavenge * 3000) 1 Thread.sleep( runTestLength ) 1 Thread.sleep(_resumeAfter) 1 Thread.sleep(_requestMaxTime * 2) 1 Thread.sleep(requestInterval) 1 Thread.sleep(_random.nextInt(290) 1 Thread.sleep(random.nextInt(1000) 1 Thread.sleep(_random.nextInt(100) 1 Thread.sleep(pause1) 1 Thread.sleep(pause0) 1 Thread.sleep(Long.parseLong(request.getParameter("sleep") 1 Thread(sleeper) 1 Thread.sleep(DURATION) 1 Thread.sleep(_completeAfter) 1 Thread.sleep(320000) 1 Thread.sleep(3000) 1 Thread.sleep(30) 1 Thread.sleep(2 * JdbcTestServer.SAVE_INTERVAL * 1000) 1 Thread.sleep(20) 1 Thread.sleep(1+_random.nextInt(20) 1 Thread.sleep(1001) NOTE: Some of these are likely commented out in the test code.
Closing this as a bug. The basic improvements have been performed. Further improvements will occur in an iterative fashion.