null+****@clear*****
null+****@clear*****
2012年 8月 9日 (木) 19:04:10 JST
SHIMODA Hiroshi 2012-08-09 19:04:10 +0900 (Thu, 09 Aug 2012) New Revision: 6a73f4453cb6c8d3d06543a4d7d693e43e02b5c4 https://github.com/groonga/gcs/commit/6a73f4453cb6c8d3d06543a4d7d693e43e02b5c4 Log: Add Processor#loadSync() Modified files: bin/gcs-post-sdf lib/batch/processor.js test/batch-processor.test.js Modified: bin/gcs-post-sdf (+10 -12) =================================================================== --- bin/gcs-post-sdf 2012-08-09 18:49:02 +0900 (4579bfc) +++ bin/gcs-post-sdf 2012-08-09 19:04:10 +0900 (85ec0ab) @@ -56,15 +56,13 @@ try { return process.exit(1); } -processor.load(batches) - .next(function(result) { - console.log('Status: %s', result.status); - console.log('Added: %s', result.adds); - console.log('Deleted: %s', result.deletes); - process.exit(0); - }) - .error(function(error) { - console.log('Fatal error!'); - console.log(error.message + '\n' + error.stack); - process.exit(1); - }); +try { + var result = processor.loadSync(batches); + console.log('Status: %s', result.status); + console.log('Added: %s', result.adds); + console.log('Deleted: %s', result.deletes); +} catch(error) { + console.log('Fatal error!'); + console.log(error.message + '\n' + error.stack); + process.exit(1); +} Modified: lib/batch/processor.js (+25 -0) =================================================================== --- lib/batch/processor.js 2012-08-09 18:49:02 +0900 (2f86bbc) +++ lib/batch/processor.js 2012-08-09 19:04:10 +0900 (50c6d53) @@ -102,6 +102,31 @@ Processor.prototype = { return self.formatResult(result); }); }, + loadSync: function(batches) { + var commandSets = this.translator.translate(batches); + var result = { + adds: 0, + deletes: 0, + errors: [], + warnings: [] + }; + commandSets.forEach(function(commandSet) { + try { + this.context.commandSync(commandSet.command, commandSet.options); + switch (commandSet.command) { + case 'load': + result.adds++; + break; + case 'delete': + result.deletes++; + break; + } + } catch(error) { + result.errors.push(error); + } + }, this); + return this.formatResult(result); + }, formatResult: function(result) { var formattedResult = { status: 'success', Modified: test/batch-processor.test.js (+32 -20) =================================================================== --- test/batch-processor.test.js 2012-08-09 18:49:02 +0900 (ac0b673) +++ test/batch-processor.test.js 2012-08-09 19:04:10 +0900 (8bd4e6b) @@ -41,21 +41,25 @@ suite('batch/processor/Processor (instance methods)', function() { assert.equal(processor.databasePath, temporaryDatabase.path); }); + function assertSuccess(result, adds, deletes, expectedDump) { + var expected = { + status: 'success', + adds: adds, + deletes: deletes + }; + assert.deepEqual(result, expected); + var dump = context.commandSync('dump', { + tables: 'companies_00000000000000000000000000' + }); + assert.equal(dump, expectedDump); + } + test('load add-batches', function(done) { var batches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8'); batches = JSON.parse(batches); processor.load(batches) .next(function(result) { - var expected = { - status: 'success', - adds: 10, - deletes: 0 - }; - assert.deepEqual(result, expected); - var dump = context.commandSync('dump', { - tables: 'companies_00000000000000000000000000' - }); - assert.equal(dump, schemeDump + '\n' + loadDump); + assertSuccess(result, 10, 0, schemeDump + '\n' + loadDump); done(); }) .error(function(error) { @@ -63,6 +67,13 @@ suite('batch/processor/Processor (instance methods)', function() { }); }); + test('loadSync add-batches', function() { + var batches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8'); + batches = JSON.parse(batches); + var result = processor.loadSync(batches); + assertSuccess(result, 10, 0, schemeDump + '\n' + loadDump); + }); + test('load delete-batches', function(done) { var batches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8'); batches = JSON.parse(batches); @@ -73,16 +84,7 @@ suite('batch/processor/Processor (instance methods)', function() { return processor.load(batches) }) .next(function(result) { - var expected = { - status: 'success', - adds: 0, - deletes: 1 - }; - assert.deepEqual(result, expected); - var dump = context.commandSync('dump', { - tables: 'companies_00000000000000000000000000' - }); - assert.equal(dump, schemeDump + '\n' + deletedLoadDump); + assertSuccess(result, 0, 1, schemeDump + '\n' + deletedLoadDump); done(); }) .error(function(error) { @@ -90,6 +92,16 @@ suite('batch/processor/Processor (instance methods)', function() { }); }); + test('loadSync delete-batches', function() { + var adddBatches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8'); + adddBatches = JSON.parse(adddBatches); + processor.loadSync(adddBatches); + var deleteBatches = fs.readFileSync(__dirname + '/fixture/companies/delete.sdf.json', 'UTF-8'); + deleteBatches = JSON.parse(deleteBatches); + processor.loadSync(deleteBatches); + assertSuccess(result, 0, 1, schemeDump + '\n' + deletedLoadDump); + }); + test('validation, valid batches', function() { var addBatches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8'); var deleteBatches = fs.readFileSync(__dirname + '/fixture/companies/delete.sdf.json', 'UTF-8'); -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... Download