mirror of
https://github.com/linuxserver/core.git
synced 2026-02-20 05:07:19 +08:00
88 lines
2.2 KiB
JavaScript
88 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
var Sequelize = require("sequelize");
|
|
var async = require("async");
|
|
var sequelize;
|
|
var User;
|
|
|
|
function wrapSeq(fun, next) {
|
|
return fun.success(function () {
|
|
next.apply(null, [null].concat(Array.prototype.slice.apply(arguments)));
|
|
}).error(next);
|
|
}
|
|
|
|
function initDB(callback) {
|
|
sequelize = new Sequelize("c9-collab", "c9", "c9-collab-secret", {
|
|
// the sql dialect of the database
|
|
dialect: "sqlite",
|
|
storage: __dirname + "/c9-collab-test.db",
|
|
logging: false,
|
|
// use pooling in order to reduce db connection overload and to increase speed
|
|
// currently only for mysql and postgresql (since v1.5.0)
|
|
pool: { maxConnections: 5, maxIdleTime: 30 }
|
|
});
|
|
|
|
User = sequelize.define("User", {
|
|
uid: { type: Sequelize.STRING, primaryKey: true },
|
|
fullname: { type: Sequelize.STRING },
|
|
email: { type: Sequelize.STRING }
|
|
}, {
|
|
timestamps: true, paranoid: true
|
|
});
|
|
|
|
wrapSeq(User.sync(), callback);
|
|
}
|
|
|
|
var i;
|
|
|
|
// http://www.sqlite.org/pragma.html#pragma_synchronous
|
|
function stressTestFSync(sync, callback) {
|
|
var st;
|
|
async.series([
|
|
initDB,
|
|
function (next) {
|
|
wrapSeq(User.sync({ force: true }), next);
|
|
},
|
|
function (next) {
|
|
st = new Date();
|
|
i = 1;
|
|
wrapSeq(sequelize.query("PRAGMA synchronous = " + sync + ";"), next);
|
|
},
|
|
createUsers,
|
|
function (next) {
|
|
console.log("SQLITE3 STRESS SYNC:", sync, " - TIME:", new Date() - st, "ms");
|
|
next();
|
|
}
|
|
],
|
|
callback);
|
|
}
|
|
|
|
|
|
async.series([
|
|
stressTestFSync.bind(null, 0),
|
|
stressTestFSync.bind(null, 1),
|
|
stressTestFSync.bind(null, 2)
|
|
],
|
|
function (err) {
|
|
if (err)
|
|
console.log(err);
|
|
});
|
|
|
|
var TEST_SIZE = 1000;
|
|
|
|
function createUsers(done) {
|
|
wrapSeq(User.create({
|
|
uid: i + 1,
|
|
fullname: "name_" + i,
|
|
email: "email_" + i + "@something.com"
|
|
}), function (err) {
|
|
if (err) {
|
|
console.log(err);
|
|
process.exit(1);
|
|
}
|
|
if (i++ <= TEST_SIZE)
|
|
createUsers(done);
|
|
else
|
|
done();
|
|
});
|
|
} |