Remove PostgreSQL from health checks
This way the health checks will only check for Redis and Mapnik initialization. An empty tile without layers or datasources is generated.
This commit is contained in:
@@ -154,9 +154,6 @@ var config = {
|
||||
,health: {
|
||||
enabled: false,
|
||||
username: 'localhost',
|
||||
query: "SELECT 1::int as interactivity_id, '0101000020110F0000EE866678CE876D41466F35C2EC1150C1'::geometry as geom, 'Lorem ipsum dolor sit amet' as label",
|
||||
srid: 3857,
|
||||
geometry_field: 'geom',
|
||||
z: 0,
|
||||
x: 0,
|
||||
y: 0
|
||||
|
||||
@@ -163,9 +163,6 @@ var config = {
|
||||
,health: {
|
||||
enabled: true,
|
||||
username: 'localhost',
|
||||
query: "SELECT 1::int as interactivity_id, '0101000020110F0000EE866678CE876D41466F35C2EC1150C1'::geometry as geom, 'Lorem ipsum dolor sit amet' as label",
|
||||
srid: 3857,
|
||||
geometry_field: 'geom',
|
||||
z: 0,
|
||||
x: 0,
|
||||
y: 0
|
||||
|
||||
@@ -163,9 +163,6 @@ var config = {
|
||||
,health: {
|
||||
enabled: false,
|
||||
username: 'localhost',
|
||||
query: "SELECT 1::int as interactivity_id, '0101000020110F0000EE866678CE876D41466F35C2EC1150C1'::geometry as geom, 'Lorem ipsum dolor sit amet' as label",
|
||||
srid: 3857,
|
||||
geometry_field: 'geom',
|
||||
z: 0,
|
||||
x: 0,
|
||||
y: 0
|
||||
|
||||
@@ -150,9 +150,6 @@ var config = {
|
||||
,health: {
|
||||
enabled: false,
|
||||
username: 'localhost',
|
||||
query: "SELECT 1::int as interactivity_id, '0101000020110F0000EE866678CE876D41466F35C2EC1150C1'::geometry as geom, 'Lorem ipsum dolor sit amet' as label",
|
||||
srid: 3857,
|
||||
geometry_field: 'geom',
|
||||
z: 0,
|
||||
x: 0,
|
||||
y: 0
|
||||
|
||||
@@ -34,67 +34,29 @@ HealthCheck.prototype.check = function(config, callback) {
|
||||
redis: {
|
||||
ok: false
|
||||
},
|
||||
postgresql: {
|
||||
ok: false
|
||||
},
|
||||
mapnik: {
|
||||
ok: false
|
||||
},
|
||||
tile: {
|
||||
ok: false
|
||||
}
|
||||
},
|
||||
mapnikXmlParams = _.extend({
|
||||
dbport: global.environment.postgres.port
|
||||
}, config);
|
||||
};
|
||||
mapnikXmlParams = config;
|
||||
|
||||
Step(
|
||||
function getDBParams() {
|
||||
startTime = Date.now();
|
||||
self.metadataBackend.getAllUserDBParams(config.username, this);
|
||||
},
|
||||
function runQuery(err, dbParams) {
|
||||
function loadMapnik(err, dbParams) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
result.redis = {
|
||||
ok: !err,
|
||||
elapsed: Date.now() - startTime,
|
||||
size: Object.keys(dbParams).length
|
||||
};
|
||||
|
||||
dbParams.dbuser = _.template(global.environment.postgres_auth_user, {user_id: dbParams.dbuser});
|
||||
|
||||
mapnikXmlParams = _.extend(mapnikXmlParams, dbParams);
|
||||
|
||||
startTime = Date.now();
|
||||
self.queryTablesApi.getAffectedTablesInQuery(config.username, {
|
||||
user: dbParams.dbuser,
|
||||
pass: dbParams.dbpass,
|
||||
host: dbParams.dbhost,
|
||||
port: global.environment.postgres.port,
|
||||
dbname: dbParams.dbname,
|
||||
api_key: dbParams.apikey
|
||||
}, config.query, this);
|
||||
},
|
||||
function handleAffectedTablesQuery(err, affectedTables) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
result.postgresql = {
|
||||
ok: !err,
|
||||
elapsed: Date.now() - startTime,
|
||||
size: affectedTables.length
|
||||
};
|
||||
|
||||
this();
|
||||
},
|
||||
function loadMapnik(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
mapnikOptions.xml = xmlTemplate(mapnikXmlParams);
|
||||
|
||||
startTime = Date.now();
|
||||
@@ -126,4 +88,4 @@ HealthCheck.prototype.check = function(config, callback) {
|
||||
callback(err, result);
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,45 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE Map[]>
|
||||
<Map srs="+init=epsg:3857" buffer-size="128" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34">
|
||||
|
||||
<Parameters>
|
||||
<Parameter name="format">png8:m=h</Parameter>
|
||||
<Parameter name="interactivity_layer">layer0</Parameter>
|
||||
<Parameter name="interactivity_fields">interactivity_id</Parameter>
|
||||
</Parameters>
|
||||
|
||||
|
||||
<Style name="layer0-labels" filter-mode="first">
|
||||
<Rule>
|
||||
<TextSymbolizer face-name="DejaVu Sans Book" size="18" label-position-tolerance="10" fill="#000000" halo-fill="#ffffff" halo-radius="1" dy="-10" allow-overlap="true" placement="point" placement-type="simple" ><![CDATA[[label]]]></TextSymbolizer>
|
||||
</Rule>
|
||||
</Style>
|
||||
<Style name="layer0" filter-mode="first">
|
||||
<Rule>
|
||||
<MarkersSymbolizer fill-opacity="0.9" stroke="#ffffff" stroke-width="2" stroke-opacity="1" placement="point" marker-type="ellipse" width="16" fill="#cc3333" allow-overlap="true" />
|
||||
</Rule>
|
||||
</Style>
|
||||
<Layer name="layer0"
|
||||
srs="+init=epsg:{{=it.srid}}">
|
||||
<StyleName>layer0</StyleName>
|
||||
<StyleName>layer0-labels</StyleName>
|
||||
<Datasource>
|
||||
<Parameter name="type"><![CDATA[postgis]]></Parameter>
|
||||
<Parameter name="user"><![CDATA[{{=it.dbuser}}]]></Parameter>
|
||||
<Parameter name="password"><![CDATA[]]></Parameter>
|
||||
<Parameter name="host"><![CDATA[{{=it.dbhost}}]]></Parameter>
|
||||
<Parameter name="port"><![CDATA[{{=it.dbport}}]]></Parameter>
|
||||
<Parameter name="dbname"><![CDATA[{{=it.dbname}}]]></Parameter>
|
||||
<Parameter name="extent"><![CDATA[-20037508.3,-20037508.3,20037508.3,20037508.3]]></Parameter>
|
||||
<Parameter name="row_limit"><![CDATA[0]]></Parameter>
|
||||
<Parameter name="simplify_geometries"><![CDATA[true]]></Parameter>
|
||||
<Parameter name="persist_connection"><![CDATA[false]]></Parameter>
|
||||
<Parameter name="asynchronous_request"><![CDATA[false]]></Parameter>
|
||||
<Parameter name="max_size"><![CDATA[500]]></Parameter>
|
||||
<Parameter name="geometry_field"><![CDATA[{{=it.geometry_field}}]]></Parameter>
|
||||
<Parameter name="srid"><![CDATA[{{=it.srid}}]]></Parameter>
|
||||
<Parameter name="table"><![CDATA[({{=it.query}}) as cdbq]]></Parameter>
|
||||
</Datasource>
|
||||
</Layer>
|
||||
|
||||
<Map
|
||||
background-color="#c33"
|
||||
srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
|
||||
</Map>
|
||||
|
||||
@@ -8,19 +8,12 @@ var server = new CartodbWindshaft(serverOptions);
|
||||
var SQLAPIEmu = require(__dirname + '/../support/SQLAPIEmu.js');
|
||||
|
||||
|
||||
[true, false].forEach(function(cdbQueryTablesFromPostgresEnabledValue) {
|
||||
|
||||
global.environment.enabledFeatures = {cdbQueryTablesFromPostgres: cdbQueryTablesFromPostgresEnabledValue};
|
||||
|
||||
suite('health checks - postgres=' + cdbQueryTablesFromPostgresEnabledValue, function () {
|
||||
|
||||
suite('health checks', function () {
|
||||
beforeEach(function (done) {
|
||||
global.environment.health = {
|
||||
enabled: true,
|
||||
username: 'localhost',
|
||||
query: "SELECT 1::int as interactivity_id, '0101000020110F0000EE866678CE876D41466F35C2EC1150C1'::geometry as geom, 'Lorem ipsum dolor sit amet' as label",
|
||||
srid: 3857,
|
||||
geometry_field: 'geom',
|
||||
z: 0,
|
||||
x: 0,
|
||||
y: 0
|
||||
@@ -28,18 +21,6 @@ var SQLAPIEmu = require(__dirname + '/../support/SQLAPIEmu.js');
|
||||
done();
|
||||
});
|
||||
|
||||
if (!cdbQueryTablesFromPostgresEnabledValue) {
|
||||
var sqlApiServer;
|
||||
|
||||
before(function (done) {
|
||||
sqlApiServer = new SQLAPIEmu(global.environment.sqlapi.port, done);
|
||||
});
|
||||
|
||||
after(function (done) {
|
||||
sqlApiServer.close(done);
|
||||
});
|
||||
}
|
||||
|
||||
var healthCheckRequest = {
|
||||
url: '/health',
|
||||
method: 'GET',
|
||||
@@ -48,27 +29,6 @@ var SQLAPIEmu = require(__dirname + '/../support/SQLAPIEmu.js');
|
||||
}
|
||||
};
|
||||
|
||||
test('returns 200 and ok=true with disabled configuration', function (done) {
|
||||
global.environment.health.enabled = false;
|
||||
|
||||
assert.response(server,
|
||||
healthCheckRequest,
|
||||
{
|
||||
status: 200
|
||||
},
|
||||
function (res, err) {
|
||||
assert.ok(!err);
|
||||
|
||||
var parsed = JSON.parse(res.body);
|
||||
|
||||
assert.equal(parsed.enabled, false);
|
||||
assert.ok(parsed.ok);
|
||||
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test('returns 200 and ok=true with enabled configuration', function (done) {
|
||||
assert.response(server,
|
||||
healthCheckRequest,
|
||||
@@ -76,6 +36,7 @@ var SQLAPIEmu = require(__dirname + '/../support/SQLAPIEmu.js');
|
||||
status: 200
|
||||
},
|
||||
function (res, err) {
|
||||
console.log(res.body);
|
||||
assert.ok(!err);
|
||||
|
||||
var parsed = JSON.parse(res.body);
|
||||
@@ -111,31 +72,5 @@ var SQLAPIEmu = require(__dirname + '/../support/SQLAPIEmu.js');
|
||||
);
|
||||
});
|
||||
|
||||
test.skip('fails for wrong query', function (done) {
|
||||
global.environment.health.query = 'select wadus query';
|
||||
|
||||
assert.response(server,
|
||||
healthCheckRequest,
|
||||
{
|
||||
status: 503
|
||||
},
|
||||
function (res, err) {
|
||||
assert.ok(!err);
|
||||
|
||||
var parsed = JSON.parse(res.body);
|
||||
|
||||
assert.equal(parsed.enabled, true);
|
||||
assert.equal(parsed.ok, false);
|
||||
|
||||
assert.ok(parsed.result.redis.ok);
|
||||
|
||||
assert.equal(parsed.result.postgresql.ok, false);
|
||||
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user