mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 18:00:23 +00:00
299 lines
8.1 KiB
JavaScript
299 lines
8.1 KiB
JavaScript
'use strict';
|
|
|
|
var mongo = require('./');
|
|
var MongoClient = mongo.MongoClient;
|
|
var ReplicaSet = mongo.ReplSet;
|
|
var Server = mongo.Server;
|
|
var Db = mongo.Db;
|
|
|
|
function getRandom(min, max) {
|
|
return min + Math.floor(Math.random() * (max - min + 1));
|
|
}
|
|
|
|
// var delay = getRandom(1, 10) * 100;
|
|
// var total = getRandom(10, 100);
|
|
// var haInterval = getRandom(1, 3) * 10000;
|
|
// var haInterval = 5000;
|
|
var delay =500;
|
|
var total = 100;
|
|
var haInterval = 10000;
|
|
|
|
console.log('delay:', delay);
|
|
console.log('total:', total);
|
|
console.log('haInterval:', haInterval);
|
|
|
|
var servers = [];
|
|
var server = new Server('localhost', 31000);
|
|
servers.push(server);
|
|
|
|
var replicaSet = new ReplicaSet(servers, {haInterval: haInterval});
|
|
//var replicaSet = new ReplicaSet(servers, {ha: false});
|
|
var database = new Db('replica_set_test', replicaSet, {w: 1});
|
|
|
|
var collectionName = 'test';
|
|
|
|
database.open(function(err, db) {
|
|
if (err) {
|
|
console.log(err.stack);
|
|
} else {
|
|
console.log('Open db - success!');
|
|
var collection = db.collection(collectionName);
|
|
var startTime = new Date().getTime();
|
|
var count = 0;
|
|
var interval = setInterval(function() {
|
|
++count;
|
|
console.log('\n#', count, '; time =', new Date().getTime() - startTime);
|
|
someOperations(db, collection, function() {
|
|
if (count >= total) {
|
|
clearInterval(interval);
|
|
done(db);
|
|
}
|
|
});
|
|
}, delay)
|
|
}
|
|
});
|
|
|
|
function someOperations(db, collection, callback) {
|
|
collection.insert({a:1, b:2}, function(err, result) {
|
|
//console.log('******** insert result', err, result);
|
|
collection.findOne({}, function(err, result) {
|
|
//console.log('******** findOne result', err, result);
|
|
db.dropDatabase(function (err) {
|
|
//console.log('******** dropDatabase', err);
|
|
callback();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function done(db) {
|
|
db.close(function() {
|
|
console.log('db is closed!');
|
|
process.exit();
|
|
});
|
|
}
|
|
|
|
// var MongoClient = require('./').MongoClient,
|
|
// Timestamp = require('./').Timestamp;
|
|
|
|
// MongoClient.connect('mongodb://localhost:31000/test?replicaSet=rs', function(err, db) {
|
|
// var db1 = db.db('local');
|
|
|
|
// db1.collection("oplog.rs")
|
|
// .find({ts:{$gte:Timestamp(0, (Date.now()/1000)|0)}},{ts:1})
|
|
// .addCursorFlag("oplogReplay", true).explain(function(err, r) {
|
|
// console.log("-------------------------------------------------")
|
|
// console.dir(err)
|
|
// console.dir(r)
|
|
// db.close();
|
|
// process.exit(0)
|
|
// });
|
|
// // console.dir(db.serverConfig)
|
|
|
|
// // setInterval(function() {
|
|
// // var s = db.serverConfig.s.replset.s.replState.arbiters[0];
|
|
// // console.log("--------------------------- ARBITERS :: " + s.connections().length)
|
|
// // }, 1000);
|
|
// });
|
|
|
|
|
|
// MongoClient.connect('mongodb://localhost/test?readPreference=secondaryPreferred&maxPoolSize=1', function(err, db) {
|
|
|
|
// var documents = [];
|
|
// for(var i = 0; i < 100000; i++) {
|
|
// documents.push({a:i});
|
|
// }
|
|
|
|
// db.collection('history').insertMany(documents, function(err, r) {
|
|
// db.collection('history')
|
|
// .find({})
|
|
// .project({req_date:1})
|
|
// .sort({req_date:1})
|
|
// .limit(1).next(function(err, doc) {
|
|
// console.log("----------------------------------------------")
|
|
// console.dir(err)
|
|
// console.dir(doc)
|
|
// db.close();
|
|
// });
|
|
// });
|
|
|
|
// // db.authenticate('dog', 'whistle', function(err, r) {
|
|
// // console.log("---------------------------------------------------")
|
|
// // console.dir(err)
|
|
// // console.dir(r)
|
|
|
|
// // db.collection('t').findOne({a:1}, function(err, r) {
|
|
// // if (err) throw err;
|
|
// // var options = { sort: [['_id', 'descending']] };
|
|
// // db.collection('documents').findOne({}, options, function(err, doc){
|
|
// // if (err) throw err;
|
|
// // console.log(doc)
|
|
|
|
// // db.close();
|
|
// // })
|
|
// // });
|
|
|
|
|
|
// // db.collection('t').insert({a:1}, function(err, r) {
|
|
// // console.log("---------------------------------------------------")
|
|
// // console.dir(err)
|
|
// // console.dir(r)
|
|
|
|
// // db.close();
|
|
// // });
|
|
// // });
|
|
// });
|
|
|
|
// var mongo = require('./').MongoClient,
|
|
// ReadPreference = require('./').ReadPreference;
|
|
|
|
// var connectionParams = [
|
|
// 'replicaSet=rs',
|
|
// // 'readPreference=secondaryPreferred',
|
|
// // 'readPreferenceTags=loc:sf'
|
|
// ];
|
|
// var options = {
|
|
// db: {
|
|
// readPreference: 'secondaryPreferred',
|
|
// readPreferenceTags: {loc:'sf'}
|
|
// }
|
|
// };
|
|
|
|
// //new ReadPreference('secondaryPreferred', {loc:'sf'})
|
|
|
|
// var connectionString = 'mongodb://localhost:31000,localhost:31001,localhost:31002/test?' + connectionParams.join('&');
|
|
|
|
// var listener = require('./').instrument(function(err, instrumentations) {
|
|
// callbackTriggered = true;
|
|
// });
|
|
|
|
// mongo.connect(connectionString, options, function (err, db) {
|
|
// console.log("----------------------------------- err")
|
|
// console.dir(db)
|
|
// var started = [];
|
|
// var succeeded = [];
|
|
// var failed = [];
|
|
|
|
// listener.on('started', function(event) {
|
|
// // if(event.commandName == 'insert')
|
|
// started.push(event);
|
|
// });
|
|
|
|
// listener.on('succeeded', function(event) {
|
|
// // if(event.commandName == 'insert')
|
|
// succeeded.push(event);
|
|
// });
|
|
|
|
// setTimeout(function() {
|
|
// // db.collection('test').find({}).toArray(function(err, r) {
|
|
// db.command({count:'t'}, function(err, r) {
|
|
// console.log("----------------------------------------------")
|
|
// console.dir(r)
|
|
// console.dir(started[started.length - 1].connectionId.port)
|
|
|
|
// db.close();
|
|
// process.exit(0);
|
|
// });
|
|
// }, 1000)
|
|
// });
|
|
|
|
// MongoClient.connect('mongodb://localhost:31000/test?rs_name=rs', function (err, db) {
|
|
// var collection = db.collection('test');
|
|
|
|
// setInterval(function() {
|
|
// console.dir(db.serverConfig.s.replset.s.replState.arbiters[0].connections().length)
|
|
// }, 1000);
|
|
|
|
// // db.close();
|
|
// // collection.insertMany([{a:1}, {a:2}], {w:1}, function (err, docs) {
|
|
// // if (err) {
|
|
// // console.log("ERROR");
|
|
// // }
|
|
|
|
// // collection.find().sort({'a': -1}).toArray(function(err, items) {
|
|
// // if (err) {
|
|
// // console.log("ERROR");
|
|
// // }
|
|
// // console.log("Items: ", items);
|
|
// // });
|
|
// // });
|
|
// });
|
|
|
|
// var MongoClient = require('./').MongoClient;
|
|
|
|
// MongoClient.connect('mongodb://localhost:27017/page-testing', function (err, db) {
|
|
// collection = db.collection('test');
|
|
|
|
// collection.insertMany([{a:1}, {a:2}], {w:1}, function (err, docs) {
|
|
// if (err) {
|
|
// console.log("ERROR");
|
|
// }
|
|
|
|
// collection.find().sort({'a': -1}).toArray(function(err, items) {
|
|
// if (err) {
|
|
// console.log("ERROR");
|
|
// }
|
|
// console.log("Items: ", items);
|
|
// });
|
|
// });
|
|
// });
|
|
// var database = null;
|
|
//
|
|
// var MongoClient = require('./').MongoClient;
|
|
//
|
|
// function connect_to_mongo(callback) {
|
|
// if (database != null) {
|
|
// callback(null, database);
|
|
// } else {
|
|
// var connection = "mongodb://127.0.0.1:27017/test_db";
|
|
// MongoClient.connect(connection, {
|
|
// server : {
|
|
// reconnectTries : 5,
|
|
// reconnectInterval: 1000,
|
|
// autoReconnect : true
|
|
// }
|
|
// }, function (err, db) {
|
|
// database = db;
|
|
// callback(err, db);
|
|
// });
|
|
// }
|
|
// }
|
|
//
|
|
// function log(message) {
|
|
// console.log(new Date(), message);
|
|
// }
|
|
//
|
|
// var queryNumber = 0;
|
|
//
|
|
// function make_query(db) {
|
|
// var currentNumber = queryNumber;
|
|
// ++queryNumber;
|
|
// log("query " + currentNumber + ": started");
|
|
//
|
|
// setTimeout(function() {
|
|
// make_query(db);
|
|
// }, 5000);
|
|
//
|
|
// var collection = db.collection('test_collection');
|
|
// collection.findOne({},
|
|
// function (err, result) {
|
|
// if (err != null) {
|
|
// log("query " + currentNumber + ": find one error: " + err.message);
|
|
// return;
|
|
// }
|
|
// log("query " + currentNumber + ": find one result: " + result);
|
|
// }
|
|
// );
|
|
// }
|
|
//
|
|
// connect_to_mongo(
|
|
// function(err, db) {
|
|
// if (err != null) {
|
|
// log(err.message);
|
|
// return;
|
|
// }
|
|
//
|
|
// make_query(db);
|
|
// }
|
|
// );
|