mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 06:25:50 +01:00
analytics tests, reduce bcrypt rouds for tests
This commit is contained in:
@@ -6,29 +6,30 @@ var winston = require('winston');
|
||||
|
||||
var db = require('./database');
|
||||
|
||||
(function (Analytics) {
|
||||
var counters = {};
|
||||
var Analytics = module.exports;
|
||||
|
||||
var pageViews = 0;
|
||||
var uniqueIPCount = 0;
|
||||
var uniquevisitors = 0;
|
||||
var counters = {};
|
||||
|
||||
var isCategory = /^(?:\/api)?\/category\/(\d+)/;
|
||||
var pageViews = 0;
|
||||
var uniqueIPCount = 0;
|
||||
var uniquevisitors = 0;
|
||||
|
||||
new cronJob('*/10 * * * *', function () {
|
||||
var isCategory = /^(?:\/api)?\/category\/(\d+)/;
|
||||
|
||||
new cronJob('*/10 * * * *', function () {
|
||||
Analytics.writeData();
|
||||
}, null, true);
|
||||
}, null, true);
|
||||
|
||||
Analytics.increment = function (keys) {
|
||||
Analytics.increment = function (keys) {
|
||||
keys = Array.isArray(keys) ? keys : [keys];
|
||||
|
||||
keys.forEach(function (key) {
|
||||
counters[key] = counters[key] || 0;
|
||||
++counters[key];
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.pageView = function (payload) {
|
||||
Analytics.pageView = function (payload) {
|
||||
++pageViews;
|
||||
|
||||
if (payload.ip) {
|
||||
@@ -56,9 +57,10 @@ var db = require('./database');
|
||||
Analytics.increment(['pageviews:byCid:' + cid]);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.writeData = function () {
|
||||
Analytics.writeData = function (callback) {
|
||||
callback = callback || function () {};
|
||||
var today = new Date();
|
||||
var month = new Date();
|
||||
var dbQueue = [];
|
||||
@@ -96,10 +98,11 @@ var db = require('./database');
|
||||
if (err) {
|
||||
winston.error('[analytics] Encountered error while writing analytics to data store: ' + err.message);
|
||||
}
|
||||
callback(err);
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.getHourlyStatsForSet = function (set, hour, numHours, callback) {
|
||||
Analytics.getHourlyStatsForSet = function (set, hour, numHours, callback) {
|
||||
var terms = {},
|
||||
hoursArr = [];
|
||||
|
||||
@@ -129,9 +132,9 @@ var db = require('./database');
|
||||
|
||||
callback(null, termsArr);
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.getDailyStatsForSet = function (set, day, numDays, callback) {
|
||||
Analytics.getDailyStatsForSet = function (set, day, numDays, callback) {
|
||||
var daysArr = [];
|
||||
|
||||
day = new Date(day);
|
||||
@@ -154,13 +157,13 @@ var db = require('./database');
|
||||
}, function (err) {
|
||||
callback(err, daysArr);
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.getUnwrittenPageviews = function () {
|
||||
Analytics.getUnwrittenPageviews = function () {
|
||||
return pageViews;
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.getMonthlyPageViews = function (callback) {
|
||||
Analytics.getMonthlyPageViews = function (callback) {
|
||||
var thisMonth = new Date();
|
||||
var lastMonth = new Date();
|
||||
thisMonth.setMonth(thisMonth.getMonth(), 1);
|
||||
@@ -176,22 +179,21 @@ var db = require('./database');
|
||||
}
|
||||
callback(null, {thisMonth: scores[0] || 0, lastMonth: scores[1] || 0});
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.getCategoryAnalytics = function (cid, callback) {
|
||||
Analytics.getCategoryAnalytics = function (cid, callback) {
|
||||
async.parallel({
|
||||
'pageviews:hourly': async.apply(Analytics.getHourlyStatsForSet, 'analytics:pageviews:byCid:' + cid, Date.now(), 24),
|
||||
'pageviews:daily': async.apply(Analytics.getDailyStatsForSet, 'analytics:pageviews:byCid:' + cid, Date.now(), 30),
|
||||
'topics:daily': async.apply(Analytics.getDailyStatsForSet, 'analytics:topics:byCid:' + cid, Date.now(), 7),
|
||||
'posts:daily': async.apply(Analytics.getDailyStatsForSet, 'analytics:posts:byCid:' + cid, Date.now(), 7),
|
||||
}, callback);
|
||||
};
|
||||
};
|
||||
|
||||
Analytics.getErrorAnalytics = function (callback) {
|
||||
Analytics.getErrorAnalytics = function (callback) {
|
||||
async.parallel({
|
||||
'not-found': async.apply(Analytics.getDailyStatsForSet, 'analytics:errors:404', Date.now(), 7),
|
||||
'toobusy': async.apply(Analytics.getDailyStatsForSet, 'analytics:errors:503', Date.now(), 7)
|
||||
}, callback);
|
||||
};
|
||||
};
|
||||
|
||||
}(exports));
|
||||
@@ -45,6 +45,8 @@ describe('Controllers', function () {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
it('should load default home route', function (done) {
|
||||
request(nconf.get('url'), function (err, res, body) {
|
||||
assert.ifError(err);
|
||||
@@ -615,6 +617,10 @@ describe('Controllers', function () {
|
||||
|
||||
|
||||
after(function (done) {
|
||||
var analytics = require('../src/analytics');
|
||||
analytics.writeData(function (err) {
|
||||
assert.ifError(err);
|
||||
db.emptydb(done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-persona/templates'));
|
||||
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
|
||||
nconf.set('theme_config', path.join(nconf.get('themes_path'), 'nodebb-theme-persona', 'theme.json'));
|
||||
nconf.set('bcrypt_rounds', 6);
|
||||
|
||||
require('../../build').buildTargets(['js', 'clientCSS', 'acpCSS', 'tpl'], next);
|
||||
},
|
||||
|
||||
@@ -322,6 +322,24 @@ describe('socket.io', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('should get daily analytics', function (done) {
|
||||
io.emit('admin.analytics.get', {graph: 'traffic', units: 'days'}, function (err, data) {
|
||||
assert.ifError(err);
|
||||
assert(data);
|
||||
assert(data.monthlyPageViews);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should get hourly analytics', function (done) {
|
||||
io.emit('admin.analytics.get', {graph: 'traffic', units: 'hours'}, function (err, data) {
|
||||
assert.ifError(err);
|
||||
assert(data);
|
||||
assert(data.monthlyPageViews);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function (done) {
|
||||
db.emptydb(done);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user