0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-27 22:49:56 -05:00

Speed up SchedulingDefault_spec.js unit test

refs #9178

- the test used lots of bigger and unneeded timeouts
- reduce them to ensure unit tests run faster
- they now run with 845ms on my mac
This commit is contained in:
kirrg001 2017-11-28 21:38:30 +01:00
parent b9a44bacf6
commit c6e64fc7a8

View file

@ -63,14 +63,15 @@ describe('Scheduling Default Adapter', function () {
}); });
it('run', function (done) { it('run', function (done) {
// 1000 jobs, but only the number x are under 1 minute
var timestamps = _.map(_.range(1000), function (i) { var timestamps = _.map(_.range(1000), function (i) {
return moment().add(i, 'seconds').valueOf(); return moment().add(i, 'seconds').valueOf();
}), }),
allJobs = {}; allJobs = {};
sandbox.stub(scope.adapter, '_execute').callsFake(function (nextJobs) { sandbox.stub(scope.adapter, '_execute').callsFake(function (nextJobs) {
Object.keys(nextJobs).length.should.eql(182); Object.keys(nextJobs).length.should.eql(121);
Object.keys(scope.adapter.allJobs).length.should.eql(1000 - 182); Object.keys(scope.adapter.allJobs).length.should.eql(1000 - 121);
done(); done();
}); });
@ -79,8 +80,8 @@ describe('Scheduling Default Adapter', function () {
}); });
scope.adapter.allJobs = allJobs; scope.adapter.allJobs = allJobs;
scope.adapter.runTimeoutInMs = 1000; scope.adapter.runTimeoutInMs = 100;
scope.adapter.offsetInMinutes = 2; scope.adapter.offsetInMinutes = 1;
scope.adapter.run(); scope.adapter.run();
}); });
@ -88,21 +89,21 @@ describe('Scheduling Default Adapter', function () {
sandbox.spy(scope.adapter, '_execute'); sandbox.spy(scope.adapter, '_execute');
scope.adapter.allJobs = {}; scope.adapter.allJobs = {};
scope.adapter.runTimeoutInMs = 500; scope.adapter.runTimeoutInMs = 10;
scope.adapter.offsetInMinutes = 2; scope.adapter.offsetInMinutes = 1;
scope.adapter.run(); scope.adapter.run();
setTimeout(function () { setTimeout(function () {
scope.adapter._execute.callCount.should.be.greaterThan(1); scope.adapter._execute.callCount.should.be.greaterThan(1);
done(); done();
}, 2000); }, 30);
}); });
it('execute', function (done) { it('execute', function (done) {
var pinged = 0, var pinged = 0,
jobs = 3, jobs = 3,
timestamps = _.map(_.range(jobs), function (i) { timestamps = _.map(_.range(jobs), function (i) {
return moment().add(1, 'seconds').add(i * 100, 'milliseconds').valueOf(); return moment().add(i * 50, 'milliseconds').valueOf();
}), }),
nextJobs = {}; nextJobs = {};
@ -119,7 +120,7 @@ describe('Scheduling Default Adapter', function () {
(function retry() { (function retry() {
if (pinged !== jobs) { if (pinged !== jobs) {
return setTimeout(retry, 100); return setTimeout(retry, 50);
} }
done(); done();
@ -137,27 +138,27 @@ describe('Scheduling Default Adapter', function () {
}); });
// add jobs to delete // add jobs to delete
jobsToDelete[moment().add(500, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}]; jobsToDelete[moment().add(10, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}];
jobsToDelete[moment().add(550, 'milliseconds').valueOf()] = [{url: '/2', time: 1235}]; jobsToDelete[moment().add(20, 'milliseconds').valueOf()] = [{url: '/2', time: 1235}];
jobsToDelete[moment().add(600, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}]; jobsToDelete[moment().add(30, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}];
jobsToDelete[moment().add(650, 'milliseconds').valueOf()] = [{url: '/3', time: 1236}]; jobsToDelete[moment().add(40, 'milliseconds').valueOf()] = [{url: '/3', time: 1236}];
_.map(jobsToDelete, function (value) { _.map(jobsToDelete, function (value) {
scope.adapter._deleteJob(value[0]); scope.adapter._deleteJob(value[0]);
}); });
// add jobs, which will be pinged // add jobs, which will be pinged
jobsToExecute[moment().add(700, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}]; jobsToExecute[moment().add(50, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}];
jobsToExecute[moment().add(750, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}]; jobsToExecute[moment().add(60, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}];
jobsToExecute[moment().add(800, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}]; jobsToExecute[moment().add(70, 'milliseconds').valueOf()] = [{url: '/1', time: 1234}];
jobsToExecute[moment().add(850, 'milliseconds').valueOf()] = [{url: '/4', time: 1237}]; jobsToExecute[moment().add(80, 'milliseconds').valueOf()] = [{url: '/4', time: 1237}];
// simulate execute is called // simulate execute is called
scope.adapter._execute(jobsToExecute); scope.adapter._execute(jobsToExecute);
(function retry() { (function retry() {
if (pinged !== 2) { if (pinged !== 2) {
return setTimeout(retry, 100); return setTimeout(retry, 50);
} }
Object.keys(scope.adapter.deletedJobs).length.should.eql(2); Object.keys(scope.adapter.deletedJobs).length.should.eql(2);
@ -310,7 +311,7 @@ describe('Scheduling Default Adapter', function () {
returned200 = false, returned200 = false,
reqBody; reqBody;
scope.adapter.retryTimeoutInMs = 200; scope.adapter.retryTimeoutInMs = 10;
app.use(bodyParser.json()); app.use(bodyParser.json());
app.put('/ping', function (req, res) { app.put('/ping', function (req, res) {
@ -341,7 +342,7 @@ describe('Scheduling Default Adapter', function () {
return server.close(done); return server.close(done);
} }
setTimeout(retry, 100); setTimeout(retry, 50);
})(); })();
}); });
}); });