var spawn = require('child_process').spawn; exports.dtraceTest = function(setup, dtargv, test) { return function(t) { setup(); var dtrace = spawn('/usr/sbin/dtrace', dtargv.slice(1)); var traces = []; var exit_code; dtrace.stdout.on('data', function (data) { //console.error("DTRACE STDOUT:", data.toString()); traces.push(data.toString()); }); dtrace.stderr.on('data', function (data) { //console.error("DTRACE STDERR:", data.toString()); }); dtrace.on('exit', function (code) { exit_code = code; }); dtrace.on('close', function () { traces = traces.join('').split('\n') .filter(function (t) { return t.trim().length }); test(t, exit_code, traces); t.end(); }); }; }