Yoji SHIDARA
null+****@clear*****
Wed Nov 14 13:42:07 JST 2012
Yoji SHIDARA 2012-11-14 13:42:07 +0900 (Wed, 14 Nov 2012) New Revision: 42585167dfadb47b80f61de36a94b91b3364a30e https://github.com/groonga/gcs/commit/42585167dfadb47b80f61de36a94b91b3364a30e Log: Abort on Throttling Modified files: tools/run-scenarios tools/scenario-runner.js Modified: tools/run-scenarios (+5 -0) =================================================================== --- tools/run-scenarios 2012-11-14 13:28:07 +0900 (7146f57) +++ tools/run-scenarios 2012-11-14 13:42:07 +0900 (7546723) @@ -125,4 +125,9 @@ runner.on('all:finish', function(event) { runner.on('error:status_unknown', function(event) { runner.client.raiseFatalError('Unknown status code ' + event.statusCode); }); + +runner.on('error:throttling', function() { + runner.client.raiseFatalError('Hit rate limit. Further responses will be unreliable.'); +}); + runner.run(scenarios); Modified: tools/scenario-runner.js (+10 -0) =================================================================== --- tools/scenario-runner.js 2012-11-14 13:28:07 +0900 (7997de4) +++ tools/scenario-runner.js 2012-11-14 13:42:07 +0900 (f644109) @@ -1,5 +1,6 @@ var Client = require(__dirname + '/../lib/client').Client; var EventEmitter = require('events').EventEmitter; +var xml2js = require('xml2js'); var statusCodeTable = { 500: 'Inetnal Server Error', @@ -85,6 +86,15 @@ Runner.prototype._processScenario = function(scenario, callback) { var response = error || result; var statusCode = response.StatusCode; + if (statusCode == 400) { + var parser = new xml2js.Parser({explicitRoot: true}); + parser.parseString(response.Body, function(error, result) { + var errorCode = result.ErrorResponse.Error.Code; + if (errorCode === 'Throttling') { + self.emit('error:throttling'); + } + }); + } if (!statusCodeTable[statusCode]) { self.emit('error:status_unknown', {statusCode: statusCode}); if (callback) -------------- next part -------------- HTML����������������������������...ダウンロード