[Pkg-javascript-commits] [node-leveldown] 432/492: added batch() leak tester

Andrew Kelley andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:26 UTC 2014


This is an automated email from the git hooks/post-receive script.

andrewrk-guest pushed a commit to annotated tag rocksdb-0.10.1
in repository node-leveldown.

commit 056009fe46d76822105c2e4e81243778bf22ea2f
Author: Rod Vagg <rod at vagg.org>
Date:   Tue Nov 12 17:48:18 2013 +1100

    added batch() leak tester
---
 test/leak-tester-batch.js | 87 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/test/leak-tester-batch.js b/test/leak-tester-batch.js
new file mode 100644
index 0000000..d5e32c1
--- /dev/null
+++ b/test/leak-tester-batch.js
@@ -0,0 +1,87 @@
+const BUFFERS = false
+    , CHAINED = false
+
+var leveldown  = require('..')
+  , crypto     = require('crypto')
+  , assert     = require('assert')
+  , writeCount = 0
+  , rssBase
+  , db
+
+function print () {
+  if (writeCount % 100 === 0) {
+    if (typeof gc != 'undefined')
+      gc()
+
+    console.log(
+        'writeCount ='
+      , writeCount
+      , ', rss ='
+      , Math.round(process.memoryUsage().rss / rssBase * 100) + '%'
+      , Math.round(process.memoryUsage().rss / 1024 / 1024) + 'M'
+      , JSON.stringify([0,1,2,3,4,5,6].map(function (l) {
+          return db.getProperty('leveldb.num-files-at-level' + l)
+        }))
+    )
+  }
+}
+
+var run = CHAINED
+  ? function () {
+      var batch = db.batch()
+        , i     = 0
+        , key
+        , value
+
+      for (i = 0; i < 100; i++) {
+        key = 'long key to test memory usage ' + String(Math.floor(Math.random() * 10000000))
+        if (BUFFERS)
+          key = new Buffer(key)
+        value = crypto.randomBytes(1024)
+        if (!BUFFERS)
+          value = value.toString('hex')
+        batch.put(key, value)
+      }
+
+      batch.write(function (err) {
+        assert(!err)
+        process.nextTick(run)
+      })
+
+      writeCount++
+
+      print()
+    }
+  : function () {
+      var batch = []
+        , i
+        , key
+        , value
+
+      for (i = 0; i < 100; i++) {
+        key = 'long key to test memory usage ' + String(Math.floor(Math.random() * 10000000))
+        if (BUFFERS)
+          key = new Buffer(key)
+        value = crypto.randomBytes(1024)
+        if (!BUFFERS)
+          value = value.toString('hex')
+        batch.push({ type: 'put', key: key, value: value })
+      }
+
+      db.batch(batch, function (err) {
+        assert(!err)
+        process.nextTick(run)
+      })
+
+      writeCount++
+
+      print()
+    }
+
+leveldown.destroy('./leakydb', function () {
+  db = leveldown('./leakydb')
+  db.open({ xcacheSize: 0, xmaxOpenFiles: 10 }, function () {
+    rssBase = process.memoryUsage().rss
+    run()
+  })
+})
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git



More information about the Pkg-javascript-commits mailing list