create-server.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /**
  2. * Currently commenting out redis caching as there is no
  3. * working implementation for the benchmark suite.
  4. */
  5. var Hapi = require('hapi');
  6. var Vision = require('vision');
  7. var server = new Hapi.Server();
  8. server.connection({port: 8080});
  9. server.register(Vision, (err) => {
  10. if (err) {
  11. throw err;
  12. }
  13. server.views({
  14. engines: { html: require('handlebars') },
  15. path: __dirname + '/views/'
  16. });
  17. });
  18. var Promise = require('bluebird');
  19. var MongooseHandler;
  20. var SequelizeHandler;
  21. var SequelizePgHandler;
  22. // var RedisHandler;
  23. // Slight start-up improvement loading handlers in parallel
  24. Promise.join(
  25. require('./handlers/mongoose'),
  26. require('./handlers/sequelize'),
  27. require('./handlers/sequelize-postgres'),
  28. // require('./handlers/redis'),
  29. function (mongo, mysql, pg) {
  30. MongooseHandler = mongo;
  31. SequelizeHandler = mysql;
  32. SequelizePgHandler = pg;
  33. // RedisHandler = redis;
  34. })
  35. .catch(function (err) {
  36. console.log('There was a problem setting up the handlers');
  37. process.exit(1);
  38. });
  39. Route('/json', JsonSerialization);
  40. Route('/plaintext', Plaintext);
  41. Route('/mongoose/db', MongooseHandler.SingleQuery);
  42. Route('/mongoose/queries', MongooseHandler.MultipleQueries);
  43. Route('/mongoose/fortunes', MongooseHandler.Fortunes);
  44. Route('/mongoose/updates', MongooseHandler.Updates);
  45. Route('/sequelize/db', SequelizeHandler.SingleQuery);
  46. Route('/sequelize/queries', SequelizeHandler.MultipleQueries);
  47. Route('/sequelize/fortunes', SequelizeHandler.Fortunes);
  48. Route('/sequelize/updates', SequelizeHandler.Updates);
  49. Route('/sequelize-pg/db', SequelizePgHandler.SingleQuery);
  50. Route('/sequelize-pg/queries', SequelizePgHandler.MultipleQueries);
  51. Route('/sequelize-pg/fortunes', SequelizePgHandler.Fortunes);
  52. Route('/sequelize-pg/updates', SequelizePgHandler.Updates);
  53. // Route('/hiredis/db', RedisHandler.SingleQuery);
  54. // Route('/hiredis/queries', RedisHandler.MultipleQueries);
  55. // Route('/hiredis/fortunes', RedisHandler.Fortunes);
  56. // Route('/hiredis/updates', RedisHandler.Updates);
  57. function JsonSerialization(req, reply) {
  58. reply({ message: 'Hello, World!' })
  59. .header('Server', 'hapi');
  60. }
  61. function Plaintext(req, reply) {
  62. reply('Hello, World!')
  63. .header('Server', 'hapi')
  64. .header('Content-Type', 'text/plain');
  65. }
  66. // Makes routing simpler as tfb routes are all GET's
  67. // We also don't use the nifty route features that Hapi has
  68. // to offer such as attaching a validator
  69. function Route(path, handler) {
  70. server.route({ method: 'GET', path: path, handler: handler})
  71. }
  72. server.start(function (err) {
  73. console.log('Hapi worker started and listening on ' + server.info.uri + " "
  74. + new Date().toISOString(" "));
  75. });