Fixes: double callbacks and untested headers

This commit is contained in:
Lauren Budorick 2016-03-28 15:39:57 -07:00 committed by Patrick Niklaus
parent 25e40d723a
commit 908e3a2af6
4 changed files with 14 additions and 13 deletions

View File

@ -5,18 +5,20 @@ var classes = require('../support/data_classes');
module.exports = function () { module.exports = function () {
this.Then(/^routability should be$/, (table, callback) => { this.Then(/^routability should be$/, (table, callback) => {
this.buildWaysFromTable(table, () => { this.buildWaysFromTable(table, () => {
var directions = ['forw','backw','bothw']; var directions = ['forw','backw','bothw'],
headers = new Set(Object.keys(table.hashes()[0]));
if (!directions.some(k => !!table.hashes()[0].hasOwnProperty(k))) { if (!directions.some(k => !!headers.has(k))) {
throw new Error('*** routability table must contain either "forw", "backw" or "bothw" column'); throw new Error('*** routability table must contain either "forw", "backw" or "bothw" column');
} }
this.reprocessAndLoadData(() => { this.reprocessAndLoadData(() => {
var testRow = (row, i, cb) => { var testRow = (row, i, cb) => {
var outputRow = row; var outputRow = row;
testRoutabilityRow(i, (err, result) => { testRoutabilityRow(i, (err, result) => {
if (err) return cb(err); if (err) return cb(err);
directions.filter(d => !!table.hashes()[0][d]).forEach((direction) => { directions.filter(d => headers.has(d)).forEach((direction) => {
var want = this.shortcutsHash[row[direction]] || row[direction]; var want = this.shortcutsHash[row[direction]] || row[direction];
switch (true) { switch (true) {
@ -83,7 +85,7 @@ module.exports = function () {
}); });
}; };
d3.queue() d3.queue(1)
.defer(testDirection, 'forw') .defer(testDirection, 'forw')
.defer(testDirection, 'backw') .defer(testDirection, 'backw')
.awaitAll((err, res) => { .awaitAll((err, res) => {

View File

@ -44,8 +44,8 @@ class DB {
uid: n.OSM_UID, uid: n.OSM_UID,
user: n.OSM_USER, user: n.OSM_USER,
timestamp: n.OSM_TIMESTAMP, timestamp: n.OSM_TIMESTAMP,
lon: n.lon, lon: ensureDecimal(n.lon),
lat: n.lat lat: ensureDecimal(n.lat)
}); });
for (var k in n.tags) { for (var k in n.tags) {
@ -109,8 +109,8 @@ class Node {
this.OSM_USER = OSM_USER; this.OSM_USER = OSM_USER;
this.OSM_TIMESTAMP = OSM_TIMESTAMP; this.OSM_TIMESTAMP = OSM_TIMESTAMP;
this.OSM_UID = OSM_UID; this.OSM_UID = OSM_UID;
this.lon = ensureDecimal(lon); this.lon = lon;
this.lat = ensureDecimal(lat); this.lat = lat;
this.tags = tags; this.tags = tags;
} }

View File

@ -151,7 +151,6 @@ module.exports = function () {
}; };
this.writeOSM = (callback) => { this.writeOSM = (callback) => {
fs.exists(this.DATA_FOLDER, (exists) => { fs.exists(this.DATA_FOLDER, (exists) => {
var mkDirFn = exists ? (cb) => { cb(); } : fs.mkdir.bind(fs.mkdir, this.DATA_FOLDER); var mkDirFn = exists ? (cb) => { cb(); } : fs.mkdir.bind(fs.mkdir, this.DATA_FOLDER);
mkDirFn((err) => { mkDirFn((err) => {
@ -329,7 +328,7 @@ module.exports = function () {
this.processRowsAndDiff = (table, fn, callback) => { this.processRowsAndDiff = (table, fn, callback) => {
var q = d3.queue(1); var q = d3.queue(1);
table.hashes().forEach((row, i) => q.defer(fn, row, i)); table.hashes().forEach((row, i) => { q.defer(fn, row, i); });
q.awaitAll((err, actual) => { q.awaitAll((err, actual) => {
if (err) return callback(err); if (err) return callback(err);

View File

@ -20,7 +20,7 @@ var OSRMBaseLoader = class {
}); });
}; };
runLaunch(limit((e) => { if (e) callback(e); callback(); })); runLaunch(limit((e) => { if (e) callback(e); else callback(); }));
} }
shutdown (callback) { shutdown (callback) {
@ -30,7 +30,7 @@ var OSRMBaseLoader = class {
this.osrmDown(cb); this.osrmDown(cb);
}; };
runShutdown(limit((e) => { if (e) callback(e); callback(); })); runShutdown(limit((e) => { if (e) callback(e); else callback(); }));
} }
osrmIsRunning () { osrmIsRunning () {
@ -62,7 +62,7 @@ var OSRMBaseLoader = class {
waitForShutdown (callback) { waitForShutdown (callback) {
var check = () => { var check = () => {
if (!this.osrmIsRunning()) callback(); if (!this.osrmIsRunning()) return callback();
}; };
setTimeout(check, 100); setTimeout(check, 100);
} }