Browse Source

sync code with undertow test & fix setup.py

Tomaz Cerar 11 years ago
parent
commit
24ea49ac6d

+ 4 - 4
undertow-edge/benchmark_config

@@ -1,4 +1,4 @@
-{
+{
   "framework": "undertow-edge",
   "framework": "undertow-edge",
   "tests": [{
   "tests": [{
     "default": {
     "default": {
@@ -24,7 +24,7 @@
     "mysql" : {
     "mysql" : {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db/mysql",
       "db_url": "/db/mysql",
-      "query_url": "/db/mysql?queries=",
+      "query_url": "/queries/mysql?queries=",
       "fortune_url": "/fortunes/mysql",
       "fortune_url": "/fortunes/mysql",
       "update_url": "/updates/mysql?queries=",
       "update_url": "/updates/mysql?queries=",
       "port": 8080,
       "port": 8080,
@@ -45,7 +45,7 @@
     "postgresql" : {
     "postgresql" : {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db/postgresql",
       "db_url": "/db/postgresql",
-      "query_url": "/db/postgresql?queries=",
+      "query_url": "/queries/postgresql?queries=",
       "fortune_url": "/fortunes/postgresql",
       "fortune_url": "/fortunes/postgresql",
       "update_url": "/updates/postgresql?queries=",
       "update_url": "/updates/postgresql?queries=",
       "port": 8080,
       "port": 8080,
@@ -66,7 +66,7 @@
     "mongodb" : {
     "mongodb" : {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db/mongodb",
       "db_url": "/db/mongodb",
-      "query_url": "/db/mongodb?queries=",
+      "query_url": "/queries/mongodb?queries=",
       "fortune_url": "/fortunes/mongodb",
       "fortune_url": "/fortunes/mongodb",
       "update_url": "/updates/mongodb?queries=",
       "update_url": "/updates/mongodb?queries=",
       "port": 8080,
       "port": 8080,

+ 1 - 1
undertow-edge/setup.py

@@ -7,7 +7,7 @@ def start(args, logfile, errfile):
   setup_util.replace_text('undertow-edge/src/main/resources/hello/server.properties', 'DATABASE_HOST', args.database_host)
   setup_util.replace_text('undertow-edge/src/main/resources/hello/server.properties', 'DATABASE_HOST', args.database_host)
   try:
   try:
     subprocess.check_call("mvn clean package", shell=True, cwd="undertow-edge", stderr=errfile, stdout=logfile)
     subprocess.check_call("mvn clean package", shell=True, cwd="undertow-edge", stderr=errfile, stdout=logfile)
-    subprocess.Popen("java -Djava.library.path=undertow-edge/target -jar undertow-edge-0.1-jar-with-dependencies.jar".rsplit(" "), cwd="undertow-edge/target", stderr=errfile, stdout=logfile)
+    subprocess.Popen("java -Djava.library.path=target/ -jar target/undertow-edge-0.1-jar-with-dependencies.jar".rsplit(" "), cwd="undertow-edge", stderr=errfile, stdout=logfile)
     return 0
     return 0
   except subprocess.CalledProcessError:
   except subprocess.CalledProcessError:
     return 1
     return 1

+ 0 - 1
undertow-edge/src/main/java/hello/CacheHandler.java

@@ -2,7 +2,6 @@ package hello;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.cache.LoadingCache;
 import com.google.common.cache.LoadingCache;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;

+ 16 - 6
undertow-edge/src/main/java/hello/DbMongoHandler.java

@@ -1,7 +1,6 @@
 package hello;
 package hello;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import com.mongodb.BasicDBObject;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DB;
 import com.mongodb.DB;
 import com.mongodb.DBObject;
 import com.mongodb.DBObject;
@@ -19,10 +18,12 @@ import static hello.HelloWebServer.JSON_UTF8;
 final class DbMongoHandler implements HttpHandler {
 final class DbMongoHandler implements HttpHandler {
   private final ObjectMapper objectMapper;
   private final ObjectMapper objectMapper;
   private final DB database;
   private final DB database;
+  private final boolean multiple;
 
 
-  DbMongoHandler(ObjectMapper objectMapper, DB database) {
+  DbMongoHandler(ObjectMapper objectMapper, DB database, boolean multiple) {
     this.objectMapper = Objects.requireNonNull(objectMapper);
     this.objectMapper = Objects.requireNonNull(objectMapper);
     this.database = Objects.requireNonNull(database);
     this.database = Objects.requireNonNull(database);
+    this.multiple = multiple;
   }
   }
 
 
   @Override
   @Override
@@ -31,7 +32,13 @@ final class DbMongoHandler implements HttpHandler {
       exchange.dispatch(this);
       exchange.dispatch(this);
       return;
       return;
     }
     }
-    int queries = Helper.getQueries(exchange);
+    
+    int queries = 1;
+    if(multiple)
+    {
+      queries = Helper.getQueries(exchange);
+    }
+    
     World[] worlds = new World[queries];
     World[] worlds = new World[queries];
     for (int i = 0; i < queries; i++) {
     for (int i = 0; i < queries; i++) {
       DBObject object = database.getCollection("World").findOne(
       DBObject object = database.getCollection("World").findOne(
@@ -46,13 +53,16 @@ final class DbMongoHandler implements HttpHandler {
     }
     }
     exchange.getResponseHeaders().put(
     exchange.getResponseHeaders().put(
         Headers.CONTENT_TYPE, JSON_UTF8);
         Headers.CONTENT_TYPE, JSON_UTF8);
-    if (queries == 1)
+    
+    if (multiple)
     {
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
+      // If a multiple query then response must be an array
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
     }
     }
     else
     else
     {
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
+      // If a single query then response must be an object
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
     }
     }
   }
   }
 }
 }

+ 18 - 6
undertow-edge/src/main/java/hello/DbSqlHandler.java

@@ -1,12 +1,13 @@
 package hello;
 package hello;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
+
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;
 
 
 import javax.sql.DataSource;
 import javax.sql.DataSource;
+
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
@@ -20,10 +21,12 @@ import static hello.HelloWebServer.JSON_UTF8;
 final class DbSqlHandler implements HttpHandler {
 final class DbSqlHandler implements HttpHandler {
   private final ObjectMapper objectMapper;
   private final ObjectMapper objectMapper;
   private final DataSource database;
   private final DataSource database;
+  private final boolean multiple;
 
 
-  DbSqlHandler(ObjectMapper objectMapper, DataSource database) {
+  DbSqlHandler(ObjectMapper objectMapper, DataSource database, boolean multiple) {
     this.objectMapper = Objects.requireNonNull(objectMapper);
     this.objectMapper = Objects.requireNonNull(objectMapper);
     this.database = Objects.requireNonNull(database);
     this.database = Objects.requireNonNull(database);
+    this.multiple = multiple;
   }
   }
 
 
   @Override
   @Override
@@ -32,7 +35,13 @@ final class DbSqlHandler implements HttpHandler {
       exchange.dispatch(this);
       exchange.dispatch(this);
       return;
       return;
     }
     }
-    int queries = Helper.getQueries(exchange);
+    
+    int queries = 1;
+    if(multiple)
+    {
+      queries = Helper.getQueries(exchange);
+    }
+    
     World[] worlds = new World[queries];
     World[] worlds = new World[queries];
     try (Connection connection = database.getConnection();
     try (Connection connection = database.getConnection();
          PreparedStatement statement = connection.prepareStatement(
          PreparedStatement statement = connection.prepareStatement(
@@ -51,13 +60,16 @@ final class DbSqlHandler implements HttpHandler {
     }
     }
     exchange.getResponseHeaders().put(
     exchange.getResponseHeaders().put(
         Headers.CONTENT_TYPE, JSON_UTF8);
         Headers.CONTENT_TYPE, JSON_UTF8);
-    if (queries == 1)
+    
+    if (multiple)
     {
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
+      // If a multiple query then response must be an array
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
     }
     }
     else
     else
     {
     {
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
+      // If a single query then response must be an object
+      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
     }
     }
   }
   }
 }
 }

+ 0 - 1
undertow-edge/src/main/java/hello/FortunesMongoHandler.java

@@ -2,7 +2,6 @@ package hello;
 
 
 import com.github.mustachejava.Mustache;
 import com.github.mustachejava.Mustache;
 import com.github.mustachejava.MustacheFactory;
 import com.github.mustachejava.MustacheFactory;
-import com.google.common.net.MediaType;
 import com.mongodb.DB;
 import com.mongodb.DB;
 import com.mongodb.DBCursor;
 import com.mongodb.DBCursor;
 import com.mongodb.DBObject;
 import com.mongodb.DBObject;

+ 0 - 1
undertow-edge/src/main/java/hello/FortunesSqlHandler.java

@@ -2,7 +2,6 @@ package hello;
 
 
 import com.github.mustachejava.Mustache;
 import com.github.mustachejava.Mustache;
 import com.github.mustachejava.MustacheFactory;
 import com.github.mustachejava.MustacheFactory;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;

+ 9 - 3
undertow-edge/src/main/java/hello/HelloWebServer.java

@@ -124,11 +124,17 @@ public final class HelloWebServer {
             .addPrefixPath("/json",
             .addPrefixPath("/json",
                 new JsonHandler(objectMapper))
                 new JsonHandler(objectMapper))
             .addPrefixPath("/db/mysql",
             .addPrefixPath("/db/mysql",
-                new DbSqlHandler(objectMapper, mysql))
+                new DbSqlHandler(objectMapper, mysql, false))
+            .addPrefixPath("/queries/mysql",
+                new DbSqlHandler(objectMapper, mysql, true))
             .addPrefixPath("/db/postgresql",
             .addPrefixPath("/db/postgresql",
-                new DbSqlHandler(objectMapper, postgresql))
+                new DbSqlHandler(objectMapper, postgresql, false))
+            .addPrefixPath("/queries/postgresql",
+                new DbSqlHandler(objectMapper, postgresql, true))
             .addPrefixPath("/db/mongodb",
             .addPrefixPath("/db/mongodb",
-                new DbMongoHandler(objectMapper, mongodb))
+                new DbMongoHandler(objectMapper, mongodb, false))
+            .addPrefixPath("/queries/mongodb",
+                new DbMongoHandler(objectMapper, mongodb, true))
             .addPrefixPath("/fortunes/mysql",
             .addPrefixPath("/fortunes/mysql",
                 new FortunesSqlHandler(mustacheFactory, mysql))
                 new FortunesSqlHandler(mustacheFactory, mysql))
             .addPrefixPath("/fortunes/postgresql",
             .addPrefixPath("/fortunes/postgresql",

+ 0 - 1
undertow-edge/src/main/java/hello/JsonHandler.java

@@ -1,7 +1,6 @@
 package hello;
 package hello;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;

+ 0 - 1
undertow-edge/src/main/java/hello/PlaintextHandler.java

@@ -1,6 +1,5 @@
 package hello;
 package hello;
 
 
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;

+ 6 - 2
undertow-edge/src/main/java/hello/UpdatesMongoHandler.java

@@ -1,10 +1,10 @@
 package hello;
 package hello;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import com.mongodb.BasicDBObject;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DB;
 import com.mongodb.DB;
 import com.mongodb.DBObject;
 import com.mongodb.DBObject;
+
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;
@@ -43,7 +43,11 @@ final class UpdatesMongoHandler implements HttpHandler {
       // produce the correct output and side effects.
       // produce the correct output and side effects.
       //
       //
       DBObject object = database.getCollection("World").findOne(key);
       DBObject object = database.getCollection("World").findOne(key);
-      int oldRandomNumber = ((Number) object.get("randomNumber")).intValue();
+      
+      @SuppressWarnings("unused")
+      // Per test requirement the old value must be read
+      int oldRandomNumber = ((Number) object.get("randomNumber")).intValue(); 
+      
       int newRandomNumber = Helper.randomWorld();
       int newRandomNumber = Helper.randomWorld();
       object.put("randomNumber", newRandomNumber);
       object.put("randomNumber", newRandomNumber);
       database.getCollection("World").update(key, object);
       database.getCollection("World").update(key, object);

+ 0 - 1
undertow-edge/src/main/java/hello/UpdatesSqlHandler.java

@@ -1,7 +1,6 @@
 package hello;
 package hello;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.net.MediaType;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;

+ 12 - 12
undertow-edge/src/main/java/hello/World.java

@@ -4,17 +4,17 @@ package hello;
  * The model for the "world" database table.
  * The model for the "world" database table.
  */
  */
 public final class World {
 public final class World {
-  public int id;
-  public int randomNumber;
+    public int id;
+    public int randomNumber;
 
 
-  /**
-   * Constructs a new world object with the given parameters.
-   *
-   * @param id the ID of the world
-   * @param randomNumber the random number of the world
-   */
-  public World(int id, int randomNumber) {
-    this.id = id;
-    this.randomNumber = randomNumber;
-  }
+    /**
+     * Constructs a new world object with the given parameters.
+     *
+     * @param id           the ID of the world
+     * @param randomNumber the random number of the world
+     */
+    public World(int id, int randomNumber) {
+        this.id = id;
+        this.randomNumber = randomNumber;
+    }
 }
 }