|
@@ -6,66 +6,12 @@
|
|
|
const cluster = require('cluster'),
|
|
|
numCPUs = require('os').cpus().length,
|
|
|
express = require('express'),
|
|
|
- Sequelize = require('sequelize'),
|
|
|
- mongoose = require('mongoose'),
|
|
|
- conn = mongoose.connect('mongodb://TFB-database/hello_world'),
|
|
|
async = require('async');
|
|
|
|
|
|
-// Middleware
|
|
|
const bodyParser = require('body-parser'),
|
|
|
methodOverride = require('method-override'),
|
|
|
errorHandler = require('errorhandler');
|
|
|
|
|
|
-const Schema = mongoose.Schema,
|
|
|
- ObjectId = Schema.ObjectId;
|
|
|
-
|
|
|
-const WorldSchema = new mongoose.Schema({
|
|
|
- id : Number,
|
|
|
- randomNumber: Number
|
|
|
- }, {
|
|
|
- collection: 'world'
|
|
|
- }),
|
|
|
- MWorld = conn.model('world', WorldSchema);
|
|
|
-
|
|
|
-const FortuneSchema = new mongoose.Schema({
|
|
|
- id : Number,
|
|
|
- message : String
|
|
|
- }, {
|
|
|
- collection: 'fortune'
|
|
|
- }),
|
|
|
- MFortune = conn.model('fortune', FortuneSchema);
|
|
|
-
|
|
|
-const sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
|
|
|
- host: 'TFB-database',
|
|
|
- dialect: 'mysql',
|
|
|
- logging: false
|
|
|
-});
|
|
|
-
|
|
|
-const World = sequelize.define('World', {
|
|
|
- id: {
|
|
|
- type: 'Sequelize.INTEGER',
|
|
|
- primaryKey: true
|
|
|
- },
|
|
|
- randomNumber: {
|
|
|
- type: 'Sequelize.INTEGER'
|
|
|
- }
|
|
|
-}, {
|
|
|
- timestamps: false,
|
|
|
- freezeTableName: true
|
|
|
-});
|
|
|
-const Fortune = sequelize.define('Fortune', {
|
|
|
- id: {
|
|
|
- type: 'Sequelize.INTEGER',
|
|
|
- primaryKey: true
|
|
|
- },
|
|
|
- message: {
|
|
|
- type: 'Sequelize.STRING'
|
|
|
- }
|
|
|
-}, {
|
|
|
- timestamps: false,
|
|
|
- freezeTableName: true
|
|
|
-});
|
|
|
-
|
|
|
if (cluster.isMaster) {
|
|
|
// Fork workers.
|
|
|
for (let i = 0; i < numCPUs; i++) {
|
|
@@ -113,129 +59,5 @@ if (cluster.isMaster) {
|
|
|
app.get('/plaintext', (req, res) =>
|
|
|
res.header('Content-Type', 'text/plain').send('Hello, World!'));
|
|
|
|
|
|
- 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);
|
|
|
-
|
|
|
- for (let i = 1; i <= queries; i++ ) {
|
|
|
- queryFunctions.push((callback) =>
|
|
|
- MWorld.findOne({ id: (Math.floor(Math.random() * 10000) + 1) })
|
|
|
- .exec(callback));
|
|
|
- }
|
|
|
-
|
|
|
- async.parallel(queryFunctions, (err, results) =>
|
|
|
- res.send(!req.query.queries ? results[0] : results));
|
|
|
- });
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
- for (let i = 1; i <= queries; i++ ) {
|
|
|
- queryFunctions.push((callback) => {
|
|
|
- World.findOne({
|
|
|
- where: {
|
|
|
- id: Math.floor(Math.random() * 10000) + 1}
|
|
|
- }
|
|
|
- ).then((world) => callback(null, world));
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- async.parallel(queryFunctions, (err, results) => {
|
|
|
- if (req.query.queries == undefined) {
|
|
|
- results = results[0];
|
|
|
- }
|
|
|
- res.setHeader("Content-Type", "application/json");
|
|
|
- res.send(results);
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- app.get('/mongoose-fortune', (req, res) => {
|
|
|
- MFortune.find({}, (err, fortunes) => {
|
|
|
- const newFortune = {id: 0, message: "Additional fortune added at request time."};
|
|
|
- fortunes.push(newFortune);
|
|
|
- fortunes.sort((a, b) => (a.message < b.message) ? -1 : 1);
|
|
|
-
|
|
|
- res.render('fortunes', {fortunes: fortunes});
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- app.get('/mysql-orm-fortune', (req, res) => {
|
|
|
- Fortune.findAll().then((fortunes) => {
|
|
|
- const newFortune = {id: 0, message: "Additional fortune added at request time."};
|
|
|
- fortunes.push(newFortune);
|
|
|
- fortunes.sort((a, b) => (a.message < b.message) ? -1 : 1);
|
|
|
-
|
|
|
- res.render('fortunes', {fortunes: fortunes});
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- app.get('/mongoose-update', (req, res) => {
|
|
|
- const selectFunctions = [],
|
|
|
- queries = Math.min(parseInt(req.query.queries) || 1, 500);
|
|
|
-
|
|
|
- for (let i = 1; i <= queries; i++ ) {
|
|
|
- selectFunctions.push((callback) =>
|
|
|
- MWorld.findOne({ id: Math.floor(Math.random() * 10000) + 1 })
|
|
|
- .exec(callback));
|
|
|
- }
|
|
|
-
|
|
|
- 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));
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- app.get('/mysql-orm-update', (req, res) => {
|
|
|
- const selectFunctions = [],
|
|
|
- queries = Math.min(parseInt(req.query.queries) || 1, 500);
|
|
|
-
|
|
|
- for (let i = 1; i <= queries; i++ ) {
|
|
|
- selectFunctions.push((callback) => {
|
|
|
- World.findOne({
|
|
|
- where: {
|
|
|
- id: Math.floor(Math.random() * 10000) + 1}
|
|
|
- }
|
|
|
- ).then((world) => callback(null, 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));
|
|
|
- });
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
app.listen(8080);
|
|
|
}
|