Browse Source

Express test 5: update database

Valentin Agachi 12 years ago
parent
commit
d4f54e427f
2 changed files with 68 additions and 0 deletions
  1. 66 0
      express/app.js
  2. 2 0
      express/benchmark_config

+ 66 - 0
express/app.js

@@ -120,5 +120,71 @@ if (cluster.isMaster) {
     return (a.message < b.message) ? -1 : (a.message > b.message) ? 1 : 0;
   }
 
+  app.get('/mongoose-update', function(req, res) {
+    var queries = req.query.queries || 1
+      , selectFunctions = [];
+
+    queries = Math.min(queries, 500);
+
+    for (var i = 1; i <= queries; i++ ) {
+      selectFunctions.push(function(callback) {
+        MWorld.findOne({ id: Math.floor(Math.random() * 10000) + 1 }).exec(callback);
+      });
+    }
+
+    async.parallel(selectFunctions, function(err, worlds) {
+      var updateFunctions = [];
+
+      for (var i = 0; i < queries; i++) {
+        (function(i){
+          updateFunctions.push(function(callback){
+            worlds[i].randomNumber = Math.ceil(Math.random() * 10000);
+            MWorld.update({
+              id: worlds[i]
+            }, {
+              randomNumber: worlds[i].randomNumber
+            }, callback);
+          });
+        })(i);
+      }
+
+      async.parallel(updateFunctions, function(err, updates) {
+        res.send(worlds);
+      });
+    });
+  });
+
+  app.get('/mysql-orm-update', function(req, res) {
+    if (windows) return res.send(501, 'Not supported on windows');
+
+    var queries = req.query.queries || 1
+      , selectFunctions = [];
+
+    queries = Math.min(queries, 500);
+
+    for (var i = 1; i <= queries; i++ ) {
+      selectFunctions.push(function(callback) {
+        World.findById(Math.floor(Math.random() * 10000) + 1, callback);
+      });
+    }
+
+    async.parallel(selectFunctions, function(err, worlds) {
+      var updateFunctions = [];
+
+      for (var i = 0; i < queries; i++) {
+        (function(i){
+          updateFunctions.push(function(callback){
+            worlds[i].randomNumber = Math.ceil(Math.random() * 10000);
+            World.save(worlds[i], callback);
+          });
+        })(i);
+      }
+
+      async.parallel(updateFunctions, function(err, updates) {
+        res.send(worlds);
+      });
+    });   
+  });
+
   app.listen(8080);
 }

+ 2 - 0
express/benchmark_config

@@ -11,6 +11,7 @@
       "setup_file": "setup",
       "db_url": "/mongoose",
       "query_url": "/mongoose?queries=",
+      "update_url": "/mongoose-update?queries=",
       "port": 8080,
       "sort": 5
     },
@@ -19,6 +20,7 @@
       "db_url": "/mysql-orm",
       "query_url": "/mysql-orm?queries=",
       "fortune_url": "/fortune",
+      "update_url": "/mysql-orm-update?queries=",
       "port": 8080,
       "sort": 6
     }