20d1db78dc
This sends a PAUSE and RESUME to pgbouncer (in case there's one) before and after executing tests, to make sure new connections are established in the tests. This may be especially important when role or session settings are modified in the DB (same happens in prod, BTW).
51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
require('../../helper');
|
|
|
|
var assert = require('../../support/assert');
|
|
var BatchTestClient = require('../../support/batch-test-client');
|
|
var JobStatus = require('../../../batch/job_status');
|
|
var redisUtils = require('../../support/redis_utils');
|
|
var metadataBackend = require('cartodb-redis')({ pool: redisUtils.getPool() });
|
|
const db_utils = require('../../support/db_utils');
|
|
|
|
describe('batch query statement_timeout limit', function() {
|
|
|
|
before(function(done) {
|
|
this.batchTestClient = new BatchTestClient();
|
|
this.batchQueryTimeout = global.settings.batch_query_timeout;
|
|
global.settings.batch_query_timeout = 15000;
|
|
metadataBackend.redisCmd(5, 'HMSET', ['limits:batch:vizzuality', 'timeout', 100], done);
|
|
});
|
|
before(db_utils.resetPgBouncerConnections);
|
|
after(function(done) {
|
|
global.settings.batch_query_timeout = this.batchQueryTimeout;
|
|
redisUtils.clean('limits:batch:*', function() {
|
|
this.batchTestClient.drain(done);
|
|
}.bind(this));
|
|
});
|
|
after(db_utils.resetPgBouncerConnections);
|
|
|
|
function jobPayload(query) {
|
|
return {
|
|
query: query
|
|
};
|
|
}
|
|
|
|
it('should cancel with user statement_timeout limit', function (done) {
|
|
var payload = jobPayload('select pg_sleep(10)');
|
|
this.batchTestClient.createJob(payload, function(err, jobResult) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
jobResult.getStatus(function (err, job) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
assert.equal(job.status, JobStatus.FAILED);
|
|
assert.ok(job.failed_reason.match(/statement.*timeout/));
|
|
return done();
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|