Explorar o código

JS/Express fix update test and vagrant dev (#3255)

* JS/express fix update test

* JS/express fix update test
Nate %!s(int64=7) %!d(string=hai) anos
pai
achega
52ecdf9eb8

+ 2 - 23
frameworks/JavaScript/express/app.js

@@ -5,12 +5,9 @@
 
 
 const cluster = require('cluster'),
 const cluster = require('cluster'),
   numCPUs = require('os').cpus().length,
   numCPUs = require('os').cpus().length,
-  express = require('express'),
-  async = require('async');
+  express = require('express');
 
 
-const bodyParser = require('body-parser'),
-  methodOverride = require('method-override'),
-  errorHandler = require('errorhandler');
+const bodyParser = require('body-parser');
 
 
 if (cluster.isMaster) {
 if (cluster.isMaster) {
   // Fork workers.
   // Fork workers.
@@ -24,16 +21,7 @@ if (cluster.isMaster) {
   const app = module.exports = express();
   const app = module.exports = express();
 
 
   // Configuration
   // Configuration
-  // https://github.com/expressjs/method-override#custom-logic
   app.use(bodyParser.urlencoded({ extended: true }));
   app.use(bodyParser.urlencoded({ extended: true }));
-  app.use(methodOverride((req, res) => {
-    if (req.body && typeof req.body === 'object' && '_method' in req.body) {
-      // look in urlencoded POST bodies and delete it
-      const method = req.body._method;
-      delete req.body._method;
-      return method;
-    }
-  }));
 
 
   // Set headers for all routes
   // Set headers for all routes
   app.use((req, res, next) => {
   app.use((req, res, next) => {
@@ -44,15 +32,6 @@ if (cluster.isMaster) {
   app.set('view engine', 'jade');
   app.set('view engine', 'jade');
   app.set('views', __dirname + '/views');
   app.set('views', __dirname + '/views');
 
 
-  // Check Node env.
-  const env = process.env.NODE_ENV || 'development';
-  if ('development' == env) {
-    app.use(errorHandler({ dumpExceptions: true, showStack: true }));
-  }
-  if ('production' == env) {
-    app.use(errorHandler());
-  }
-
   // Routes
   // Routes
   app.get('/json', (req, res) => res.send({ message: 'Hello, World!' }));
   app.get('/json', (req, res) => res.send({ message: 'Hello, World!' }));
 
 

+ 21 - 59
frameworks/JavaScript/express/mongodb-app.js

@@ -9,13 +9,10 @@ const cluster = require('cluster'),
   mongoose = require('mongoose'),
   mongoose = require('mongoose'),
   conn = mongoose.connect('mongodb://TFB-database/hello_world', {
   conn = mongoose.connect('mongodb://TFB-database/hello_world', {
     useMongoClient: true
     useMongoClient: true
-  }),
-  async = require('async');
+  });
 
 
 // Middleware
 // Middleware
-const bodyParser = require('body-parser'),
-  methodOverride = require('method-override'),
-  errorHandler = require('errorhandler');
+const bodyParser = require('body-parser');
 
 
 const Schema = mongoose.Schema,
 const Schema = mongoose.Schema,
   ObjectId = Schema.ObjectId;
   ObjectId = Schema.ObjectId;
@@ -48,16 +45,7 @@ if (cluster.isMaster) {
   const app = module.exports = express();
   const app = module.exports = express();
 
 
   // Configuration
   // Configuration
-  // https://github.com/expressjs/method-override#custom-logic
   app.use(bodyParser.urlencoded({ extended: true }));
   app.use(bodyParser.urlencoded({ extended: true }));
-  app.use(methodOverride((req, res) => {
-    if (req.body && typeof req.body === 'object' && '_method' in req.body) {
-      // look in urlencoded POST bodies and delete it
-      const method = req.body._method;
-      delete req.body._method;
-      return method;
-    }
-  }));
 
 
   // Set headers for all routes
   // Set headers for all routes
   app.use((req, res, next) => {
   app.use((req, res, next) => {
@@ -68,31 +56,16 @@ if (cluster.isMaster) {
   app.set('view engine', 'pug');
   app.set('view engine', 'pug');
   app.set('views', __dirname + '/views');
   app.set('views', __dirname + '/views');
 
 
-  // Check Node env.
-  const env = process.env.NODE_ENV || 'development';
-  if ('development' == env) {
-    app.use(errorHandler({ dumpExceptions: true, showStack: true }));
-  }
-  if ('production' == env) {
-    app.use(errorHandler());
-  }
-
   // Routes
   // Routes
-  app.get('/mongoose', (req, res) => {
-    let queriesRaw = parseInt(req.query.queries, 10),
-      queries = isNaN(queriesRaw) ? 1 : queriesRaw;
-    const queryFunctions = [];
-
-    queries = Math.min(Math.max(queries, 1), 500);
+  app.get('/mongoose', async (req, res) => {
+    const queries = Math.min(parseInt(req.query.queries) || 1, 500),
+      results = [];
 
 
-    for (let i = 1; i <= queries; i++ ) {
-      queryFunctions.push((callback) =>
-        MWorld.findOne({ id: (Math.floor(Math.random() * 10000) + 1) })
-          .exec(callback));
+    for (let i = 1; i <= queries; i++) {
+      results.push(await MWorld.findOne({id: (Math.floor(Math.random() * 10000) + 1)}));
     }
     }
 
 
-    async.parallel(queryFunctions, (err, results) =>
-      res.send(!req.query.queries ? results[0] : results));
+    res.send(queries > 1 ? results : results[0]);
   });
   });
 
 
   app.get('/mongoose-fortune', (req, res) => {
   app.get('/mongoose-fortune', (req, res) => {
@@ -105,34 +78,23 @@ if (cluster.isMaster) {
     });
     });
   });
   });
 
 
-  app.get('/mongoose-update', (req, res) => {
-    const selectFunctions = [],
-        queries = Math.min(parseInt(req.query.queries) || 1, 500);
+  app.get('/mongoose-update', async (req, res) => {
+    const results = [],
+      queries = Math.min(parseInt(req.query.queries) || 1, 500);
 
 
     for (let i = 1; i <= queries; i++ ) {
     for (let i = 1; i <= queries; i++ ) {
-      selectFunctions.push((callback) =>
-        MWorld.findOne({ id: Math.floor(Math.random() * 10000) + 1 })
-          .exec(callback));
+      const world = await MWorld.findOne({id: (Math.floor(Math.random() * 10000) + 1)});
+      world.randomNumber = ~~(Math.random() * 10000) + 1;
+      await MWorld.update({
+        id: world.id
+      }, {
+        randomNumber: world.randomNumber
+      });
+
+      results.push(world);
     }
     }
 
 
-    async.parallel(selectFunctions, (err, worlds) => {
-      const updateFunctions = [];
-
-      for (let i = 0; i < queries; i++) {
-        ((i) => {
-          updateFunctions.push((callback) => {
-            worlds[i].randomNumber = Math.ceil(Math.random() * 10000);
-            MWorld.update({
-              id: worlds[i].id
-            }, {
-              randomNumber: worlds[i].randomNumber
-            }, callback);
-          });
-        })(i);
-      }
-
-      async.parallel(updateFunctions, (err, updates) => res.send(worlds));
-    });
+    res.send(results);
   });
   });
 
 
   app.listen(8080);
   app.listen(8080);

+ 21 - 61
frameworks/JavaScript/express/mysql-app.js

@@ -6,13 +6,10 @@
 const cluster = require('cluster'),
 const cluster = require('cluster'),
   numCPUs = require('os').cpus().length,
   numCPUs = require('os').cpus().length,
   express = require('express'),
   express = require('express'),
-  Sequelize = require('sequelize'),
-  async = require('async');
+  Sequelize = require('sequelize');
 
 
 // Middleware
 // Middleware
-const bodyParser = require('body-parser'),
-  methodOverride = require('method-override'),
-  errorHandler = require('errorhandler');
+const bodyParser = require('body-parser');
 
 
 const sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
 const sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
   host: 'TFB-database',
   host: 'TFB-database',
@@ -32,6 +29,7 @@ const World = sequelize.define('world', {
   timestamps: false,
   timestamps: false,
   freezeTableName: true
   freezeTableName: true
 });
 });
+
 const Fortune = sequelize.define('Fortune', {
 const Fortune = sequelize.define('Fortune', {
   id: {
   id: {
     type: 'Sequelize.INTEGER',
     type: 'Sequelize.INTEGER',
@@ -59,14 +57,6 @@ if (cluster.isMaster) {
   // Configuration
   // Configuration
   // https://github.com/expressjs/method-override#custom-logic
   // https://github.com/expressjs/method-override#custom-logic
   app.use(bodyParser.urlencoded({ extended: true }));
   app.use(bodyParser.urlencoded({ extended: true }));
-  app.use(methodOverride((req, res) => {
-    if (req.body && typeof req.body === 'object' && '_method' in req.body) {
-      // look in urlencoded POST bodies and delete it
-      const method = req.body._method;
-      delete req.body._method;
-      return method;
-    }
-  }));
 
 
   // Set headers for all routes
   // Set headers for all routes
   app.use((req, res, next) => {
   app.use((req, res, next) => {
@@ -77,40 +67,22 @@ if (cluster.isMaster) {
   app.set('view engine', 'pug');
   app.set('view engine', 'pug');
   app.set('views', __dirname + '/views');
   app.set('views', __dirname + '/views');
 
 
-  // Check Node env.
-  const env = process.env.NODE_ENV || 'development';
-  if ('development' == env) {
-    app.use(errorHandler({ dumpExceptions: true, showStack: true }));
-  }
-  if ('production' == env) {
-    app.use(errorHandler());
-  }
-
   // Routes
   // Routes
-  app.get('/mysql-orm', (req, res) => {
-    let queriesRaw = parseInt(req.query.queries, 10),
-      queries = isNaN(queriesRaw) ? 1 : queriesRaw;
-    const queryFunctions = [];
-
-    queries = Math.min(Math.max(queries, 1), 500);
+  app.get('/mysql-orm', async (req, res) => {
+    const results = [],
+      queries = Math.min(parseInt(req.query.queries) || 1, 500);
 
 
     for (let i = 1; i <= queries; i++ ) {
     for (let i = 1; i <= queries; i++ ) {
-      queryFunctions.push((callback) => {
-        World.findOne({
+       const world = await World.findOne({
             where: {
             where: {
               id: Math.floor(Math.random() * 10000) + 1}
               id: Math.floor(Math.random() * 10000) + 1}
           }
           }
-        ).then((world) => callback(null, world));
-      });
+        );
+       results.push(world);
     }
     }
 
 
-    async.parallel(queryFunctions, (err, results) => {
-      if (req.query.queries == undefined) {
-        results = results[0];
-      }
-      res.setHeader("Content-Type", "application/json");
-      res.send(results);
-    });
+    res.setHeader("Content-Type", "application/json");
+    res.send(results.length > 1 ? results : results[0]);
   });
   });
 
 
   app.get('/mysql-orm-fortune', (req, res) => {
   app.get('/mysql-orm-fortune', (req, res) => {
@@ -123,35 +95,23 @@ if (cluster.isMaster) {
     });
     });
   });
   });
 
 
-  app.get('/mysql-orm-update', (req, res) => {
-    const selectFunctions = [],
+  app.get('/mysql-orm-update', async (req, res) => {
+    const results = [],
       queries = Math.min(parseInt(req.query.queries) || 1, 500);
       queries = Math.min(parseInt(req.query.queries) || 1, 500);
 
 
     for (let i = 1; i <= queries; i++ ) {
     for (let i = 1; i <= queries; i++ ) {
-      selectFunctions.push((callback) => {
-        World.findOne({
+        const world = await World.findOne({
             where: {
             where: {
-              id: Math.floor(Math.random() * 10000) + 1}
+              id: ~~(Math.random() * 10000) + 1
+            }
           }
           }
-        ).then((world) => callback(null, world));
-      });
+        );
+        world.randomNumber = ~~(Math.random() * 10000) + 1;
+        await world.save();
+        results.push(world);
     }
     }
 
 
-    async.parallel(selectFunctions, (err, worlds) => {
-      const updateFunctions = [];
-
-      for (let i = 0; i < queries; i++) {
-        ((i) => {
-          updateFunctions.push((callback) => {
-            worlds[i].randomNumber = Math.ceil(Math.random() * 10000);
-            worlds[i].save().then(callback());
-          });
-        })(i);
-      }
-
-      async.parallel(updateFunctions, (err, updates) => res.send(worlds));
-    });
-
+    res.send(results);
   });
   });
 
 
   app.listen(8080);
   app.listen(8080);

+ 0 - 3
frameworks/JavaScript/express/package.json

@@ -5,9 +5,6 @@
   "dependencies": {
   "dependencies": {
     "express": "4.16.2",
     "express": "4.16.2",
     "body-parser": "1.18.2",
     "body-parser": "1.18.2",
-    "method-override": "2.3.10",
-    "errorhandler": "1.5.0",
-    "async": "2.5.0",
     "pug": "2.0.0-rc.4",
     "pug": "2.0.0-rc.4",
     "sequelize": "3.30.0",
     "sequelize": "3.30.0",
     "mysql": "2.15.0",
     "mysql": "2.15.0",

+ 1 - 1
frameworks/JavaScript/express/setup-mongodb.sh

@@ -3,6 +3,6 @@
 fw_depends nodejs mongodb
 fw_depends nodejs mongodb
 
 
 # install dependencies
 # install dependencies
-npm install
+npm install --no-bin-links
 # run app
 # run app
 NODE_ENV=production node mongodb-app &
 NODE_ENV=production node mongodb-app &

+ 1 - 1
frameworks/JavaScript/express/setup-mysql.sh

@@ -3,6 +3,6 @@
 fw_depends nodejs mysql
 fw_depends nodejs mysql
 
 
 # install dependencies
 # install dependencies
-npm install
+npm install --no-bin-links
 # run app
 # run app
 NODE_ENV=production node mysql-app &
 NODE_ENV=production node mysql-app &

+ 1 - 1
frameworks/JavaScript/express/setup.sh

@@ -3,6 +3,6 @@
 fw_depends nodejs
 fw_depends nodejs
 
 
 # install dependencies
 # install dependencies
-npm install
+npm install --no-bin-links
 # run app
 # run app
 NODE_ENV=production node app &
 NODE_ENV=production node app &

+ 1 - 1
frameworks/JavaScript/hapi/setup.sh

@@ -2,5 +2,5 @@
 
 
 fw_depends mongodb postgresql mysql nodejs
 fw_depends mongodb postgresql mysql nodejs
 
 
-npm install
+npm install --no-bin-links
 node app &
 node app &

+ 1 - 1
frameworks/JavaScript/koa/setup.sh

@@ -2,5 +2,5 @@
 
 
 fw_depends mongodb postgresql mysql nodejs
 fw_depends mongodb postgresql mysql nodejs
 
 
-npm install
+npm install --no-bin-links
 node app &
 node app &

+ 1 - 1
frameworks/JavaScript/nodejs/setup-mitol.sh

@@ -2,7 +2,7 @@
 
 
 fw_depends mongodb mysql postgresql nodejs
 fw_depends mongodb mysql postgresql nodejs
 
 
-npm install
+npm install --no-bin-links
 
 
 # Mitol installation
 # Mitol installation
 mkdir -p node_modules/mns & mkdir -p tmp
 mkdir -p node_modules/mns & mkdir -p tmp

+ 1 - 1
frameworks/JavaScript/nodejs/setup.sh

@@ -2,5 +2,5 @@
 
 
 fw_depends mongodb mysql postgresql nodejs
 fw_depends mongodb mysql postgresql nodejs
 
 
-npm install
+npm install --no-bin-links
 node app.js &
 node app.js &