"use strict"; var fs = require("fs"); var async = require("async"); var Benchmark = require("benchmark"); var Connection = require("../lib/tedious").Connection; function createConnection(cb) { var config = JSON.parse(fs.readFileSync(require('os').homedir() + '/.tedious/test-connection.json', 'utf8')).config; var connection = new Connection(config); connection.on("connect", function() { cb(connection); }); } function createBenchmark(test) { if (process.argv.indexOf("--profile") != -1) { process.nextTick(function() { runProfile(test); }); } else { process.nextTick(function() { runBenchmark(test); }); } } function runBenchmark(test) { var memStart, memMax = memStart = process.memoryUsage().rss; test.setup(function(err) { if (err) throw err; var bm = new Benchmark(test.name, { defer: true, fn: function(deferred) { test.exec(function(err) { if (err) throw err; memMax = Math.max(memMax, process.memoryUsage().rss); deferred.resolve(); }); } }); bm.on("complete", function(event) { console.log(String(event.target)) console.log("Memory:", (memMax - memStart)/1024/1024, "MiB") test.teardown(function(err) { if (err) throw err; }); }); bm.run({ "async": true }); }); } function runProfile(test) { test.setup(function(err) { if (err) throw err; async.timesSeries(test.profileIterations, function(n, done) { async.setImmediate(function() { console.log("[Iteration " + n + "]"); test.exec(done); }); }, function(err) { if (err) throw err; test.teardown(function(err) { if (err) throw err; }); }); }); } module.exports.createBenchmark = createBenchmark; module.exports.createConnection = createConnection;