Browse Source

Merge pull request #641 from purplefox/master

Updated vert.x version plus some improvements to the test code
Mike Smith 11 years ago
parent
commit
230892beab
4 changed files with 72 additions and 80 deletions
  1. 1 1
      config/benchmark_profile
  2. 2 2
      toolset/setup/linux/installer.py
  3. 67 75
      vertx/WebServer.java
  4. 2 2
      vertx/app.js

+ 1 - 1
config/benchmark_profile

@@ -1,7 +1,7 @@
 export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
 export RESIN_HOME=~/FrameworkBenchmarks/installs/resin-4.0.36
 export GRAILS_HOME=~/FrameworkBenchmarks/installs/grails-2.3.3
-export VERTX_HOME=~/FrameworkBenchmarks/installs/vert.x-2.1M1
+export VERTX_HOME=~/FrameworkBenchmarks/installs/vert.x-2.1M2
 export GOROOT=~/FrameworkBenchmarks/installs/go
 export GOPATH=~/FrameworkBenchmarks/go:~/FrameworkBenchmarks/webgo:~/FrameworkBenchmarks/revel
 export TOMCAT_HOME=~/FrameworkBenchmarks/installs/apache-tomcat-7.0.35

+ 2 - 2
toolset/setup/linux/installer.py

@@ -290,8 +290,8 @@ class Installer:
     #
     # Vert.x
     #
-    self.__download("http://dl.bintray.com/vertx/downloads/vert.x-2.1M1.tar.gz?direct=true", "vert.x-2.1M1.tar.gz")
-    self.__run_command("tar xzf vert.x-2.1M1.tar.gz")
+    self.__download("http://dl.bintray.com/vertx/downloads/vert.x-2.1M2.tar.gz?direct=true", "vert.x-2.1M2.tar.gz")
+    self.__run_command("tar xzf vert.x-2.1M2.tar.gz")
 
     #
     # Yesod

+ 67 - 75
vertx/WebServer.java

@@ -1,25 +1,25 @@
-import java.nio.charset.*;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.ThreadLocalRandom;
 import org.vertx.java.core.Handler;
 import org.vertx.java.core.buffer.Buffer;
 import org.vertx.java.core.eventbus.Message;
 import org.vertx.java.core.http.HttpServerRequest;
 import org.vertx.java.core.http.HttpServerResponse;
-import org.vertx.java.core.json.JsonObject;
 import org.vertx.java.core.json.JsonArray;
+import org.vertx.java.core.json.JsonObject;
 import org.vertx.java.core.json.impl.Json;
 import org.vertx.java.platform.Verticle;
 
-public class WebServer extends Verticle implements Handler<HttpServerRequest> {
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
 
-  private static String helloWorld = "Hello, World!";
-  private static Buffer helloWorldBuffer = new Buffer(helloWorld);
-  private static String helloWorldContentLength = String.valueOf(helloWorldBuffer.length());
-  private static DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyyy HH:mm:ss z");
+public class WebServer extends Verticle implements Handler<HttpServerRequest> {
 
+  private Buffer helloWorldBuffer = new Buffer("Hello, World!");
+  private String helloWorldContentLength = String.valueOf(helloWorldBuffer.length());
+  private DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyyy HH:mm:ss z");
   private String dateString;
 
   @Override
@@ -34,10 +34,6 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
     formatDate();
   }
 
-  private void formatDate() {
-    dateString = DATE_FORMAT.format(new Date());
-  }
-
   @Override
   public void handle(HttpServerRequest req) {
     String path = req.path();
@@ -60,45 +56,40 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
     }
   }
 
+  private void formatDate() {
+    dateString = DATE_FORMAT.format(new Date());
+  }
+
   private void handlePlainText(HttpServerRequest req) {
     HttpServerResponse resp = req.response();
-    resp.putHeader("Content-Type", "application/json; charset=UTF-8");
-    resp.putHeader("Content-Length", helloWorldContentLength);
-    resp.putHeader("Server", "vert.x");
-    resp.putHeader("Date", dateString);
+    setHeaders(resp, "text/plain", helloWorldContentLength);
     resp.end(helloWorldBuffer);
   }
 
   private void handleJson(HttpServerRequest req) {
-    String result = Json.encode(Collections.singletonMap("message", "Hello, world!"));
-    sendResponse(req, result);
+    Buffer buff = new Buffer(Json.encode(Collections.singletonMap("message", "Hello, world!")));
+    HttpServerResponse resp = req.response();
+    setHeaders(resp, "application/json", String.valueOf(buff.length()));
+    resp.end(buff);
   }
 
   private void handleDbMongo(final HttpServerRequest req) {
+    findRandom(ThreadLocalRandom.current(), new Handler<Message<JsonObject>>() {
+      @Override
+      public void handle(Message<JsonObject> reply) {
+        JsonObject world = getResultFromReply(reply);
+        String result = world.encode();
+        sendResponse(req, result);
+      }
+    });
+  }
 
-    final Random random = ThreadLocalRandom.current();
-
-    vertx.eventBus().send(
-        "hello.persistor",
-        new JsonObject()
-            .putString("action", "findone")
-            .putString("collection", "World")
-            .putObject("matcher", new JsonObject().putNumber("_id", (random.nextInt(10000) + 1))),
-        new Handler<Message<JsonObject>>() {
-          @Override
-          public void handle(Message<JsonObject> reply) {
-            JsonObject body = reply.body();
-
-            if ("ok".equals(body.getString("status"))) {
-              JsonObject world = body.getObject("result");
-              world.removeField("_id");
-              String result = world.encode();
-              sendResponse(req, result);
-            } else {
-              System.err.println("Failed to execute query");
-            }
-          }
-        });
+  private JsonObject getResultFromReply(Message<JsonObject> reply) {
+    JsonObject body = reply.body();
+    JsonObject world = body.getObject("result");
+    Object id = world.removeField("_id");
+    world.putValue("id", id);
+    return world;
   }
 
   private void handleQueriesMongo(final HttpServerRequest req) {
@@ -108,21 +99,37 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
     } catch (NumberFormatException e) {
       e.printStackTrace();
     }
-
     final MongoHandler dbh = new MongoHandler(req, queriesParam);
     final Random random = ThreadLocalRandom.current();
-
     for (int i = 0; i < queriesParam; i++) {
-      vertx.eventBus().send(
-          "hello.persistor",
-          new JsonObject()
-              .putString("action", "findone")
-              .putString("collection", "World")
-              .putObject("matcher", new JsonObject().putNumber("_id", (random.nextInt(10000) + 1))),
-          dbh);
+      findRandom(random, dbh);
     }
   }
 
+  private void findRandom(Random random, Handler<Message<JsonObject>> handler) {
+    vertx.eventBus().send(
+        "hello.persistor",
+        new JsonObject()
+            .putString("action", "findone")
+            .putString("collection", "World")
+            .putObject("matcher", new JsonObject().putNumber("_id", (random.nextInt(10000) + 1))),
+        handler);
+  }
+
+  private void sendResponse(HttpServerRequest req, String result) {
+    Buffer buff = new Buffer(result);
+    HttpServerResponse resp = req.response();
+    setHeaders(resp, "application/json", String.valueOf(buff.length()));
+    resp.end(buff);
+  }
+
+  private void setHeaders(HttpServerResponse resp, String contentType, String contentLength) {
+    resp.putHeader("Content-Type", contentType);
+    resp.putHeader("Content-Length", contentLength);
+    resp.putHeader("Server", "vert.x");
+    resp.putHeader("Date", dateString);
+  }
+
   private class MongoHandler implements Handler<Message<JsonObject>> {
     private final HttpServerRequest req;
     private final int queries;
@@ -136,30 +143,15 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
 
     @Override
     public void handle(Message<JsonObject> reply) {
-      JsonObject body = reply.body();
-
-      if ("ok".equals(body.getString("status"))) {
-        body.getObject("result").removeField("_id");
-        worlds.add(body.getObject("result"));
-        if (worlds.size() == this.queries) {
-          // All queries have completed; send the response.
-          String result = worlds.encode();
-          sendResponse(req, result);
-        }
-      } else {
-        System.err.println("Failed to execute query");
+      JsonObject world = getResultFromReply(reply);
+      worlds.add(world);
+      if (worlds.size() == this.queries) {
+        // All queries have completed; send the response.
+        String result = worlds.encode();
+        sendResponse(req, result);
       }
     }
   }
-  
-  private void sendResponse(HttpServerRequest req, String result) {
-      int contentLength = result.getBytes(StandardCharsets.UTF_8).length;
-      HttpServerResponse resp = req.response();
-      resp.putHeader("Content-Type", "application/json; charset=UTF-8");
-      resp.putHeader("Content-Length", String.valueOf(contentLength));
-      resp.putHeader("Server", "vert.x");
-      resp.putHeader("Date", dateString);
-      resp.end(result);
-  }
+
 }
 

+ 2 - 2
vertx/app.js

@@ -6,9 +6,9 @@ var persistorConf = {
   host: 'localhost'
 }
 
-container.deployModule('io.vertx~mod-mongo-persistor~2.0.0-final', persistorConf, function (err, dep_id) {
+container.deployModule('io.vertx~mod-mongo-persistor~2.1.1', persistorConf, function (err, dep_id) {
   if (!err) {
-    container.deployVerticle('WebServer.java', 8);
+    container.deployVerticle('WebServer.java', java.lang.Runtime.getRuntime().availableProcessors() * 2);
   } else {
     err.printStackTrace();
   }