91 lines
3.2 KiB
JavaScript
91 lines
3.2 KiB
JavaScript
var fs = require('fs');
|
|
|
|
module.exports = function () {
|
|
this.clearLogFiles = (callback) => {
|
|
// emptying existing files, rather than deleting and writing new ones makes it
|
|
// easier to use tail -f from the command line
|
|
fs.writeFile(this.OSRM_ROUTED_LOG_FILE, '', err => {
|
|
if (err) throw err;
|
|
fs.writeFile(this.PREPROCESS_LOG_FILE, '', err => {
|
|
if (err) throw err;
|
|
fs.writeFile(this.LOG_FILE, '', err => {
|
|
if (err) throw err;
|
|
callback();
|
|
});
|
|
});
|
|
});
|
|
};
|
|
|
|
var log = this.log = (s, type) => {
|
|
s = s || '';
|
|
type = type || null;
|
|
var file = type === 'preprocess' ? this.PREPROCESS_LOG_FILE : this.LOG_FILE;
|
|
fs.appendFile(file, s + '\n', err => {
|
|
if (err) throw err;
|
|
});
|
|
};
|
|
|
|
this.logScenarioFailInfo = () => {
|
|
if (this.hasLoggedScenarioInfo) return;
|
|
|
|
log('=========================================');
|
|
log('Failed scenario: ' + this.scenarioTitle);
|
|
log('Time: ' + this.scenarioTime);
|
|
log('Fingerprint osm stage: ' + this.osmData.fingerprintOSM);
|
|
log('Fingerprint extract stage: ' + this.fingerprintExtract);
|
|
log('Fingerprint contract stage: ' + this.fingerprintContract);
|
|
log('Fingerprint route stage: ' + this.fingerprintRoute);
|
|
log('Profile: ' + this.profile);
|
|
log();
|
|
log('```xml'); // so output can be posted directly to github comment fields
|
|
log(this.osmData.str.trim());
|
|
log('```');
|
|
log();
|
|
log();
|
|
|
|
this.hasLoggedScenarioInfo = true;
|
|
};
|
|
|
|
this.logFail = (expected, got, attempts) => {
|
|
this.logScenarioFailInfo();
|
|
log('== ');
|
|
log('Expected: ' + JSON.stringify(expected));
|
|
log('Got: ' + JSON.stringify(got));
|
|
log();
|
|
['route','forw','backw'].forEach((direction) => {
|
|
if (attempts[direction]) {
|
|
log('Direction: ' + direction);
|
|
log('Query: ' + attempts[direction].query);
|
|
log('Response: ' + attempts[direction].response.body);
|
|
log();
|
|
}
|
|
});
|
|
};
|
|
|
|
this.logPreprocessInfo = () => {
|
|
if (this.hasLoggedPreprocessInfo) return;
|
|
log('=========================================', 'preprocess');
|
|
log('Preprocessing data for scenario: ' + this.scenarioTitle, 'preprocess');
|
|
log('Time: ' + this.scenarioTime, 'preprocess');
|
|
log('', 'preprocess');
|
|
log('== OSM data:', 'preprocess');
|
|
log('```xml', 'preprocess'); // so output can be posted directly to github comment fields
|
|
log(this.osmData.str, 'preprocess');
|
|
log('```', 'preprocess');
|
|
log('', 'preprocess');
|
|
log('== Profile:', 'preprocess');
|
|
log(this.profile, 'preprocess');
|
|
log('', 'preprocess');
|
|
this.hasLoggedPreprocessInfo = true;
|
|
};
|
|
|
|
this.logPreprocess = (str) => {
|
|
this.logPreprocessInfo();
|
|
log(str, 'preprocess');
|
|
};
|
|
|
|
this.logPreprocessDone = () => {
|
|
log('Done with preprocessing at ' + new Date(), 'preprocess');
|
|
};
|
|
};
|