create-server.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Forked workers will run this code when found to not be
  2. // the master of the cluster.
  3. var http = require('http');
  4. var url = require('url');
  5. var h = require('./helper');
  6. // Handlers, one for each db config
  7. var MongodbRawHandler = require('./handlers/mongodb-raw');
  8. var MySQLRawHandler = require('./handlers/mysql-raw');
  9. // Mongoose is a popular Node/MongoDB driver
  10. var MongooseHandler = require('./handlers/mongoose');
  11. // Sequelize is a popular Node/SQL driver
  12. var SequelizeHandler = require('./handlers/sequelize');
  13. // Node's redis package uses the C bindings of the hiredis library
  14. var HiredisHandler = require('./handlers/redis');
  15. module.exports = http.createServer(function (req, res) {
  16. var values = url.parse(req.url, true);
  17. var route = values.pathname;
  18. // Basic routes, no db required
  19. if (route === '/json') {
  20. return h.responses.jsonSerialization(req, res);
  21. } else if (route === '/plaintext') {
  22. return h.responses.plaintext(req, res);
  23. // No queries parameter required
  24. } else if (route === '/mongoose/db') {
  25. return MongooseHandler.SingleQuery(req, res);
  26. } else if (route === '/mongoose/fortunes') {
  27. return MongooseHandler.Fortunes(req, res);
  28. } else if (route === '/mongodb/db') {
  29. return MongodbRawHandler.SingleQuery(req, res);
  30. } else if (route === '/mongodb/fortunes') {
  31. return MongodbRawHandler.Fortunes(req, res);
  32. } else if (route === '/sequelize/db') {
  33. return SequelizeHandler.SingleQuery(req, res);
  34. } else if (route === '/sequelize/fortunes') {
  35. return SequelizeHandler.Fortunes(req, res);
  36. } else if (route === '/mysql/db') {
  37. return MySQLRawHandler.SingleQuery(req, res);
  38. } else if (route === '/mysql/fortunes') {
  39. return MySQLRawHandler.Fortunes(req, res);
  40. } else if (route === '/hiredis/db') {
  41. return HiredisHandler.SingleQuery(req, res);
  42. } else if (route === '/hiredis/fortunes') {
  43. return HiredisHandler.Fortunes(req, res);
  44. }
  45. else {
  46. var queries = isNaN(values.query.queries) ? 1 : parseInt(values.query.queries, 10);
  47. queries = Math.min(Math.max(queries, 1), 500);
  48. if (route === '/mongoose/queries') {
  49. return MongooseHandler.MultipleQueries(queries, req, res);
  50. } else if (route === '/mongoose/updates') {
  51. return MongooseHandler.Updates(queries, req, res);
  52. } else if (route === '/mongodb/queries') {
  53. return MongodbRawHandler.MultipleQueries(queries, req, res);
  54. } else if (route === '/mongodb/updates') {
  55. return MongodbRawHandler.Updates(queries, req, res);
  56. } else if (route === '/sequelize/queries') {
  57. return SequelizeHandler.MultipleQueries(queries, req, res);
  58. } else if (route === '/sequelize/updates') {
  59. return SequelizeHandler.Updates(queries, req, res);
  60. } else if (route === '/mysql/queries') {
  61. return MySQLRawHandler.MultipleQueries(queries, req, res);
  62. } else if (route === '/mysql/updates') {
  63. return MySQLRawHandler.Updates(queries, req, res);
  64. } else if (route === '/hiredis/queries') {
  65. return HiredisHandler.MultipleQueries(queries, req, res);
  66. } else if (route === '/hiredis/updates') {
  67. return HiredisHandler.Updates(queries, req, res);
  68. } else {
  69. return h.responses.routeNotImplemented(req, res);
  70. }
  71. }
  72. }).listen(8080, function() {
  73. console.log("NodeJS worker listening on port 8080");
  74. });