[Groonga-commit] groonga/gcs [master] Add Processor#loadSync()

Zurück zum Archiv-Index

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 



Groonga-commit メーリングリストの案内
Zurück zum Archiv-Index