[Groonga-commit] groonga/gcs [master] Split Runner to ScenariosRunner and ScenarioRunner

アーカイブの一覧に戻る

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����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る