Last active
January 2, 2016 13:09
-
-
Save neumino/8307741 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var rdbConn = {}; | |
var r = require('rethinkdb'); | |
if (r.protobuf_implementation !== 'cpp') console.log("WARNING: Wrong protobuf backend"); | |
var async = require('async'); | |
// Parameters | |
var numInserts = 5000; | |
// Global var | |
var numFields; | |
var numConn; | |
function genDoc() { | |
var doc = {} | |
doc.id = guid(); | |
for(var i=0; i<numFields; i++) { | |
doc["field"+i] = guid(); | |
} | |
return doc; | |
} | |
function s4() { | |
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); | |
}; | |
function guid() { | |
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + | |
s4() + '-' + s4() + s4() + s4(); | |
} | |
function dropCreateTable(args, cb) { | |
var conn = args.conn; | |
r.tableDrop("benchmark").run(conn, function(err, result) { | |
if (err) { | |
if (err.msg !== "Table `benchmark` does not exist.") throw err; | |
} | |
r.tableCreate("benchmark").run(conn, function(err, result) { | |
if (err) throw err; | |
cb(); | |
}) | |
}) | |
} | |
function connectRdb(item, cb) { | |
r.connect(rdbConn, function(err, conn) { | |
if (err) throw err; | |
cb(err, conn); | |
}) | |
} | |
function rethinkdbTest(item, lastCb) { | |
numFields = item.numFields; | |
numConn = item.numConn; | |
var connAr = [] | |
for(var k=0; k<numConn; k++) { | |
connAr.push(k); | |
} | |
async.map(connAr, connectRdb, function(err, connections) { | |
if (err) throw err; | |
dropCreateTable({db: "rdb", conn: connections[0]}, function() { | |
var done = 0; | |
var docs = [] | |
for(var i=0; i<numInserts;i++) { | |
docs.push(genDoc()); | |
} | |
for(var i=0; i<numInserts;i++) { | |
r.db('test').table('benchmark').insert(docs[i]).run( connections[i%numConn], function(err, result) { | |
if (err) throw err; | |
done++; | |
if (done === numInserts) { | |
for(var k=0; k<numConn; k++) { | |
connections[k].close(); | |
} | |
rethinkdbTest({ | |
numFields: 100, | |
numConn: 100 | |
}, function() { | |
}); | |
} | |
}) | |
} | |
}) | |
}) | |
} | |
// Single test | |
rethinkdbTest({ | |
numFields: 100, | |
numConn: 100 | |
}, function() { | |
}); |
Author
neumino
commented
Jan 7, 2014
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment