|
@@ -15,7 +15,8 @@ var sequelize = new Sequelize(
|
|
|
min: 0,
|
|
|
idle: 5000
|
|
|
},
|
|
|
- logging: true
|
|
|
+ // hide the SQL queries being run
|
|
|
+ logging: false
|
|
|
});
|
|
|
|
|
|
|
|
@@ -26,34 +27,47 @@ var World = sequelize.define('World', {
|
|
|
{
|
|
|
// prevents sequelize from assuming the table is called 'Worlds'
|
|
|
freezeTableName: true,
|
|
|
- timestamps: false,
|
|
|
+ timestamps: false
|
|
|
})
|
|
|
|
|
|
+
|
|
|
+var Fortune = sequelize.define('Fortune', {
|
|
|
+ id: Sequelize.INTEGER,
|
|
|
+ message: Sequelize.STRING
|
|
|
+},
|
|
|
+{
|
|
|
+ // prevents sequelize from assuming the table is called 'Worlds'
|
|
|
+ freezeTableName: true,
|
|
|
+ timestamps: false
|
|
|
+})
|
|
|
+
|
|
|
+
|
|
|
var randomTFBnumber = function() {
|
|
|
return Math.floor(Math.random() * 10000) + 1;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
var worldQuery = function(callback) {
|
|
|
World.findOne({
|
|
|
where: { id: randomTFBnumber() }
|
|
|
}).complete(callback);
|
|
|
}
|
|
|
|
|
|
-var worldUpdate = function(callback) {
|
|
|
+
|
|
|
+var worldUpdate = function(world, callback) {
|
|
|
World.update({
|
|
|
- randomNumber: randomTFBnumber()
|
|
|
+ randomNumber: world.randomNumber
|
|
|
},
|
|
|
{
|
|
|
where: {
|
|
|
- id: randomTFBnumber()
|
|
|
+ id: world.id
|
|
|
}
|
|
|
}
|
|
|
).complete(callback);
|
|
|
}
|
|
|
|
|
|
-module.exports = {
|
|
|
-
|
|
|
|
|
|
+module.exports = {
|
|
|
|
|
|
/**
|
|
|
* Test 2: Single Database Query
|
|
@@ -72,19 +86,44 @@ module.exports = {
|
|
|
*/
|
|
|
multiple: function (req, res) {
|
|
|
var queries = req.param('queries');
|
|
|
- var worlds = [];
|
|
|
+ var toRun = [];
|
|
|
|
|
|
queries = Math.min(Math.max(queries, 1), 500) || 1;
|
|
|
|
|
|
for (var i = 0; i < queries; i++) {
|
|
|
- worlds.push(worldQuery)
|
|
|
+ toRun.push(worldQuery);
|
|
|
}
|
|
|
|
|
|
- async.parallel(worlds, function(err, results) {
|
|
|
- res.json(results);
|
|
|
+ async.parallel(toRun, function(err, results) {
|
|
|
+ if (!err) {
|
|
|
+ res.json(results);
|
|
|
+ } else {
|
|
|
+ res.badRequest('Unexpected failure to fetch multiple records.');
|
|
|
+ }
|
|
|
});
|
|
|
},
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test 4: Fortunes
|
|
|
+ */
|
|
|
+ fortunes: function(req, res) {
|
|
|
+ Fortune.findAll().then(function (fortunes) {
|
|
|
+ fortunes.push({
|
|
|
+ id: 0,
|
|
|
+ message: "Additional fortune added at request time."
|
|
|
+ });
|
|
|
+ fortunes.sort(function (a, b) {
|
|
|
+ return a.message.localeCompare(b.message);
|
|
|
+ });
|
|
|
+ return res.render('fortunes', { 'fortunes': fortunes });
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test 5: Database Updates
|
|
|
+ */
|
|
|
updates: function(req, res) {
|
|
|
var queries = req.param('queries');
|
|
|
var worlds = [];
|
|
@@ -92,11 +131,18 @@ module.exports = {
|
|
|
queries = Math.min(Math.max(queries, 1), 500) || 1;
|
|
|
|
|
|
for (var i = 0; i < queries; i++) {
|
|
|
- worlds.push(worldQuery);
|
|
|
+ worlds.push({
|
|
|
+ id: randomTFBnumber(),
|
|
|
+ randomNumber: randomTFBnumber()
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
- async.parallel(worlds, function(err, results) {
|
|
|
- res.json(results);
|
|
|
+ async.map(worlds, worldUpdate, function(err, results) {
|
|
|
+ if (!err) {
|
|
|
+ res.json(worlds);
|
|
|
+ } else {
|
|
|
+ res.badRequest('Unexpected failure to update records.');
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|