Contact the core Jetty developers at www.webtide.com
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ... scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery

Testing a Jetty Release

Testing CometD

To test a Jetty release, complete the following steps for each release you want to test:

  1. Download the staged release:

    For Jetty 7:

    
     wget https://oss.sonatype.org/content/repositories/jetty-[reponumber]/org/eclipse/jetty/jetty-distribution/[jetty-version]/ jetty-distribution-7.[jetty-minor-version].tar.gz
     
          

    For Jetty 8:

    
     wget https://oss.sonatype.org/content/repositories/jetty-[reponumber]/org/eclipse/jetty/jetty-distribution/[jetty-version]/jetty-distribution-8.[jetty-minor-version].tar.gz
    
          
  2. Extract to a directory of your choice.

  3. Start jetty:

    
     cd [installdir] ; java -jar start.jar OPTIONS=rewrite etc/jetty-rewrite.xml etc/jetty-ssl.xml
     
          
  4. If there are no exceptions, proceed. Otherwise, investigate.

  5. Open http://localhost:8080/ in a browser. You should see the test.war webapp.

  6. Go through ALL the tests and verify that everything works as expected.

  7. Verify that hot deployment works.

    
     cd [installdir] ;
     touch [pathToJettyDistribution]/contexts/test.xml
     
          
  8. Verify that test.war gets redeployed in STDOUT.

