YUKI Hiroshi
null+****@clear*****
Wed Nov 14 17:09:48 JST 2012
YUKI Hiroshi 2012-11-14 17:09:48 +0900 (Wed, 14 Nov 2012) New Revision: 0d68e563dd37a4f4a69621f2d5479f19205d2e46 https://github.com/groonga/gcs/commit/0d68e563dd37a4f4a69621f2d5479f19205d2e46 Log: Split Runner to ScenariosRunner and ScenarioRunner Modified files: test/api-configuration.test.js tools/run-scenarios tools/scenario-runner.js Modified: test/api-configuration.test.js (+4 -3) =================================================================== --- test/api-configuration.test.js 2012-11-14 16:45:06 +0900 (898981a) +++ test/api-configuration.test.js 2012-11-14 17:09:48 +0900 (80ce417) @@ -5,7 +5,7 @@ var fs = require('fs'); var path = require('path'); var Domain = require('../lib/database').Domain; -var Runner = require('../tools/scenario-runner').Runner; +var ScenarioRunner = require('../tools/scenario-runner').ScenarioRunner; suite('Configuration API', function() { var temporaryDatabase; @@ -1370,13 +1370,13 @@ suite('Configuration API', function() { return Object.create(request); }) }; - var runner = new Runner({ + var runner = new ScenarioRunner({ accessKeyId: 'dummy-access-key-id', secretAccessKey: 'dummy-access-key', host: 'localhost', port: utils.testPort }); - runner.run(scenario, function(error, result) { + runner.on('end', function(error, result) { try { if (error) throw new Error('unexpected error: ' + error); @@ -1388,6 +1388,7 @@ suite('Configuration API', function() { done(error); } }); + runner.run(scenario); }); }); }); Modified: tools/run-scenarios (+18 -16) =================================================================== --- tools/run-scenarios 2012-11-14 16:45:06 +0900 (2741274) +++ tools/run-scenarios 2012-11-14 17:09:48 +0900 (fc87081) @@ -7,7 +7,7 @@ */ var CLI = require(__dirname + '/../lib/command-line').CommandLineInterface; -var Runner = require(__dirname + '/scenario-runner').Runner; +var ScenariosRunner = require(__dirname + '/scenario-runner').ScenariosRunner; var fs = require('fs'); var path = require('path'); var mkdirp = require('mkdirp'); @@ -95,26 +95,28 @@ Object.keys(CLI.prototype).concat(Object.keys(commandLine)).forEach(function(key if (type != 'function' && type != 'object') options[key] = commandLine[key]; }); -var runner = new Runner(options); +var runner = new ScenariosRunner(options); -runner.on('scenario:start', function(event) { - console.log(''); - console.log('Scenario file: ' + event.scenario.path); - mkdirp.sync(event.scenario.resultsDir); -}); +runner.on('scenario', function(event) { + event.runner.on('start', function(event) { + console.log(''); + console.log('Scenario file: ' + event.scenario.path); + mkdirp.sync(event.scenario.resultsDir); + }); -runner.on('scenario:end', function(event) { - console.log(' Done. (elapsed time: ' + event.elapsedTime + 'msec)'); -}); + event.runner.on('end', function(event) { + console.log(' Done. (elapsed time: ' + event.elapsedTime + 'msec)'); + }); -runner.on('request:end', function(event) { - var filename = Runner.toSafeName(event.request.name) + '.txt'; - var resultPath = path.resolve(event.scenario.resultsDir, filename); - fs.writeFile(resultPath, event.request.result); - console.log(' Wrote ' + resultPath); + event.runner.on('request:end', function(event) { + var filename = toSafeName(event.request.name) + '.txt'; + var resultPath = path.resolve(event.scenario.resultsDir, filename); + fs.writeFile(resultPath, event.request.result); + console.log(' Wrote ' + resultPath); + }); }); -runner.on('all:end', function(event) { +runner.on('end', function(event) { console.log(''); console.log('All scenarios are finished. ' + '(total elapsed time: ' + event.elapsedTime + 'msec)'); Modified: tools/scenario-runner.js (+40 -29) =================================================================== --- tools/scenario-runner.js 2012-11-14 16:45:06 +0900 (b9c9a07) +++ tools/scenario-runner.js 2012-11-14 17:09:48 +0900 (12dd928) @@ -10,61 +10,70 @@ var statusCodeTable = { 200: 'OK' }; -function Runner(options) { - this.client = new Client(options); +function ScenariosRunner(options) { this.options = options; - if (options.documentEndpoint) - this.client.docEndpoint = options.documentEndpoint; } -Runner.prototype = new EventEmitter(); +ScenariosRunner.prototype = new EventEmitter(); -Runner.prototype.run = function(scenario) { - if (!Array.isArray(scenario)) - this._processScenario(scenario); - else - this._processScenarios({ scenarios: scenario }); +ScenariosRunner.prototype.run = function(scenario) { + this._process({ scenarios: scenario }); }; -Runner.prototype._processScenarios = function(params) { +ScenariosRunner.prototype._process = function(params) { if (!params.start) params.start = Date.now(); var scenario = params.scenarios.shift(); var self = this; - this._processScenario( - scenario, - function(error, event) { - if (params.scenarios.length) { - self._processScenarios(params); - } else { - var elapsedTime = Date.now() - params.start; - self.emit('all:end', { elapsedTime: elapsedTime }); - } + + var runner = new ScenarioRunner(this.options); + runner.on('start', function(event) { + self.emit('scenario', { runner: runner, + scenario: event.scenario }); + }); + runner.on('end', function(event) { + if (params.scenarios.length) { + self._process(params); + } else { + var elapsedTime = Date.now() - params.start; + self.emit('end', { elapsedTime: elapsedTime }); } - ); + }); + runner.run(scenario); }; -Runner.prototype._processScenario = function(scenario, callback) { +function ScenarioRunner(options) { + this.client = new Client(options); + this.options = options; + if (options.documentEndpoint) + this.client.docEndpoint = options.documentEndpoint; +} + +ScenarioRunner.prototype = new EventEmitter(); + +ScenarioRunner.prototype.run = function(scenario) { + this._process(scenario); +}; + +ScenarioRunner.prototype._process = function(scenario, callback) { if (!scenario.toBeProcessedRequests) { scenario.toBeProcessedRequests = scenario.requests.slice(0); scenario.start = Date.now(); scenario.processed = {}; - this.emit('scenario:start', { scenario: scenario }); + this.emit('start', { scenario: scenario }); } var request = scenario.toBeProcessedRequests.shift(); var self = this; function processNext() { if (scenario.toBeProcessedRequests.length) { - self._processScenario(scenario, callback); + self._process(scenario, callback); } else { var elapsedTime = Date.now() - scenario.start; var event = { elapsedTime: elapsedTime, scenario: scenario }; - self.emit('scenario:end', event); - if (callback) - callback(null, event); + self.emit('end', event); } } @@ -113,10 +122,12 @@ Runner.prototype._processScenario = function(scenario, callback) { }); }; -Runner.toSafeName = function(name) { +function toSafeName(name) { return name .replace(/[^a-zA-Z0-9]+/g, '-') .replace(/-$/, ''); }; +ScenariosRunner.toSafeName = ScenarioRunner.toSafeName = toSafeName; -exports.Runner = Runner; +exports.ScenariosRunner = ScenariosRunner; +exports.ScenarioRunner = ScenarioRunner; -------------- next part -------------- HTML����������������������������...ダウンロード