Browse Source

Increment packages and reorganize code.

Edward Bramanti 10 years ago
parent
commit
8baaaaf4e7
2 changed files with 206 additions and 219 deletions
  1. 202 215
      frameworks/JavaScript/nodejs/hello.js
  2. 4 4
      frameworks/JavaScript/nodejs/package.json

+ 202 - 215
frameworks/JavaScript/nodejs/hello.js

@@ -1,53 +1,32 @@
+/**
+ * Module dependencies.
+ */
+
 var cluster = require('cluster')
   , numCPUs = require('os').cpus().length
-  , windows = require('os').platform() == 'win32';
-
-if(cluster.isMaster) {
-  // Fork workers.
-  for (var i = 0; i < numCPUs; i++) {
-    cluster.fork();
-  }
-
-  cluster.on('exit', function(worker, code, signal) {
-    console.log('worker ' + worker.pid + ' died');
-  });
-
-  return;
-}
-
-var http = require('http')
+  , http = require('http')
   , url = require('url')
+  , Sequelize = require('sequelize')
   , async = require('async')
   , mongoose = require('mongoose')
   , conn = mongoose.connect('mongodb://localhost/hello_world')
-  , MongoClient = require('mongodb').MongoClient
-  , connMap = { user: 'benchmarkdbuser', password: 'benchmarkdbpass', database: 'hello_world', host: 'localhost' };
-
-if (!windows) {
-  var Mapper = require('mapper')  
-    , libmysql = require('mysql-libmysqlclient').createConnectionSync();
-    
-    Mapper.connect(connMap, {verbose: false, strict: false});
-    var World = Mapper.map("World", "id", "randomNumber")
-    libmysql.connectSync('localhost', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
-}
+  , MongoClient = require('mongodb').MongoClient;
 
 var collection = null;
-
 MongoClient.connect('mongodb://localhost/hello_world?maxPoolSize=5', function(err, db) {
   collection = db.collection('world');
 });
 
-// define model
-var Schema = mongoose.Schema
-  , ObjectId = Schema.ObjectId;
+var WorldSchema = new mongoose.Schema({
+    id          : Number,
+    randomNumber: Number
+  }, {
+    collection: 'world'
+  }),
+  MWorld = conn.model('World', WorldSchema);
 
-var WorldSchema = new Schema({
-    id                           : Number
-  , randomNumber                 : Number
-}, { collection : 'world' });
-var MWorld = conn.model('World', WorldSchema);
 
+// Helper functions
 function getRandomNumber() {
   return Math.floor(Math.random() * 10000) + 1;
 }
@@ -76,221 +55,229 @@ function sequelizeQuery(callback) {
   });
 }
 
-http.createServer(function (req, res) {
-  // JSON response object
-  var hello = {message: "Hello, World!"};
-  var helloStr = "Hello, World!";
-  var path = url.parse(req.url).pathname;
-  
-  // mysql on windows is not supported
-  if (windows && (path.substr(0, 3) == '/my' || path == '/update')) {
-    path = '/doesntexist';
+if(cluster.isMaster) {
+  // Fork workers.
+  for (var i = 0; i < numCPUs; i++) {
+    cluster.fork();
   }
 
-  switch (path) {
-  case '/json':
-    res.writeHead(200, {
-      'Content-Type': 'application/json', 
-      'Server': 'Node'
-    });
-    res.end(JSON.stringify(hello));
-    break;
-
-  case '/plaintext':
-    // JSON Response Test
-    res.writeHead(200, {'Content-Type': 'text/plain; charset=UTF-8'});
-    // Write JSON object to response
-    res.end(helloStr);
-    break;
-
-  case '/mongodbdriver':
-    // Database Test
-    var values = url.parse(req.url, true);
-    var queries = Math.min(Math.max(values.query.queries, 1), 500);
-    var queryFunctions = new Array(queries);
-
-    for (var i = 0; i < queries; i += 1) {
-      queryFunctions[i] = mongodbDriverQuery;
-    }
-
+  cluster.on('exit', function(worker, code, signal) {
+    console.log('worker ' + worker.pid + ' died');
+  });
 
-    async.parallel(queryFunctions, function(err, results) {
-      if (!values.query.queries) {
-        results = results[0];
-      }
+  return;
+} else {
+  http.createServer(function (req, res) {
+    // JSON response object
+    var hello = {message: "Hello, World!"};
+    var helloStr = "Hello, World!";
+    var path = url.parse(req.url).pathname;
+
+    switch (path) {
+    case '/json':
       res.writeHead(200, {
         'Content-Type': 'application/json', 
         'Server': 'Node'
       });
-      res.end(JSON.stringify(results));
-    });
-    break;
-
-  case '/mongoose':
-    // Database Test
-    var values = url.parse(req.url, true);
-    var queries = Math.min(Math.max(values.query.queries, 1), 500);
-    var queryFunctions = new Array(queries);
-
-    for (var i = 0; i < queries; i += 1) {
-      queryFunctions[i] = mongooseQuery;
-    }
-    
-
-    async.parallel(queryFunctions, function(err, results) {
-      if (!values.query.queries) {
-        results = results[0];
+      res.end(JSON.stringify(hello));
+      break;
+
+    case '/plaintext':
+      // JSON Response Test
+      res.writeHead(200, {'Content-Type': 'text/plain; charset=UTF-8'});
+      // Write JSON object to response
+      res.end(helloStr);
+      break;
+
+    case '/mongodbdriver':
+      // Database Test
+      var values = url.parse(req.url, true);
+      var queries = Math.min(Math.max(values.query.queries, 1), 500);
+      var queryFunctions = new Array(queries);
+
+      for (var i = 0; i < queries; i += 1) {
+        queryFunctions[i] = mongodbDriverQuery;
       }
-      res.writeHead(200, {
-        'Content-Type': 'application/json', 
-        'Server': 'Node'
-      });
-      res.end(JSON.stringify(results));
-    });
-    break;
 
-  case '/mysql-orm':
-    var values = url.parse(req.url, true);
-    var queries = Math.min(Math.max(values.query.queries, 1), 500);
-    var queryFunctions = new Array(queries);
 
-    for (var i = 0; i < queries; i += 1) {
-      queryFunctions[i] = sequelizeQuery;
-    }
+      async.parallel(queryFunctions, function(err, results) {
+        if (!values.query.queries) {
+          results = results[0];
+        }
+        res.writeHead(200, {
+          'Content-Type': 'application/json', 
+          'Server': 'Node'
+        });
+        res.end(JSON.stringify(results));
+      });
+      break;
 
+    case '/mongoose':
+      // Database Test
+      var values = url.parse(req.url, true);
+      var queries = Math.min(Math.max(values.query.queries, 1), 500);
+      var queryFunctions = new Array(queries);
 
-    async.parallel(queryFunctions, function(err, results) {
-      if (queries == 1) {
-        results = results[0];
+      for (var i = 0; i < queries; i += 1) {
+        queryFunctions[i] = mongooseQuery;
       }
-      res.writeHead(200, {
-        'Content-Type': 'application/json', 
-        'Server': 'Node'
-      });
-      res.end(JSON.stringify(results));
-    });
-    break;
+      
 
-  case '/mysql':
-    function libmysqlQuery(callback) {
-      libmysql.query("SELECT * FROM world WHERE id = " + getRandomNumber(), function (err, res) {
-        if (err) {
-	        throw err;
-	      }
-	
-	      res.fetchAll(function(err, rows) {
-      	  if (err) {
-      	    throw err;
-      	  }
-
-      	  res.freeSync();
-      	  callback(null, rows[0]);
+      async.parallel(queryFunctions, function(err, results) {
+        if (!values.query.queries) {
+          results = results[0];
+        }
+        res.writeHead(200, {
+          'Content-Type': 'application/json', 
+          'Server': 'Node'
         });
+        res.end(JSON.stringify(results));
       });
-    } 
+      break;
 
-    var values = url.parse(req.url, true);
-    var queries = values.query.queries || 1;
-    var queryFunctions = new Array(queries);
+    case '/mysql-orm':
+      var values = url.parse(req.url, true);
+      var queries = Math.min(Math.max(values.query.queries, 1), 500);
+      var queryFunctions = new Array(queries);
 
-    for (var i = 0; i < queries; i += 1) {
-      queryFunctions[i] = libmysqlQuery;
-    }
-    async.parallel(queryFunctions, function(err, results) {
-      if (err) {
-        res.writeHead(500);
-        return res.end('MYSQL CONNECTION ERROR.');
-      }
-      if (!values.query.queries) {
-        results = results[0];
+      for (var i = 0; i < queries; i += 1) {
+        queryFunctions[i] = sequelizeQuery;
       }
-      res.writeHead(200, {
-        'Content-Type': 'application/json', 
-        'Server': 'Node'
+
+
+      async.parallel(queryFunctions, function(err, results) {
+        if (queries == 1) {
+          results = results[0];
+        }
+        res.writeHead(200, {
+          'Content-Type': 'application/json', 
+          'Server': 'Node'
+        });
+        res.end(JSON.stringify(results));
       });
-      res.end(JSON.stringify(results));
-    });
-    break;
+      break;
 
-  case '/update':
+    case '/mysql':
+      function libmysqlQuery(callback) {
+        libmysql.query("SELECT * FROM world WHERE id = " + getRandomNumber(), function (err, res) {
+          if (err) {
+  	        throw err;
+  	      }
+  	
+  	      res.fetchAll(function(err, rows) {
+        	  if (err) {
+        	    throw err;
+        	  }
+
+        	  res.freeSync();
+        	  callback(null, rows[0]);
+          });
+        });
+      } 
 
-    function libmysqlQuery(callback) {
-      libmysql.query("SELECT * FROM world WHERE id = " + getRandomNumber(), function (err, res) {
+      var values = url.parse(req.url, true);
+      var queries = values.query.queries || 1;
+      var queryFunctions = new Array(queries);
+
+      for (var i = 0; i < queries; i += 1) {
+        queryFunctions[i] = libmysqlQuery;
+      }
+      async.parallel(queryFunctions, function(err, results) {
         if (err) {
-          throw err;
+          res.writeHead(500);
+          return res.end('MYSQL CONNECTION ERROR.');
+        }
+        if (!values.query.queries) {
+          results = results[0];
         }
-  
-        res.fetchAll(function(err, rows) {
+        res.writeHead(200, {
+          'Content-Type': 'application/json', 
+          'Server': 'Node'
+        });
+        res.end(JSON.stringify(results));
+      });
+      break;
+
+    case '/update':
+
+      function libmysqlQuery(callback) {
+        libmysql.query("SELECT * FROM world WHERE id = " + getRandomNumber(), function (err, res) {
           if (err) {
             throw err;
           }
-
-          res.freeSync();
-
-          rows[0].randomNumber = getRandomNumber();
-          libmysql.query("UPDATE World SET randomNumber = " + rows[0].randomNumber + " WHERE id = " + rows[0]['id'], function (err, res) {
+    
+          res.fetchAll(function(err, rows) {
             if (err) {
               throw err;
             }
-            callback(null, rows[0]);
+
+            res.freeSync();
+
+            rows[0].randomNumber = getRandomNumber();
+            libmysql.query("UPDATE World SET randomNumber = " + rows[0].randomNumber + " WHERE id = " + rows[0]['id'], function (err, res) {
+              if (err) {
+                throw err;
+              }
+              callback(null, rows[0]);
+            });
           });
         });
-      });
-    } 
-
-    var values = url.parse(req.url, true);
-    var queries = values.query.queries || 1;
-    if(queries < 1) {
-      queries = 1;
-    } else if(queries > 500) {
-      queries = 500;
-    }
-    var queryFunctions = new Array(queries);
+      } 
+
+      var values = url.parse(req.url, true);
+      var queries = values.query.queries || 1;
+      if(queries < 1) {
+        queries = 1;
+      } else if(queries > 500) {
+        queries = 500;
+      }
+      var queryFunctions = new Array(queries);
 
-    for (var i = 0; i < queries; i += 1) {
-      queryFunctions[i] = libmysqlQuery;
-    }
-    async.parallel(queryFunctions, function(err, results) {
-      if (err) {
-        res.writeHead(500);
-        return res.end('MYSQL CONNECTION ERROR.');
+      for (var i = 0; i < queries; i += 1) {
+        queryFunctions[i] = libmysqlQuery;
       }
-      res.writeHead(200, {
-        'Content-Type': 'application/json', 
-        'Server': 'Node'
+      async.parallel(queryFunctions, function(err, results) {
+        if (err) {
+          res.writeHead(500);
+          return res.end('MYSQL CONNECTION ERROR.');
+        }
+        res.writeHead(200, {
+          'Content-Type': 'application/json', 
+          'Server': 'Node'
+        });
+        res.end(JSON.stringify(results));
       });
-      res.end(JSON.stringify(results));
-    });
-    break;
-
-  case '/update-mongodb':
-    // Database Test
-    var values = url.parse(req.url, true);
-    var queries = values.query.queries || 1;
-    if (queries < 1) {
-      queries = 1;
-    } else if (queries > 500) {
-      queries = 500;
-    }
+      break;
+
+    case '/update-mongodb':
+      // Database Test
+      var values = url.parse(req.url, true);
+      var queries = values.query.queries || 1;
+      if (queries < 1) {
+        queries = 1;
+      } else if (queries > 500) {
+        queries = 500;
+      }
 
-    var queryFunctions = new Array(queries);
+      var queryFunctions = new Array(queries);
 
-    for (var i = 0; i < queries; i += 1) {
-      queryFunctions[i] = mongodbDriverUpdateQuery;
-    }
+      for (var i = 0; i < queries; i += 1) {
+        queryFunctions[i] = mongodbDriverUpdateQuery;
+      }
 
-    async.parallel(queryFunctions, function(err, results) {
-      res.writeHead(200, {
-        'Content-Type': 'application/json', 
-        'Server': 'Node'
+      async.parallel(queryFunctions, function(err, results) {
+        res.writeHead(200, {
+          'Content-Type': 'application/json', 
+          'Server': 'Node'
+        });
+        res.end(JSON.stringify(results));
       });
-      res.end(JSON.stringify(results));
-    });
-    break;
-
-  default:
-    // File not found handler
-    res.writeHead(501, {'Content-Type': 'text/plain; charset=UTF-8'});
-    res.end("NOT IMPLEMENTED");
-  }
-}).listen(8080);
+      break;
+
+    default:
+      // File not found handler
+      res.writeHead(501, {'Content-Type': 'text/plain; charset=UTF-8'});
+      res.end("NOT IMPLEMENTED");
+    }
+  }).listen(8080);
+}

+ 4 - 4
frameworks/JavaScript/nodejs/package.json

@@ -3,11 +3,11 @@
   , "version": "0.0.1"
   , "private": true
   , "dependencies": {
-      "mongoose": "3.5.5" 
-    , "async": "0.2.5"
-    , "mysql-libmysqlclient": "1.5.2"
-    , "mapper": "0.2.4-pre"
+      "mongoose": "4.0.1" 
+    , "async": "0.9.0"
     , "mongodb": "1.3.0"
+    , "sequelize": "2.0.6"
+    , "mysql": "2.6.2"
   }
   , "main": "hello.js"
 }