├── views ├── index.jade ├── error.jade ├── layout.jade └── awsdemo.html ├── public └── stylesheets │ └── style.css ├── README.md ├── routes ├── awsdemo.js ├── index.js ├── users.js └── awsquery.js ├── package.json ├── app.js ├── bin └── www └── npm-debug.log /views/index.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= title 5 | p Welcome to #{title} 6 | -------------------------------------------------------------------------------- /views/error.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= message 5 | h2= error.status 6 | pre #{error.stack} 7 | -------------------------------------------------------------------------------- /public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /views/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= title 5 | link(rel='stylesheet', href='/stylesheets/style.css') 6 | body 7 | block content 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cloudscalingdemo 2 | AWS cloud server scaling demo in nodejs / express 3 | 4 | Installation: 5 | 1) Download git repository 6 | 2) cd into root folder 7 | 3) run 'npm install' 8 | 4) run 'npm start' 9 | 5) point browser to 'localhost:3000' 10 | -------------------------------------------------------------------------------- /routes/awsdemo.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET home page. */ 5 | router.get('/', function(req, res, next) { 6 | res.sendFile(__base + '/views/awsdemo.html'); 7 | }); 8 | 9 | module.exports = router; -------------------------------------------------------------------------------- /routes/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET home page. */ 5 | router.get('/', function(req, res, next) { 6 | res.render('index', { title: 'Express' }); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /routes/users.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET users listing. */ 5 | router.get('/', function(req, res, next) { 6 | res.send('respond with a resource'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudscalingdemo", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "dependencies": { 9 | "body-parser": "~1.16.0", 10 | "cookie-parser": "~1.4.3", 11 | "debug": "~2.6.0", 12 | "express": "~4.14.1", 13 | "jade": "~1.11.0", 14 | "morgan": "~1.7.0", 15 | "serve-favicon": "~2.3.2" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /routes/awsquery.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET exp layer status */ 5 | router.get('/', function (req, res) { 6 | res.json({"cluster_name":"_hzInstance_1_dev","cluster_size":2,"free_memory":151323272,"cluster_members":"[Member [172.31.37.63]:5701 - 1d7d270d-dc15-4164-8fb7-03237c2c8fee, Member [172.31.17.138]:5701 - 4e0d5288-b649-4275-a537-f1bd31cfd4db this]","cluster_state":"ACTIVE","map_size":17026}); 7 | }); 8 | 9 | module.exports = router; -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | /*jslint node: true */ 2 | /*jslint nomen: true */ 3 | 'use strict'; 4 | 5 | //Set Global Base Directory 6 | global.__base = __dirname + '/'; 7 | 8 | var express = require('express'); 9 | var path = require('path'); 10 | var favicon = require('serve-favicon'); 11 | var logger = require('morgan'); 12 | var cookieParser = require('cookie-parser'); 13 | var bodyParser = require('body-parser'); 14 | 15 | var index = require('./routes/index'); 16 | var users = require('./routes/users'); 17 | var awsdemo = require('./routes/awsdemo'); 18 | var awsquery = require('./routes/awsquery'); 19 | 20 | var app = express(); 21 | 22 | // view engine setup 23 | app.set('views', path.join(__dirname, 'views')); 24 | app.set('view engine', 'jade'); 25 | 26 | // uncomment after placing your favicon in /public 27 | //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 28 | app.use(logger('dev')); 29 | app.use(bodyParser.json()); 30 | app.use(bodyParser.urlencoded({ extended: false })); 31 | app.use(cookieParser()); 32 | app.use(express.static(path.join(__dirname, 'public'))); 33 | 34 | app.use('/', index); 35 | app.use('/users', users); 36 | app.use('/xl/cloud/awsdemo', awsdemo); 37 | app.use('/xl/cloud/awsquery', awsquery); 38 | 39 | // catch 404 and forward to error handler 40 | app.use(function(req, res, next) { 41 | var err = new Error('Not Found'); 42 | err.status = 404; 43 | next(err); 44 | }); 45 | 46 | // error handler 47 | app.use(function(err, req, res, next) { 48 | // set locals, only providing error in development 49 | res.locals.message = err.message; 50 | res.locals.error = req.app.get('env') === 'development' ? err : {}; 51 | 52 | // render the error page 53 | res.status(err.status || 500); 54 | res.render('error'); 55 | }); 56 | 57 | module.exports = app; 58 | -------------------------------------------------------------------------------- /bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | 7 | var app = require('../app'); 8 | var debug = require('debug')('cloudscalingdemo:server'); 9 | var http = require('http'); 10 | 11 | /** 12 | * Get port from environment and store in Express. 13 | */ 14 | 15 | var port = normalizePort(process.env.PORT || '3000'); 16 | app.set('port', port); 17 | 18 | /** 19 | * Create HTTP server. 20 | */ 21 | 22 | var server = http.createServer(app); 23 | 24 | /** 25 | * Listen on provided port, on all network interfaces. 26 | */ 27 | 28 | server.listen(port); 29 | server.on('error', onError); 30 | server.on('listening', onListening); 31 | 32 | /** 33 | * Normalize a port into a number, string, or false. 34 | */ 35 | 36 | function normalizePort(val) { 37 | var port = parseInt(val, 10); 38 | 39 | if (isNaN(port)) { 40 | // named pipe 41 | return val; 42 | } 43 | 44 | if (port >= 0) { 45 | // port number 46 | return port; 47 | } 48 | 49 | return false; 50 | } 51 | 52 | /** 53 | * Event listener for HTTP server "error" event. 54 | */ 55 | 56 | function onError(error) { 57 | if (error.syscall !== 'listen') { 58 | throw error; 59 | } 60 | 61 | var bind = typeof port === 'string' 62 | ? 'Pipe ' + port 63 | : 'Port ' + port; 64 | 65 | // handle specific listen errors with friendly messages 66 | switch (error.code) { 67 | case 'EACCES': 68 | console.error(bind + ' requires elevated privileges'); 69 | process.exit(1); 70 | break; 71 | case 'EADDRINUSE': 72 | console.error(bind + ' is already in use'); 73 | process.exit(1); 74 | break; 75 | default: 76 | throw error; 77 | } 78 | } 79 | 80 | /** 81 | * Event listener for HTTP server "listening" event. 82 | */ 83 | 84 | function onListening() { 85 | var addr = server.address(); 86 | var bind = typeof addr === 'string' 87 | ? 'pipe ' + addr 88 | : 'port ' + addr.port; 89 | debug('Listening on ' + bind); 90 | } 91 | -------------------------------------------------------------------------------- /npm-debug.log: -------------------------------------------------------------------------------- 1 | 0 info it worked if it ends with ok 2 | 1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe', 3 | 1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', 4 | 1 verbose cli 'start' ] 5 | 2 info using npm@3.10.10 6 | 3 info using node@v6.9.5 7 | 4 verbose run-script [ 'prestart', 'start', 'poststart' ] 8 | 5 info lifecycle cloudscalingdemo@0.0.0~prestart: cloudscalingdemo@0.0.0 9 | 6 silly lifecycle cloudscalingdemo@0.0.0~prestart: no script for prestart, continuing 10 | 7 info lifecycle cloudscalingdemo@0.0.0~start: cloudscalingdemo@0.0.0 11 | 8 verbose lifecycle cloudscalingdemo@0.0.0~start: unsafe-perm in lifecycle true 12 | 9 verbose lifecycle cloudscalingdemo@0.0.0~start: PATH: C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;c:\Projects\cloudscalingdemo\node_modules\.bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Dell\DW WLAN Card;;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;c:\Program Files\WIDCOMM\Bluetooth Software\;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files\nodejs\;C:\Users\Jonathan\AppData\Local\Microsoft\WindowsApps;C:\Users\Jonathan\AppData\Roaming\npm;C:\Users\Jonathan\AppData\Local\atom\bin 13 | 10 verbose lifecycle cloudscalingdemo@0.0.0~start: CWD: c:\Projects\cloudscalingdemo 14 | 11 silly lifecycle cloudscalingdemo@0.0.0~start: Args: [ '/d /s /c', 'node ./bin/www' ] 15 | 12 silly lifecycle cloudscalingdemo@0.0.0~start: Returned: code: 3221225786 signal: null 16 | 13 info lifecycle cloudscalingdemo@0.0.0~start: Failed to exec start script 17 | 14 verbose stack Error: cloudscalingdemo@0.0.0 start: `node ./bin/www` 18 | 14 verbose stack Exit status 3221225786 19 | 14 verbose stack at EventEmitter. (C:\Program Files\nodejs\node_modules\npm\lib\utils\lifecycle.js:255:16) 20 | 14 verbose stack at emitTwo (events.js:106:13) 21 | 14 verbose stack at EventEmitter.emit (events.js:191:7) 22 | 14 verbose stack at ChildProcess. (C:\Program Files\nodejs\node_modules\npm\lib\utils\spawn.js:40:14) 23 | 14 verbose stack at emitTwo (events.js:106:13) 24 | 14 verbose stack at ChildProcess.emit (events.js:191:7) 25 | 14 verbose stack at maybeClose (internal/child_process.js:877:16) 26 | 14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5) 27 | 15 verbose pkgid cloudscalingdemo@0.0.0 28 | 16 verbose cwd c:\Projects\cloudscalingdemo 29 | 17 error Windows_NT 10.0.14393 30 | 18 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start" 31 | 19 error node v6.9.5 32 | 20 error npm v3.10.10 33 | 21 error code ELIFECYCLE 34 | 22 error cloudscalingdemo@0.0.0 start: `node ./bin/www` 35 | 22 error Exit status 3221225786 36 | 23 error Failed at the cloudscalingdemo@0.0.0 start script 'node ./bin/www'. 37 | 23 error Make sure you have the latest version of node.js and npm installed. 38 | 23 error If you do, this is most likely a problem with the cloudscalingdemo package, 39 | 23 error not with npm itself. 40 | 23 error Tell the author that this fails on your system: 41 | 23 error node ./bin/www 42 | 23 error You can get information on how to open an issue for this project with: 43 | 23 error npm bugs cloudscalingdemo 44 | 23 error Or if that isn't available, you can get their info via: 45 | 23 error npm owner ls cloudscalingdemo 46 | 23 error There is likely additional logging output above. 47 | 24 verbose exit [ 1, true ] 48 | -------------------------------------------------------------------------------- /views/awsdemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | AWS Scaling Demo 7 | 167 | 168 | 302 | 303 | 304 | 305 |
306 | 307 | 312 |
313 |
314 |
315 |
316 | 317 | 318 | 319 |

320 | 321 | 322 |
323 |
324 |
325 |
326 | 327 |
Time till next entry:
328 |
Map entries:
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 | 343 | 344 | --------------------------------------------------------------------------------