Advertisement
Guest User

Untitled

a guest
Sep 25th, 2012
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*jslint node: true, plusplus: true*/
  2. 'use strict';
  3. var mysql = require('mysql'),
  4.     db = mysql.createConnection({
  5.         host: 'localhost',
  6.         user: 'root',
  7.         password: 'root'
  8.     }),
  9.     RAND_MAX = 999999;
  10.  
  11. db.connect();
  12.  
  13. function get_random_id() {
  14.     return Math.floor(Math.random() * RAND_MAX) + 1;
  15. }
  16.  
  17. function do_logout(cb) {
  18.     function done(err, rows, fields) {
  19.         if (err) {
  20.             throw err;
  21.         }
  22.         cb();
  23.         do_logout(cb);
  24.     }
  25.     var time = Math.floor(+new Date() / 1000) - 30,
  26.         id = get_random_id();
  27.     db.query('UPDATE active_users SET active_time = FROM_UNIXTIME(' + time + ') WHERE user_id = ' + id, done);
  28. }
  29.  
  30. function do_usercount(cb) {
  31.     function done(err, rows, fields) {
  32.         if (err) {
  33.             throw err;
  34.         }
  35.         cb(rows[0].cnt);
  36.     }
  37.     var time = Math.floor(+new Date() / 1000) - 30;
  38.     db.query('SELECT COUNT(*) AS cnt FROM active_users WHERE UNIX_TIMESTAMP(active_time) >= ' + time, done);
  39. }
  40.  
  41. function do_login(cb) {
  42.     function done(err, rows, fields) {
  43.         if (err) {
  44.             throw err;
  45.         }
  46.         cb();
  47.         do_login(cb);
  48.     }
  49.     var time = Math.floor(+new Date() / 1000),
  50.         id = get_random_id();
  51.     db.query('UPDATE active_users SET active_time = FROM_UNIXTIME(' + time + ') WHERE user_id = ' + id, done);
  52. }
  53.  
  54. function run_benchmark() {
  55.     var start = new Date(), i = 400,
  56.         logout, login, done = 0, last = 0,
  57.         active_user_count = 0;
  58.     function cb() {
  59.         done++;
  60.     }
  61.     setInterval(function () {
  62.         console.log('Throughput: ' + (done - last) + ' r/s, currently active: ' + active_user_count);
  63.         last = done;
  64.     }, 1000);
  65.  
  66.     do_logout(cb);
  67.     do_login(cb);
  68.  
  69.     function update_user_count(cb) {
  70.         do_usercount(function (num) {
  71.             active_user_count = num;
  72.         });
  73.         if (cb) {
  74.             cb();
  75.         }
  76.     }
  77.     update_user_count(function () {
  78.         setInterval(update_user_count, 5000);
  79.     });
  80. }
  81.  
  82. db.query('USE ragezone_test', run_benchmark);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement