common.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. "use strict";
  2. var fs = require("fs");
  3. var async = require("async");
  4. var Benchmark = require("benchmark");
  5. var Connection = require("../lib/tedious").Connection;
  6. function createConnection(cb) {
  7. var config = JSON.parse(fs.readFileSync(require('os').homedir() + '/.tedious/test-connection.json', 'utf8')).config;
  8. var connection = new Connection(config);
  9. connection.on("connect", function() {
  10. cb(connection);
  11. });
  12. }
  13. function createBenchmark(test) {
  14. if (process.argv.indexOf("--profile") != -1) {
  15. process.nextTick(function() {
  16. runProfile(test);
  17. });
  18. } else {
  19. process.nextTick(function() {
  20. runBenchmark(test);
  21. });
  22. }
  23. }
  24. function runBenchmark(test) {
  25. var memStart, memMax = memStart = process.memoryUsage().rss;
  26. test.setup(function(err) {
  27. if (err) throw err;
  28. var bm = new Benchmark(test.name, {
  29. defer: true,
  30. fn: function(deferred) {
  31. test.exec(function(err) {
  32. if (err) throw err;
  33. memMax = Math.max(memMax, process.memoryUsage().rss);
  34. deferred.resolve();
  35. });
  36. }
  37. });
  38. bm.on("complete", function(event) {
  39. console.log(String(event.target))
  40. console.log("Memory:", (memMax - memStart)/1024/1024, "MiB")
  41. test.teardown(function(err) {
  42. if (err) throw err;
  43. });
  44. });
  45. bm.run({ "async": true });
  46. });
  47. }
  48. function runProfile(test) {
  49. test.setup(function(err) {
  50. if (err) throw err;
  51. async.timesSeries(test.profileIterations, function(n, done) {
  52. async.setImmediate(function() {
  53. console.log("[Iteration " + n + "]");
  54. test.exec(done);
  55. });
  56. }, function(err) {
  57. if (err) throw err;
  58. test.teardown(function(err) {
  59. if (err) throw err;
  60. });
  61. });
  62. });
  63. }
  64. module.exports.createBenchmark = createBenchmark;
  65. module.exports.createConnection = createConnection;