Quellcode durchsuchen

Updated Jetty tests

update jetty-servlet to latest jetty-9.2
added jetty test using jetty-9.3 and handlers rather than servlets
Greg Wilkins vor 10 Jahren
Ursprung
Commit
f98906f44e

+ 1 - 0
.travis.yml

@@ -64,6 +64,7 @@ env:
     - "TESTDIR=Java/grizzly-bm"
     - "TESTDIR=Java/grizzly-jersey"
     - "TESTDIR=Java/jetty-servlet"
+    - "TESTDIR=Java/jetty"
     - "TESTDIR=Java/netty"
     - "TESTDIR=Java/ninja-standalone"
     - "TESTDIR=Java/play1"

+ 1 - 1
frameworks/Java/jetty-servlet/benchmark_config.json

@@ -17,7 +17,7 @@
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "jetty-servlet",
-      "notes": "Jetty 9.1 with ServletContext",
+      "notes": "Jetty 9.2 with ServletContext",
       "versus": ""
     }
   }]

+ 3 - 3
frameworks/Java/jetty-servlet/pom.xml

@@ -6,19 +6,19 @@
 
     <groupId>com.techempower</groupId>
     <artifactId>jetty-servlet-example</artifactId>
-    <version>0.1</version>
+    <version>0.2</version>
 
     <dependencies>
         <!-- Web server -->
         <dependency>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-servlet</artifactId>
-            <version>9.1.0.v20131115</version>
+            <version>9.2.10.v20150310</version>
         </dependency>
         <dependency>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-util-ajax</artifactId>
-            <version>9.1.0.v20131115</version>
+            <version>9.2.10.v20150310</version>
         </dependency>
     </dependencies>
 

+ 1 - 1
frameworks/Java/jetty-servlet/setup.sh

@@ -6,4 +6,4 @@ source $IROOT/java7.installed
 mvn clean compile assembly:single
 
 cd target
-java -jar jetty-servlet-example-0.1-jar-with-dependencies.jar &
+java -jar jetty-servlet-example-0.2-jar-with-dependencies.jar &

+ 15 - 0
frameworks/Java/jetty/README.md

@@ -0,0 +1,15 @@
+# Jetty-9 Benchmarking Test
+
+This is the Jetty portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
+
+### JSON Encoding Test
+* [JSON test source](src/main/java/hello/HelloWebServer.java)
+
+## Versions
+Jetty-9.1.0 (http://eclipse.org/jetty)
+
+## Test URLs
+
+### JSON Encoding Test
+
+    http://localhost:8080

+ 24 - 0
frameworks/Java/jetty/benchmark_config.json

@@ -0,0 +1,24 @@
+{
+  "framework": "jetty",
+  "tests": [{
+    "default": {
+      "setup_file": "setup",
+      "json_url": "/json",
+      "plaintext_url": "/plaintext",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "None",
+      "framework": "servlet",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Jetty",
+      "webserver": "Jetty",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "jetty",
+      "notes": "Jetty 9.3 with Handler",
+      "versus": ""
+    }
+  }]
+}

+ 3 - 0
frameworks/Java/jetty/install.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+fw_depends java8 maven

+ 64 - 0
frameworks/Java/jetty/pom.xml

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.techempower</groupId>
+    <artifactId>jetty-example</artifactId>
+    <version>0.1</version>
+
+    <dependencies>
+        <!-- Web server -->
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <version>9.3.0.RC0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-util-ajax</artifactId>
+            <version>9.3.0.RC0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <inherited>true</inherited>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <optimize>true</optimize>
+                    <debug>false</debug>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>hello.HelloWebServer</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
+                        <phase>package</phase> <!-- bind to the packaging phase -->
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 9 - 0
frameworks/Java/jetty/setup.sh

@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# load java environment variables
+source $IROOT/java8.installed
+
+mvn clean compile assembly:single
+
+cd target
+java -jar jetty-example-0.1-jar-with-dependencies.jar &

+ 4 - 0
frameworks/Java/jetty/source_code

@@ -0,0 +1,4 @@
+./jetty/src/main/java/hello/
+./jetty/src/main/java/hello/HelloWebServer.java
+./jetty/src/main/java/hello/JsonServlet.java
+./jetty/src/main/java/hello/PlaintextServlet.java

+ 69 - 0
frameworks/Java/jetty/src/main/java/hello/HelloWebServer.java

@@ -0,0 +1,69 @@
+package hello;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.server.handler.AbstractHandlerContainer;
+
+
+/**
+ * An implementation of the TechEmpower benchmark tests using the Jetty web
+ * server.  
+ */
+public final class HelloWebServer 
+{
+    public static void main(String[] args) throws Exception
+    {
+        Server server = new Server(8080);
+        ServerConnector connector = server.getBean(ServerConnector.class);
+        HttpConfiguration config = connector.getBean(HttpConnectionFactory.class).getHttpConfiguration();
+        config.setSendDateHeader(true);
+        config.setSendServerVersion(true);
+
+        PathHandler pathHandler = new PathHandler();
+        server.setHandler(pathHandler);
+
+        server.start();
+        server.join();
+    }
+    
+    public static class PathHandler extends AbstractHandler
+    {
+        JsonHandler _jsonHandler=new JsonHandler();
+        PlainTextHandler _plainHandler=new PlainTextHandler();
+        
+        public PathHandler()
+        {
+            addBean(_jsonHandler);
+            addBean(_plainHandler);
+        }
+
+        @Override
+        public void setServer(Server server)
+        {
+            super.setServer(server);
+            _jsonHandler.setServer(server);
+            _plainHandler.setServer(server);
+        }
+
+        @Override
+        public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+        {
+            if ("/plaintext".equals(target))
+                _plainHandler.handle(target,baseRequest,request,response);
+            else if ("/json".equals(target))
+                _jsonHandler.handle(target,baseRequest,request,response);
+        }
+        
+    }
+}

+ 34 - 0
frameworks/Java/jetty/src/main/java/hello/JsonHandler.java

@@ -0,0 +1,34 @@
+package hello;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jetty.http.HttpField;
+import org.eclipse.jetty.http.HttpHeader;
+import org.eclipse.jetty.http.PreEncodedHttpField;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.util.ajax.JSON;
+
+
+
+public class JsonHandler extends AbstractHandler
+{
+    private JSON json = new JSON();
+    HttpField contentType = new PreEncodedHttpField(HttpHeader.CONTENT_TYPE,"application/json");
+
+    @Override
+    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+    {
+        baseRequest.setHandled(true);
+        baseRequest.getResponse().getHttpFields().add(contentType);  
+        Map<String,String> map = Collections.singletonMap("message","Hello, World!");        
+        json.append(response.getWriter(),map);
+    }
+
+}

+ 31 - 0
frameworks/Java/jetty/src/main/java/hello/PlainTextHandler.java

@@ -0,0 +1,31 @@
+package hello;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jetty.http.HttpField;
+import org.eclipse.jetty.http.HttpHeader;
+import org.eclipse.jetty.http.MimeTypes;
+import org.eclipse.jetty.http.PreEncodedHttpField;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.util.BufferUtil;
+
+public class PlainTextHandler extends AbstractHandler
+{
+    ByteBuffer helloWorld = BufferUtil.toBuffer("Hello, World!");
+    HttpField contentType = new PreEncodedHttpField(HttpHeader.CONTENT_TYPE,MimeTypes.Type.TEXT_PLAIN.asString());
+
+    @Override
+    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+    {
+        baseRequest.setHandled(true);
+        baseRequest.getResponse().getHttpFields().add(contentType); 
+        baseRequest.getResponse().getHttpOutput().sendContent(helloWorld.slice());
+    }
+}