Testing CometD

  1. Clone CometD.

    
     clone git://github.com/cometd/cometd.git
     git clone git://github.com/cometd/cometd.git
     
            
  2. Edit pom.xml and update jetty-version.

    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <jetty-version>7.6.2.v20120308</jetty-version>
            <jetty-plugin-version>${jetty-version}</jetty-plugin-version>
            <slf4j-version>1.6.4</slf4j-version>
            <spring-version>3.1.0.RELEASE</spring-version>
        </properties>
        <repositories>
        <repository>
          <id>Jetty Staging</id>
          <url>https://oss.sonatype.org/content/repositories/jetty-988/</url>
        </repository>
      </repositories>
     
            
  3. Build Cometd:

    
     mvn clean install
      
            
  4. Be patient.

  5. Run the loadtest as it is described here: http://cometd.org/documentation/2.x/howtos/loadtesting. Keep the default values, but make sure that you raise the clients setting to 1000. Run the loadtest until ''JIT compilation time'' is close to a value of zero (about 10k calls).

  6. Make sure that the performance results are reasonably fast. On a MacBook Pro i7 2.6ghz dualcore produces the following:

    
     ========================================
    Statistics Started at Fri Mar 09 13:44:35 CET 2012
    Operative System: Mac OS X 10.7.3 amd64
    JVM : Oracle Corporation Java HotSpot(TM) 64-Bit Server VM runtime 23.0-b16 1.7.0_04-ea-b14
    Processors: 4
    System Memory: 99.583336% used of 30.0 GiB
    Used Heap Size: 36.490677 MiB
    Max Heap Size: 1920.0 MiB
    Young Generation Heap Size: 896.0 MiB
    - - - - - - - - - - - - - - - - - - - -
    Testing 1000 clients in 100 rooms, 10 rooms/client
    Sending 1000 batches of 10x50 bytes messages every 10000 ?s
    [GC [PSYoungGen: 786432K->8736K(917504K)] 823650K->45954K(1966080K), 0.0309940 secs] [Times: user=0.09 sys=0.00, real=0.03 secs]
    [GC [PSYoungGen: 795168K->11424K(917504K)] 832386K->48642K(1966080K), 0.0513360 secs] [Times: user=0.13 sys=0.00, real=0.05 secs]
    [GC [PSYoungGen: 797856K->14560K(917504K)] 835074K->51778K(1966080K), 0.0432940 secs] [Times: user=0.12 sys=0.00, real=0.05 secs]
    [GC [PSYoungGen: 800992K->15680K(917504K)] 838210K->52898K(1966080K), 0.0491200 secs] [Times: user=0.14 sys=0.00, real=0.05 secs]
    [GC [PSYoungGen: 802112K->17568K(917504K)] 839330K->54786K(1966080K), 0.0484950 secs] [Times: user=0.14 sys=0.00, real=0.05 secs]
    [GC [PSYoungGen: 804000K->17600K(917504K)] 841218K->54818K(1966080K), 0.0456460 secs] [Times: user=0.14 sys=0.01, real=0.05 secs]
    [GC [PSYoungGen: 804032K->19488K(917504K)] 841250K->56706K(1966080K), 0.0542000 secs] [Times: user=0.15 sys=0.00, real=0.05 secs]
    [GC [PSYoungGen: 805920K->20224K(917504K)] 843138K->57442K(1966080K), 0.0486350 secs] [Times: user=0.16 sys=0.00, real=0.05 secs]
    [GC [PSYoungGen: 806656K->20192K(917504K)] 843874K->57410K(1966080K), 0.0566690 secs] [Times: user=0.15 sys=0.00, real=0.06 secs]
    [GC [PSYoungGen: 806624K->21152K(917504K)] 843842K->58370K(1966080K), 0.0536740 secs] [Times: user=0.16 sys=0.00, real=0.06 secs]
    [GC [PSYoungGen: 807584K->21088K(917504K)] 844802K->58306K(1966080K), 0.0576060 secs] [Times: user=0.18 sys=0.00, real=0.06 secs]
    [GC [PSYoungGen: 807520K->22080K(917504K)] 844738K->59298K(1966080K), 0.0663300 secs] [Times: user=0.19 sys=0.01, real=0.06 secs]
    - - - - - - - - - - - - - - - - - - - -
    Statistics Ended at Fri Mar 09 13:45:21 CET 2012
    Elapsed time: 45826 ms
        Time in JIT compilation: 52 ms
        Time in Young Generation GC: 606 ms (12 collections)
        Time in Old Generation GC: 0 ms (0 collections)
    Garbage Generated in Young Generation: 9036.513 MiB
    Garbage Generated in Survivor Generation: 21.65625 MiB
    Garbage Generated in Old Generation: 0.0 MiB
    Average CPU Load: 156.54865/400
    ----------------------------------------
    
    Outgoing: Elapsed = 45820 ms | Rate = 218 messages/s - 21 requests/s - ~0.083 Mib/s
    Waiting for messages to arrive 996960/999045
    All messages arrived 999045/999045
    Messages - Success/Expected = 999045/999045
    Incoming - Elapsed = 45945 ms | Rate = 21743 messages/s - 9496 responses/s(43.68%) - ~8.295 Mib/s
    Messages - Wall Latency Distribution Curve (X axis: Frequency, Y axis: Latency):
     @                    _  24 ms (8765, 0.88%)
           @              _  45 ms (58952, 5.90%)
              @           _  67 ms (87065, 8.71%)
                 @        _  88 ms (113786, 11.39%)
                       @  _  109 ms (167426, 16.76%)
                       @  _  131 ms (176163, 17.63%) ^50%
                  @       _  152 ms (123182, 12.33%)
              @           _  174 ms (90918, 9.10%)
            @             _  195 ms (67209, 6.73%) ^85%
         @                _  216 ms (46989, 4.70%)
       @                  _  238 ms (24975, 2.50%) ^95%
      @                   _  259 ms (16509, 1.65%)
     @                    _  281 ms (8454, 0.85%) ^99%
    @                     _  302 ms (4324, 0.43%)
    @                     _  323 ms (2955, 0.30%)
    @                     _  345 ms (957, 0.10%) ^99.9%
    @                     _  366 ms (204, 0.02%)
    @                     _  388 ms (144, 0.01%)
    @                     _  409 ms (25, 0.00%)
    @                     _  430 ms (43, 0.00%)
    Messages - Wall Latency 50th%/99th% = 117/275 ms
    Messages - Wall Latency Min/Ave/Max = 2/123/430 ms
    Messages - Network Latency Min/Ave/Max = 1/114/417 ms
    Thread Pool - Concurrent Threads max = 239 | Queue Size max = 1002 | Queue Latency avg/max = 12/101 ms
    
            
  7. Deploy cometd.war to the webapps directory of the jetty-distribution tested above.

    
     cp cometd-demo/target/cometd-demo-[version].war [pathToJetty]/jetty-distribution-[jetty-version]/webapps/
     
            
  8. Start jetty and make sure there are no exceptions.

    
     cd [pathToJetty] && java -jar start.jar
     
            
  9. Go through all pages of the demo and test them:

    
     http://localhost:8080/cometd-demo-2.4.1-SNAPSHOT/
    
            

If all tests are green, you are done!

See an error or something missing?
Contribute to this documentation at Github!