Implement NodeJS based server fully replicating osrm-routed

This commit is contained in:
Siarhei Fedartsou
2022-10-23 13:56:21 +02:00
parent c1d2c15995
commit 53f2da5d5e
37 changed files with 4300 additions and 432 deletions
+4
View File
@@ -4,6 +4,7 @@ Feature: osrm-routed command line options: help
Background:
Given the profile "testbot"
@skip_on_routed_js
Scenario: osrm-routed - Help should be shown when no options are passed
When I run "osrm-routed"
Then stderr should be empty
@@ -24,6 +25,7 @@ Feature: osrm-routed command line options: help
And stdout should contain "--max-matching-size"
And it should exit successfully
@skip_on_routed_js
Scenario: osrm-routed - Help, short
When I run "osrm-routed -h"
Then stderr should be empty
@@ -44,6 +46,8 @@ Feature: osrm-routed command line options: help
And stdout should contain "--max-matching-size"
And it should exit successfully
@skip_on_routed_js
Scenario: osrm-routed - Help, long
When I run "osrm-routed --help"
Then stderr should be empty
+1
View File
@@ -4,6 +4,7 @@ Feature: osrm-routed command line options: invalid options
Background:
Given the profile "testbot"
@skip_on_routed_js
Scenario: osrm-routed - Non-existing option
When I try to run "osrm-routed --fly-me-to-the-moon"
Then stdout should be empty
+5
View File
@@ -33,6 +33,11 @@ module.exports = function () {
callback();
});
this.Then(/^HTTP code should be (\d+)$/, (code, callback) => {
assert(this.response.statusCode, parseInt(code));
callback();
});
this.Then(/^status message should be "(.*?)"$/, (message, callback) => {
try {
this.json = JSON.parse(this.response.body);
+3 -1
View File
@@ -15,6 +15,8 @@ module.exports = function () {
this.setDefaultTimeout(this.TIMEOUT);
this.ROOT_PATH = process.cwd();
this.USE_ROUTED_JS = process.env.OSRM_USE_ROUTED_JS || false;
this.TEST_PATH = path.resolve(this.ROOT_PATH, 'test');
this.CACHE_PATH = path.resolve(this.TEST_PATH, 'cache');
this.LOGS_PATH = path.resolve(this.TEST_PATH, 'logs');
@@ -40,7 +42,7 @@ module.exports = function () {
this.OSRM_PORT = process.env.OSRM_PORT && parseInt(process.env.OSRM_PORT) || 5000;
this.OSRM_IP = process.env.OSRM_IP || '127.0.0.1';
this.OSRM_CONNECTION_RETRIES = process.env.OSRM_CONNECTION_RETRIES && parseInt(process.env.OSRM_CONNECTION_RETRIES) || 10;
this.OSRM_CONNECTION_RETRIES = process.env.OSRM_CONNECTION_RETRIES && parseInt(process.env.OSRM_CONNECTION_RETRIES) || 100;
this.OSRM_CONNECTION_EXP_BACKOFF_COEF = process.env.OSRM_CONNECTION_EXP_BACKOFF_COEF && parseFloat(process.env.OSRM_CONNECTION_EXP_BACKOFF_COEF) || 1.0;
this.HOST = `http://${this.OSRM_IP}:${this.OSRM_PORT}`;
+4
View File
@@ -39,7 +39,11 @@ module.exports = function () {
this.runBin = (bin, options, env, callback) => {
let cmd = path.resolve(util.format('%s/%s%s', this.BIN_PATH, bin, this.EXE));
if (this.USE_ROUTED_JS && bin === 'osrm-routed') {
cmd = 'osrm-routed-js';
}
let opts = options.split(' ').filter((x) => { return x && x.length > 0; });
let log = fs.createWriteStream(this.scenarioLogFile, {'flags': 'a'});
log.write(util.format('*** running %s %s\n', cmd, options));
// we need to set a large maxbuffer here because we have long running processes like osrm-routed
+1
View File
@@ -32,6 +32,7 @@ Feature: Ways of loading data
Then stderr should be empty
And it should exit successfully
@skip_on_routed_js
Scenario: osrm-datastore - Fail if no shared memory blocks are loaded
When I run "osrm-datastore --spring-clean" with input "Y"
And I try to run "osrm-routed --shared-memory=1"
+2 -2
View File
@@ -570,7 +570,7 @@ Feature: Snapping at intersections
| a,f,k | ac,cf,cf,fj,kj,kj | 132.8s | 132.8 |
| k,f | ik,fi,fi | 54.3s | 54.3 |
| f,a | ef,ae,ae | 66.6s | 66.6 |
| k,f,a | kj,fj,fj,ef,ae,ae | 141.399999999s | 141.399999999 |
| k,f,a | kj,fj,fj,ef,ae,ae | 141.399999999s +- 1e-7 | 141.399999999 +- 1e-7 |
When I request a travel time matrix I should get
| | a | f | k |
@@ -626,4 +626,4 @@ Feature: Snapping at intersections
| a,f,k | ad,df,df,fj,kj,kj | 105.6s | 105.6 |
| k,f | ik,fi,fi | 54.3s | 54.3 |
| f,a | ef,ae,ae | 66.6s | 66.6 |
| k,f,a | ik,fi,fi,ef,ae,ae | 120.899999999s | 120.899999999 |
| k,f,a | ik,fi,fi,ef,ae,ae | 120.899999999s +- 1e-7 | 120.899999999 +- 1e-7 |
+1
View File
@@ -39,6 +39,7 @@ Feature: Status messages
| a | c | | 400 | Impossible route between points |
| b | d | | 400 | Impossible route between points |
@skip_on_routed_js
Scenario: Malformed requests
Given the node locations
| node | lat | lon |
+2 -1
View File
@@ -4,7 +4,8 @@ Feature: Basic trip planning
Background:
Given the profile "testbot"
Given a grid size of 10 meters
@skip_on_routed_js
Scenario: Testbot - Trip: Invalid options (like was in test suite for a long time)
Given the node map
"""
+14
View File
@@ -0,0 +1,14 @@
Feature: Tile service
Background:
Given the profile "testbot"
Scenario: Smoke test
Given the origin 52.5212,13.3919
Given the node map
"""
a b
"""
And the ways
| nodes |
| ab |
When I request /tile/v1/testbot/tile(8800,5373,14).mvt
Then HTTP code should be 200