Cucumber test suite for the monitoring
This commit is contained in:
parent
8845b7133c
commit
59c600e7de
@ -77,7 +77,7 @@ class OSRMDirectLoader extends OSRMBaseLoader {
|
||||
osrmUp (callback) {
|
||||
if (this.osrmIsRunning()) return callback(new Error("osrm-routed already running!"));
|
||||
|
||||
const command_arguments = util.format('%s -p %d -i %s -a %s', this.inputFile, this.scope.OSRM_PORT, this.scope.OSRM_IP, this.scope.ROUTING_ALGORITHM);
|
||||
const command_arguments = util.format('%s -p %d -i %s -a %s -P %d', this.inputFile, this.scope.OSRM_PORT, this.scope.OSRM_IP, this.scope.ROUTING_ALGORITHM, this.scope.OSRM_MONITORING_PORT);
|
||||
this.child = this.scope.runBin('osrm-routed', command_arguments, this.scope.environment, (err) => {
|
||||
if (err && err.signal !== 'SIGINT') {
|
||||
this.child = null;
|
||||
@ -110,7 +110,7 @@ class OSRMmmapLoader extends OSRMBaseLoader {
|
||||
osrmUp (callback) {
|
||||
if (this.osrmIsRunning()) return callback(new Error("osrm-routed already running!"));
|
||||
|
||||
const command_arguments = util.format('%s -p %d -i %s -a %s --mmap', this.inputFile, this.scope.OSRM_PORT, this.scope.OSRM_IP, this.scope.ROUTING_ALGORITHM);
|
||||
const command_arguments = util.format('%s -p %d -i %s -a %s -P %d --mmap', this.inputFile, this.scope.OSRM_PORT, this.scope.OSRM_IP, this.scope.ROUTING_ALGORITHM, this.scope.OSRM_MONITORING_PORT);
|
||||
this.child = this.scope.runBin('osrm-routed', command_arguments, this.scope.environment, (err) => {
|
||||
if (err && err.signal !== 'SIGINT') {
|
||||
this.child = null;
|
||||
@ -157,7 +157,7 @@ class OSRMDatastoreLoader extends OSRMBaseLoader {
|
||||
osrmUp (callback) {
|
||||
if (this.osrmIsRunning()) return callback();
|
||||
|
||||
const command_arguments = util.format('--dataset-name=%s -s -i %s -p %d -a %s', this.scope.DATASET_NAME, this.scope.OSRM_IP, this.scope.OSRM_PORT, this.scope.ROUTING_ALGORITHM);
|
||||
const command_arguments = util.format('--dataset-name=%s -s -i %s -p %d -a %s -P %d', this.scope.DATASET_NAME, this.scope.OSRM_IP, this.scope.OSRM_PORT, this.scope.ROUTING_ALGORITHM, this.scope.OSRM_MONITORING_PORT);
|
||||
this.child = this.scope.runBin('osrm-routed', command_arguments, this.scope.environment, (err) => {
|
||||
if (err && err.signal !== 'SIGINT') {
|
||||
this.child = null;
|
||||
|
||||
47
features/step_definitions/monitoring.js
Normal file
47
features/step_definitions/monitoring.js
Normal file
@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
|
||||
var util = require('util');
|
||||
|
||||
module.exports = function () {
|
||||
this.When(/^I monitor I should get$/, (table, callback) => {
|
||||
var got = {};
|
||||
|
||||
this.reprocessAndLoadData((e) => {
|
||||
if (e) return callback(e);
|
||||
var testRow = (row, ri, cb) => {
|
||||
var afterRequest = (err, res) => {
|
||||
if (err) return cb(err);
|
||||
|
||||
var rows = res.body.split('\n');
|
||||
var metrics = {};
|
||||
rows.forEach((r) => {
|
||||
if (r.includes('{')) {
|
||||
var k = r.split('{')[0],
|
||||
v = r.split('}')[1].split(' ')[1];
|
||||
metrics[k] = v;
|
||||
} else {
|
||||
var kv = r.split(' ');
|
||||
metrics[kv[0]] = kv[1];
|
||||
}
|
||||
});
|
||||
|
||||
var headers = new Set(table.raw()[0]);
|
||||
|
||||
if (headers.has('key'))
|
||||
{
|
||||
got.key=row['key'];
|
||||
got.value=metrics[row['key']];
|
||||
}
|
||||
|
||||
|
||||
if (!metrics.hasOwnProperty("osrm_routed_instance_info")) {
|
||||
throw new Error("Have no instance information inside the monitoring!");
|
||||
}
|
||||
cb(null, got);
|
||||
};
|
||||
this.requestMonitoring(afterRequest);
|
||||
}
|
||||
this.processRowsAndDiff(table, testRow, callback);
|
||||
});
|
||||
});
|
||||
};
|
||||
@ -39,8 +39,10 @@ module.exports = function () {
|
||||
this.TIMEZONE_NAMES = this.PLATFORM_WINDOWS ? 'win' : 'iana';
|
||||
|
||||
this.OSRM_PORT = process.env.OSRM_PORT && parseInt(process.env.OSRM_PORT) || 5000;
|
||||
this.OSRM_MONITORING_PORT = process.env.OSRM_MONITORING_PORT && parseInt(process.env.OSRM_MONITORING_PORT) || 5001;
|
||||
this.OSRM_IP = process.env.OSRM_IP || '127.0.0.1';
|
||||
this.HOST = `http://${this.OSRM_IP}:${this.OSRM_PORT}`;
|
||||
this.MONITORING_HOST = `http://${this.OSRM_IP}:${this.OSRM_MONITORING_PORT}`;
|
||||
|
||||
this.OSRM_PROFILE = process.env.OSRM_PROFILE;
|
||||
|
||||
|
||||
@ -16,6 +16,24 @@ module.exports = function () {
|
||||
return this.sendRequest(uri, params, callback);
|
||||
};
|
||||
|
||||
this.requestMonitoring = (callback) => {
|
||||
var uri = this.query = this.MONITORING_HOST,
|
||||
limit = Timeout(this.TIMEOUT, { err: { statusCode: 408 } });
|
||||
function runRequest (cb) {
|
||||
request(uri, cb);
|
||||
}
|
||||
|
||||
runRequest(limit((err, res, body) => {
|
||||
if (err) {
|
||||
if (err.statusCode === 408) throw new Error('*** osrm monitoring endpoint did not respond');
|
||||
else if (err.code === 'ECONNREFUSED')
|
||||
throw new Error('*** osrm monitoring endpoint is not running', uri);
|
||||
} else
|
||||
return callback(err, res, body);
|
||||
}));
|
||||
|
||||
};
|
||||
|
||||
this.requestUrl = (path, callback) => {
|
||||
var uri = this.query = [this.HOST, path].join('/'),
|
||||
limit = Timeout(this.TIMEOUT, { err: { statusCode: 408 } });
|
||||
|
||||
21
features/testbot/monitoring.feature
Normal file
21
features/testbot/monitoring.feature
Normal file
@ -0,0 +1,21 @@
|
||||
@routing
|
||||
Feature: Basic Prometheus monitoring
|
||||
|
||||
Background:
|
||||
Given the profile "testbot"
|
||||
Given a grid size of 100 meters
|
||||
|
||||
@smallest
|
||||
Scenario: Monitoring fog test
|
||||
Given the node map
|
||||
"""
|
||||
a b
|
||||
"""
|
||||
|
||||
And the ways
|
||||
| nodes |
|
||||
| ab |
|
||||
|
||||
When I monitor I should get
|
||||
| key | value |
|
||||
| workers_busy | 0 |
|
||||
Loading…
Reference in New Issue
Block a user