Add timeout test for toque.json tiles
This commit is contained in:
parent
227c2b336b
commit
b1114fc606
@ -5,7 +5,7 @@ const TestClient = require('../support/test-client');
|
|||||||
|
|
||||||
const pointSleepSql = `
|
const pointSleepSql = `
|
||||||
SELECT
|
SELECT
|
||||||
pg_sleep(0.5),
|
pg_sleep(0.3),
|
||||||
'SRID=3857;POINT(0 0)'::geometry the_geom_webmercator,
|
'SRID=3857;POINT(0 0)'::geometry the_geom_webmercator,
|
||||||
1 cartodb_id,
|
1 cartodb_id,
|
||||||
2 val
|
2 val
|
||||||
@ -17,7 +17,8 @@ const createMapConfig = ({
|
|||||||
sql = pointSleepSql,
|
sql = pointSleepSql,
|
||||||
cartocss = TestClient.CARTOCSS.POINTS,
|
cartocss = TestClient.CARTOCSS.POINTS,
|
||||||
cartocss_version = '2.3.0',
|
cartocss_version = '2.3.0',
|
||||||
countBy = 'cartodb_id'
|
countBy = 'cartodb_id',
|
||||||
|
attributes
|
||||||
} = {}) => ({
|
} = {}) => ({
|
||||||
version,
|
version,
|
||||||
layers: [{
|
layers: [{
|
||||||
@ -27,7 +28,8 @@ const createMapConfig = ({
|
|||||||
id: 'a0'
|
id: 'a0'
|
||||||
},
|
},
|
||||||
cartocss,
|
cartocss,
|
||||||
cartocss_version
|
cartocss_version,
|
||||||
|
attributes
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
analyses: [
|
analyses: [
|
||||||
@ -54,15 +56,15 @@ const createMapConfig = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('user database timeout limit', function () {
|
describe('user database timeout limit', function () {
|
||||||
|
describe('dataview', function () {
|
||||||
beforeEach(function (done) {
|
beforeEach(function (done) {
|
||||||
TestClient.setUserDatabaseTimeoutLimit('localhost', 300, done);
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 200, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(function (done) {
|
afterEach(function (done) {
|
||||||
TestClient.setUserDatabaseTimeoutLimit('localhost', 0, done);
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 0, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('dataview', function () {
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
const mapconfig = createMapConfig();
|
const mapconfig = createMapConfig();
|
||||||
this.testClient = new TestClient(mapconfig, 1234);
|
this.testClient = new TestClient(mapconfig, 1234);
|
||||||
@ -95,19 +97,140 @@ describe('user database timeout limit', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('torque', function () {
|
describe('torque:', function () {
|
||||||
beforeEach(function () {
|
describe('while validating in layergroup creation', function () {
|
||||||
|
beforeEach(function (done) {
|
||||||
const mapconfig = createMapConfig({
|
const mapconfig = createMapConfig({
|
||||||
type: 'torque',
|
type: 'torque',
|
||||||
cartocss: TestClient.CARTOCSS.TORQUE
|
cartocss: TestClient.CARTOCSS.TORQUE
|
||||||
});
|
});
|
||||||
this.testClient = new TestClient(mapconfig, 1234);
|
this.testClient = new TestClient(mapconfig, 1234);
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 200, done);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 0, (err) => {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
this.testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('fails due to statement timeout', function (done) {
|
||||||
|
const expectedResponse = {
|
||||||
|
status: 400,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.testClient.getLayergroup(expectedResponse, (err, timeoutError) => {
|
||||||
|
assert.deepEqual(timeoutError, {
|
||||||
|
errors: [ 'TorqueRenderer: canceling statement due to statement timeout' ],
|
||||||
|
errors_with_context: [{
|
||||||
|
type: 'layer',
|
||||||
|
message: 'TorqueRenderer: canceling statement due to statement timeout',
|
||||||
|
layer: { id: 'torque-layer0', index: 0, type: 'torque' }
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('fetching "torque.json" tile', function () {
|
||||||
|
before(function (done) {
|
||||||
|
const mapconfig = createMapConfig({
|
||||||
|
type: 'torque',
|
||||||
|
cartocss: TestClient.CARTOCSS.TORQUE
|
||||||
|
});
|
||||||
|
this.testClient = new TestClient(mapconfig, 1234);
|
||||||
|
const expectedResponse = {
|
||||||
|
status: 200,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.testClient.getLayergroup(expectedResponse, (err, res) => {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.layergroupid = res.layergroupid;
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(function (done) {
|
afterEach(function (done) {
|
||||||
this.testClient.drain(done);
|
this.testClient.drain(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('with user\'s timeout of 200 ms', function () {
|
||||||
|
beforeEach(function (done) {
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 200, done);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 0, done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('fails due to statement timeout', function (done) {
|
||||||
|
const params = {
|
||||||
|
layergroupid: this.layergroupid,
|
||||||
|
format: 'torque.json',
|
||||||
|
layers: [ 0 ],
|
||||||
|
response: {
|
||||||
|
status: 400,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.testClient.getTile(0, 0, 0, params, (err, res, attributes) => {
|
||||||
|
assert.ifError(err);
|
||||||
|
|
||||||
|
assert.deepEqual(attributes, {
|
||||||
|
errors: [ 'TorqueRenderer: canceling statement due to statement timeout' ],
|
||||||
|
errors_with_context: [{
|
||||||
|
type: 'unknown',
|
||||||
|
message: 'TorqueRenderer: canceling statement due to statement timeout',
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('attributes:', function () {
|
||||||
|
describe('while validating in map instatiation', function () {
|
||||||
|
beforeEach(function (done) {
|
||||||
|
const mapconfig = createMapConfig({
|
||||||
|
attributes: {
|
||||||
|
id: 'cartodb_id',
|
||||||
|
columns: [ 'val' ]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.testClient = new TestClient(mapconfig, 1234);
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 200, done);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 0, (err) => {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
this.testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('layergroup creation fails due to statement timeout', function (done) {
|
it('layergroup creation fails due to statement timeout', function (done) {
|
||||||
const expectedResponse = {
|
const expectedResponse = {
|
||||||
status: 400,
|
status: 400,
|
||||||
@ -118,11 +241,15 @@ describe('user database timeout limit', function () {
|
|||||||
|
|
||||||
this.testClient.getLayergroup(expectedResponse, (err, timeoutError) => {
|
this.testClient.getLayergroup(expectedResponse, (err, timeoutError) => {
|
||||||
assert.deepEqual(timeoutError, {
|
assert.deepEqual(timeoutError, {
|
||||||
errors: ["TorqueRenderer: canceling statement due to statement timeout"],
|
errors: [ 'canceling statement due to statement timeout' ],
|
||||||
errors_with_context: [{
|
errors_with_context: [{
|
||||||
type: "layer",
|
type: 'layer',
|
||||||
message: "TorqueRenderer: canceling statement due to statement timeout",
|
message: 'canceling statement due to statement timeout',
|
||||||
layer: { id: 'torque-layer0', index: 0, type: "torque" }
|
layer: {
|
||||||
|
id: 'layer0',
|
||||||
|
index: 0,
|
||||||
|
type: 'mapnik'
|
||||||
|
}
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -130,4 +257,77 @@ describe('user database timeout limit', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('fetching by feature id', function () {
|
||||||
|
beforeEach(function (done) {
|
||||||
|
const mapconfig = createMapConfig({
|
||||||
|
attributes: {
|
||||||
|
id: 'cartodb_id',
|
||||||
|
columns: [ 'val' ]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.testClient = new TestClient(mapconfig, 1234);
|
||||||
|
|
||||||
|
const expectedResponse = {
|
||||||
|
status: 200,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.testClient.getLayergroup(expectedResponse, (err, res) => {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.layergroupid = res.layergroupid;
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
this.testClient.drain(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('with user\'s timeout of 200 ms', function () {
|
||||||
|
beforeEach(function (done) {
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 200, done);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
TestClient.setUserDatabaseTimeoutLimit('localhost', 0, done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('fails due to statement timeout', function (done) {
|
||||||
|
const params = {
|
||||||
|
layergroupid: this.layergroupid,
|
||||||
|
featureId: 1,
|
||||||
|
layer: 0,
|
||||||
|
response: {
|
||||||
|
status: 400,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.testClient.getAttributes(params, (err, res, attributes) => {
|
||||||
|
assert.ifError(err);
|
||||||
|
|
||||||
|
assert.deepEqual(attributes, {
|
||||||
|
errors: ['canceling statement due to statement timeout'],
|
||||||
|
errors_with_context: [{
|
||||||
|
type: 'unknown',
|
||||||
|
message: 'canceling statement due to statement timeout'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user