Browse Source

Merge pull request #1162 from ebramanti-techempower/master

Fix Dropwizard/Dropwizard Mongo tests
Mike Smith 10 years ago
parent
commit
e1b13f9d93

+ 30 - 8
frameworks/Java/dropwizard-mongodb/src/main/java/com/example/helloworld/resources/WorldResource.java

@@ -13,6 +13,7 @@ import org.mongojack.JacksonDBCollection;
 
 import com.example.helloworld.core.World;
 import com.google.common.base.Optional;
+import com.google.common.primitives.Ints;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DBObject;
 
@@ -29,18 +30,39 @@ public class WorldResource
   }
 
   @GET
-  public World[] dbTest(@QueryParam("queries") Optional<Integer> queries)
+  public Object dbTest(@QueryParam("queries") Optional<String> queries)
   {
-    final int totalQueries = queries.or(1);
-    final World[] worlds = new World[queries.or(1)];
     final Random random = new Random(System.currentTimeMillis());
-
+    if (!queries.isPresent()) 
+    {
+      DBObject query = new BasicDBObject();
+      query.put("_id", (random.nextInt(10000) + 1));
+      DBCursor<World> dbCursor = collection.find(query);
+      return (dbCursor.hasNext()) ? dbCursor.next() : null;
+    }
+    Integer totalQueries = Ints.tryParse(queries.orNull());
+    if (totalQueries != null) 
+    {
+      if (totalQueries > 500) 
+      {
+        totalQueries = 500;
+      }
+      else if (totalQueries < 1) 
+      {
+        totalQueries = 1;
+      }
+    } 
+    else 
+    {
+      totalQueries = 1;
+    }
+    final World[] worlds = new World[totalQueries];
     for (int i = 0; i < totalQueries; i++)
     {
-    	DBObject query = new BasicDBObject();
-    	query.put("_id", (random.nextInt(10000) + 1));
-    	DBCursor<World> dbCursor = collection.find(query);
-        worlds[i] = (dbCursor.hasNext()) ? dbCursor.next() : null;
+      DBObject query = new BasicDBObject();
+      query.put("_id", (random.nextInt(10000) + 1));
+      DBCursor<World> dbCursor = collection.find(query);
+      worlds[i] = (dbCursor.hasNext()) ? dbCursor.next() : null;
     }
     return worlds;
   }

+ 31 - 4
frameworks/Java/dropwizard/src/main/java/com/example/helloworld/resources/WorldResource.java

@@ -3,6 +3,7 @@ package com.example.helloworld.resources;
 import com.example.helloworld.db.WorldDAO;
 import com.example.helloworld.db.model.World;
 import com.google.common.base.Optional;
+import com.google.common.primitives.Ints;
 import io.dropwizard.hibernate.UnitOfWork;
 
 import javax.ws.rs.GET;
@@ -26,8 +27,24 @@ public class WorldResource {
 
     @GET
     @UnitOfWork
-    public World[] dbTest(@QueryParam("queries") Optional<Integer> queries) {
-        final int totalQueries = queries.or(1); // TODO: Should be bound [1,500]
+    public Object dbTest(@QueryParam("queries") Optional<String> queries) {
+        if (!queries.isPresent()) {
+            final long worldId = RANDOM.nextInt(10_000) + 1;
+            return worldDAO.findById(worldId).orNull();
+        }
+
+        Integer totalQueries = Ints.tryParse(queries.orNull());
+        if (totalQueries != null) {
+            if (totalQueries > 500) {
+                totalQueries = 500;
+            } else if (totalQueries < 1) {
+                totalQueries = 1;
+            }
+        } else {
+            totalQueries = 1;
+        }
+
+        
         final World[] worlds = new World[totalQueries];
 
         // TODO: Is parallelising this cheating?
@@ -42,8 +59,18 @@ public class WorldResource {
     @GET
     @Path("/update")
     @UnitOfWork
-    public World[] updateTest(@QueryParam("queries") Optional<Integer> queries) {
-        final int totalQueries = queries.or(1); // TODO: Should be bound [1,500]
+    public World[] updateTest(@QueryParam("queries") Optional<String> queries) {
+        Integer totalQueries = Ints.tryParse(queries.orNull());
+        if (totalQueries != null) {
+            if (totalQueries > 500) {
+                totalQueries = 500;
+            } else if (totalQueries < 1) {
+                totalQueries = 1;
+            }
+        } else {
+            totalQueries = 1;
+        }
+
         final World[] worlds = new World[totalQueries];
 
         // TODO: Is parallelising this cheating?