Browse Source

All redis tests passing

Zane Kansil 10 years ago
parent
commit
219e84e381
1 changed files with 36 additions and 7 deletions
  1. 36 7
      frameworks/Crystal/moonshine/server.cr

+ 36 - 7
frameworks/Crystal/moonshine/server.cr

@@ -19,6 +19,7 @@ class CONTENT
   HTML = "text/html" + UTF8
   HTML = "text/html" + UTF8
 end
 end
 
 
+ID_MAXIMUM = 10_000
 
 
 app.response_middleware do |req, res|
 app.response_middleware do |req, res|
     res.headers["Server"] = "Moonshine"
     res.headers["Server"] = "Moonshine"
@@ -27,13 +28,32 @@ app.response_middleware do |req, res|
 end
 end
 
 
 private def randomWorld
 private def randomWorld
-  id = rand(1...10_000)
+  id = rand(1..ID_MAXIMUM)
+  num = REDIS.get("world:" + id.to_s)
+  puts num
   {
   {
     :id => id
     :id => id
-    :randomNumber => REDIS.get("world:" + id.to_s)
+    :randomNumber => num
   }
   }
 end
 end
 
 
+private def setWorld(world)
+  id = "world:" + world[:id].to_s
+  REDIS.set(id, world[:randomNumber])
+  world
+end
+
+private def sanitizedQueryCount(request)
+  begin
+    queries = request.get["queries"].to_i
+  rescue
+    queries = 1
+  end
+  queries = 1 if queries < 1
+  queries = 500 if queries > 500
+  queries
+end
+
 app.define do
 app.define do
 
 
   # Test 1: JSON Serialization
   # Test 1: JSON Serialization
@@ -52,11 +72,7 @@ app.define do
 
 
   # Test 3: Multiple database query
   # Test 3: Multiple database query
   route "/queries", do |request|
   route "/queries", do |request|
-    queries = request.get["queries"].to_i
-    queries = 1 if queries < 1
-    queries = 500 if queries > 500
-
-    results = (1..queries).map do
+    results = (1..sanitizedQueryCount(request)).map do
       randomWorld
       randomWorld
     end
     end
 
 
@@ -113,6 +129,19 @@ app.define do
     res
     res
   end
   end
 
 
+  # Test 5: Database Updates
+  route "/updates", do |request|
+    updated = (1..sanitizedQueryCount(request)).map do
+      world = randomWorld
+      world[:randomNumber] = rand(1..ID_MAXIMUM)
+      setWorld(world)
+    end
+
+    res = ok(updated.to_json)
+    res.headers["Content-type"] = CONTENT::JSON
+    res
+  end
+
   # Test 6: Plaintext
   # Test 6: Plaintext
   route "/plaintext", do |request|
   route "/plaintext", do |request|
     res = ok("Hello, World!")
     res = ok("Hello, World!")