Skip to content
Snippets Groups Projects
Commit ee7e0466 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

parallel processing error fixed

when there was network problem with accessing search results search db
could enter "broken state" that didn't allow to work with it anymore (at
least some queries always returned exceptions)
parent 9966b070
No related branches found
No related tags found
1 merge request!61parallel processing error fixed
......@@ -96,10 +96,10 @@ AbstractDbOverlay.prototype.searchByQuery = function(originalQuery, perfect, fit
encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect));
promises.push(self.searchBySingleQuery(queries[i], perfect));
}
self.setQueries(encodedQueries);
var res;
return Promise.all(promises).then(function(results) {
self.setQueries(encodedQueries);
res = results;
return self.callListeners('onSearch', {
fitBounds : fitBounds,
......
......@@ -106,9 +106,8 @@ SearchDbOverlay.prototype.searchByCoordinates = function(params) {
ServerConnector.getSessionData().setSearchQuery(query);
self.setQueries([ query ]);
if (self._elementsByQuery[query] !== undefined) {
self.setQueries([ query ]);
return self.callListeners('onSearch', {
fitBounds : false,
identifiedElements : [ self._elementsByQuery[query] ],
......@@ -165,6 +164,7 @@ SearchDbOverlay.prototype.searchByCoordinates = function(params) {
} else {
self._elementsByQuery[query] = [];
}
self.setQueries([ query ]);
return self.callListeners('onSearch', {
fitBounds : params.fitBounds,
identifiedElements : [ self._elementsByQuery[query] ],
......
......@@ -9,6 +9,7 @@ var SearchDbOverlay = require('../../../../main/js/map/overlay/SearchDbOverlay')
var AbstractDbOverlay = require('../../../../main/js/map/overlay/AbstractDbOverlay');
var assert = require('assert');
var Promise = require('bluebird');
describe('SearchDbOverlay', function() {
it("constructor 1", function() {
......@@ -40,30 +41,47 @@ describe('SearchDbOverlay', function() {
});
});
it("searchByQuery with perfectMatch", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
describe("searchByQuery", function() {
it("with perfectMatch", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
return searchDb.searchByQuery("s1", true);
}).then(function(result) {
assert.equal(result.length, 1);
assert.equal(result[0].length, 1);
return searchDb.searchByQuery("s1", true);
}).then(function(result) {
assert.equal(result.length, 1);
assert.equal(result[0].length, 1);
});
});
it("check state when network problems", function() {
var problematicQuery = "sxx1";
var searchDb;
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
searchDb = helper.createSearchDbOverlay(map);
return searchDb.searchByQuery(problematicQuery);
}).then(null, function(result) {
var queries = searchDb.getQueries();
var promises = [];
for (var i = 0; i < queries.length; i++) {
promises.push(searchDb.getElementsByQuery(queries[i]));
}
return Promise.all(promises);
});
});
});
it("searchByEncodedQuery", function() {
return ServerConnector.getProject().then(
function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
var query = searchDb.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES, map.getModel().getId(),
new google.maps.Point(316.05, 253.61), 2);
return searchDb.searchByEncodedQuery(query);
}).then(function(result) {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
var searchDb = helper.createSearchDbOverlay(map);
var point = new google.maps.Point(316.05, 253.61);
var queryType = AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES;
var query = searchDb.encodeQuery(queryType, map.getModel().getId(), point, 2);
return searchDb.searchByEncodedQuery(query);
}).then(function(result) {
assert.ok(result.length > 0);
});
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment