merge with master (#30953)

This commit is contained in:
Nathan Reese 2019-02-13 10:12:55 -07:00 committed by GitHub
parent 5ec50b6331
commit 636914eb58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 68 additions and 54 deletions

View file

@ -15,6 +15,7 @@ jest.mock('ui/vis/editors/default/schemas', () => {
jest.mock('../../../kibana_services', () => {});
jest.mock('ui/vis/agg_configs', () => {});
jest.mock('ui/timefilter/timefilter', () => {});
jest.mock('../vector_layer', () => {});
const leftJoin = new LeftInnerJoin({

View file

@ -6,12 +6,11 @@
import _ from 'lodash';
import { AbstractSource } from './source';
import { AbstractESSource } from './es_source';
import { Schemas } from 'ui/vis/editors/default/schemas';
import {
fetchSearchSourceAndRecordWithInspector,
inspectorAdapters,
indexPatternService,
SearchSource,
} from '../../../kibana_services';
import { AggConfigs } from 'ui/vis/agg_configs';
@ -58,7 +57,7 @@ export function extractPropertiesMap(resp, propertyNames, countPropertyName) {
return propertiesMap;
}
export class ESJoinSource extends AbstractSource {
export class ESJoinSource extends AbstractESSource {
static type = 'ES_JOIN_SOURCE';
@ -139,36 +138,11 @@ export class ESJoinSource extends AbstractSource {
};
}
async _getIndexPattern() {
let indexPattern;
try {
indexPattern = await indexPatternService.get(this._descriptor.indexPatternId);
} catch (error) {
throw new Error(`Unable to find Index pattern ${this._descriptor.indexPatternId}`);
}
return indexPattern;
}
async isTimeAware() {
const indexPattern = await this._getIndexPattern();
const timeField = indexPattern.timeFieldName;
return !!timeField;
}
isFilterByMapBounds() {
// TODO
return false;
}
isRefreshTimerAware() {
return true;
}
isQueryAware() {
return true;
}
getJoinDescription(leftSourceName, leftFieldName) {
const metrics = this._getValidMetrics().map(metric => {
return metric.type !== 'count' ? `${metric.type} ${metric.field}` : 'count';

View file

@ -251,8 +251,7 @@ export class VectorLayer extends AbstractLayer {
propertiesMap: propertiesMap,
};
} catch(e) {
console.error(e);
onLoadError(sourceDataId, requestToken, e.medium);
onLoadError(sourceDataId, requestToken, `Join error: ${e.message}`);
return {
shouldJoin: false,
join: join
@ -322,9 +321,10 @@ export class VectorLayer extends AbstractLayer {
if (!sourceResult.refreshed && !joinState.shouldJoin) {
return false;
}
if (!sourceResult.featureCollection) {
if (!sourceResult.featureCollection || !joinState.propertiesMap) {
return false;
}
joinState.join.joinPropertiesToFeatureCollection(
sourceResult.featureCollection,
joinState.propertiesMap);
@ -332,7 +332,6 @@ export class VectorLayer extends AbstractLayer {
}
async _performJoins(sourceResult, joinStates) {
const hasJoined = joinStates.map(joinState => {
return this._joinToFeatureCollection(sourceResult, joinState);
});

View file

@ -9,7 +9,6 @@ import expect from 'expect.js';
export default function ({ getPageObjects, getService }) {
const PageObjects = getPageObjects(['maps']);
const queryBar = getService('queryBar');
const inspector = getService('inspector');
const DOC_COUNT_PROP_NAME = 'doc_count';
@ -105,14 +104,12 @@ export default function ({ getPageObjects, getService }) {
describe('query bar', () => {
before(async () => {
await queryBar.setQuery('machine.os.raw : "win 8"');
await queryBar.submitQuery();
await PageObjects.maps.setAndSubmitQuery('machine.os.raw : "win 8"');
await PageObjects.maps.setView(0, 0, 0);
});
after(async () => {
await queryBar.setQuery('');
await queryBar.submitQuery();
await PageObjects.maps.setAndSubmitQuery('');
});
it('should apply query to geohashgrid aggregation request', async () => {
@ -180,14 +177,12 @@ export default function ({ getPageObjects, getService }) {
describe('query bar', () => {
before(async () => {
await PageObjects.maps.setAndSubmitQuery('machine.os.raw : "win 8"');
await PageObjects.maps.setView(0, 0, 0);
await queryBar.setQuery('machine.os.raw : "win 8"');
await queryBar.submitQuery();
});
after(async () => {
await queryBar.setQuery('');
await queryBar.submitQuery();
await PageObjects.maps.setAndSubmitQuery('');
});
it('should apply query to geohashgrid aggregation request', async () => {

View file

@ -8,7 +8,6 @@ import expect from 'expect.js';
export default function ({ getPageObjects, getService }) {
const PageObjects = getPageObjects(['maps']);
const queryBar = getService('queryBar');
const inspector = getService('inspector');
describe('elasticsearch document layer', () => {
@ -42,13 +41,11 @@ export default function ({ getPageObjects, getService }) {
describe('query bar', () => {
before(async () => {
await queryBar.setQuery('machine.os.raw : "win 8"');
await queryBar.submitQuery();
await PageObjects.maps.setAndSubmitQuery('machine.os.raw : "win 8"');
});
after(async () => {
await queryBar.setQuery('');
await queryBar.submitQuery();
await PageObjects.maps.setAndSubmitQuery('');
});
it('should apply query to search request', async () => {
@ -61,7 +58,7 @@ export default function ({ getPageObjects, getService }) {
it('should re-fetch query when "refresh" is clicked', async () => {
const beforeQueryRefreshTimestamp = await getRequestTimestamp();
await queryBar.submitQuery();
await PageObjects.maps.refreshQuery();
const afterQueryRefreshTimestamp = await getRequestTimestamp();
expect(beforeQueryRefreshTimestamp).not.to.equal(afterQueryRefreshTimestamp);
});

View file

@ -49,6 +49,22 @@ export default function ({ getPageObjects }) {
});
});
describe('ESJoinSource with missing index pattern id', async () => {
const MISSING_INDEX_ID = 'idThatDoesNotExitForESJoinSource';
const LAYER_NAME = 'geo_shapes*';
it('should diplay error message in layer panel', async () => {
const errorMsg = await PageObjects.maps.getLayerErrorText(LAYER_NAME);
expect(errorMsg).to.equal(`Join error: Unable to find Index pattern for id: ${MISSING_INDEX_ID}`);
});
it('should allow deletion of layer', async () => {
await PageObjects.maps.removeLayer(LAYER_NAME);
const exists = await PageObjects.maps.doesLayerExist(LAYER_NAME);
expect(exists).to.be(false);
});
});
describe('EMSFileSource with missing EMS id', async () => {
const MISSING_EMS_ID = 'idThatDoesNotExitForEMSFileSource';
const LAYER_NAME = 'EMS_vector_shapes';
@ -96,5 +112,20 @@ export default function ({ getPageObjects }) {
expect(exists).to.be(false);
});
});
describe('KibanaTilemapSource with missing map.tilemap.url configuration', async () => {
const LAYER_NAME = 'Custom_TMS';
it('should diplay error message in layer panel', async () => {
const errorMsg = await PageObjects.maps.getLayerErrorText(LAYER_NAME);
expect(errorMsg).to.equal(`Unable to find map.tilemap.url configuration in the kibana.yml`);
});
it('should allow deletion of layer', async () => {
await PageObjects.maps.removeLayer(LAYER_NAME);
const exists = await PageObjects.maps.doesLayerExist(LAYER_NAME);
expect(exists).to.be(false);
});
});
});
}

View file

@ -21,7 +21,7 @@ export default function ({ getPageObjects, getService, updateBaselines }) {
past.setMonth(past.getMonth() - 6);
const future = new Date();
future.setMonth(future.getMonth() + 6);
await PageObjects.timePicker.setAbsoluteRange(
await PageObjects.maps.setAbsoluteRange(
PageObjects.timePicker.formatDateToAbsoluteTimeString(past),
PageObjects.timePicker.formatDateToAbsoluteTimeString(future)
);
@ -40,7 +40,6 @@ export default function ({ getPageObjects, getService, updateBaselines }) {
await PageObjects.maps.toggleLayerVisibility('United States');
await PageObjects.maps.toggleLayerVisibility('World Countries');
await setTimerangeToCoverAllSampleData();
await PageObjects.maps.waitForLayersToLoad();
await PageObjects.maps.enterFullScreen();
});
@ -65,7 +64,6 @@ export default function ({ getPageObjects, getService, updateBaselines }) {
await PageObjects.maps.loadSavedMap('[Flights] Origin and Destination Flight Time');
await PageObjects.maps.toggleLayerVisibility('road_map');
await setTimerangeToCoverAllSampleData();
await PageObjects.maps.waitForLayersToLoad();
await PageObjects.maps.enterFullScreen();
});
@ -92,7 +90,6 @@ export default function ({ getPageObjects, getService, updateBaselines }) {
await PageObjects.maps.toggleLayerVisibility('road_map');
await PageObjects.maps.toggleLayerVisibility('Total Requests by Country');
await setTimerangeToCoverAllSampleData();
await PageObjects.maps.waitForLayersToLoad();
await PageObjects.maps.enterFullScreen();
});

View file

@ -80,6 +80,7 @@ export default function ({ getPageObjects, getService }) {
const urlWithQueryInAppState = `${kibanaBaseUrl}#/map/8eabdab0-144f-11e9-809f-ad25bb78262c?${appState}`;
await browser.get(urlWithQueryInAppState, true);
await PageObjects.maps.waitForLayersToLoad();
const query = await queryBar.getQueryString();
expect(query).to.equal('machine.os.raw : "win 8"');

View file

@ -358,7 +358,7 @@
"title" : "layer with errors",
"description" : "",
"mapStateJSON" : "{\"zoom\":0.71,\"center\":{\"lon\":0.10268,\"lat\":0},\"timeFilters\":{\"from\":\"now-7d\",\"to\":\"now\"},\"refreshConfig\":{\"isPaused\":true,\"interval\":0},\"query\":{\"query\":\"\",\"language\":\"kuery\"}}",
"layerListJSON" : "[{\"sourceDescriptor\":{\"type\":\"KIBANA_TILEMAP\",\"url\":\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\"},\"id\":\"ap0ys\",\"label\":\"Custom TMS\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"temporary\":false,\"style\":{\"type\":\"TILE\",\"properties\":{},\"previousStyle\":null},\"type\":\"TILE\",\"isInErrorState\":true,\"errorMessage\":\"Tiles from \\\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\\\" could not be loaded\"},{\"sourceDescriptor\":{\"type\":\"REGIONMAP_FILE\",\"name\":\"nameThatDoesNotExitForKibanaRegionmapSource\"},\"temporary\":false,\"id\":\"0sabv\",\"label\":\"Custom_vector_shapes\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#3cb44b\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}}},\"previousStyle\":null},\"type\":\"VECTOR\",\"isInErrorState\":true,\"errorMessage\":\"Cannot read property 'url' of undefined\"},{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"id\":\"idThatDoesNotExitForEMSTile\"},\"temporary\":false,\"id\":\"plw9l\",\"label\":\"EMS_tiles\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"style\":{\"type\":\"TILE\",\"properties\":{},\"previousStyle\":null},\"type\":\"TILE\"},{\"sourceDescriptor\":{\"type\":\"EMS_FILE\",\"id\":\"idThatDoesNotExitForEMSFileSource\"},\"temporary\":false,\"id\":\"2gro0\",\"label\":\"EMS_vector_shapes\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#e6194b\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}}},\"previousStyle\":null},\"type\":\"VECTOR\"},{\"sourceDescriptor\":{\"type\":\"ES_GEO_GRID\",\"id\":\"f67fe707-95dd-46d6-89b8-82617b251b61\",\"indexPatternId\":\"idThatDoesNotExitForESGeoGridSource\",\"geoField\":\"geo.coordinates\",\"requestType\":\"grid\",\"resolution\":\"COARSE\"},\"temporary\":false,\"id\":\"pl5qd\",\"label\":\"\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"DYNAMIC\",\"options\":{\"field\":{\"label\":\"Count\",\"name\":\"doc_count\",\"origin\":\"source\"},\"color\":\"Blues\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"DYNAMIC\",\"options\":{\"field\":{\"label\":\"Count\",\"name\":\"doc_count\",\"origin\":\"source\"},\"minSize\":4,\"maxSize\":32}}},\"previousStyle\":null},\"type\":\"VECTOR\"},{\"sourceDescriptor\":{\"id\":\"a07072bb-3a92-4320-bd37-250ef6d04db7\",\"type\":\"ES_SEARCH\",\"indexPatternId\":\"idThatDoesNotExitForESSearchSource\",\"geoField\":\"geo.coordinates\",\"limit\":2048,\"filterByMapBounds\":true,\"tooltipProperties\":[]},\"temporary\":false,\"id\":\"9bw8h\",\"label\":\"\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#e6194b\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}}},\"previousStyle\":null},\"type\":\"VECTOR\"}]",
"layerListJSON" : "[{\"sourceDescriptor\":{\"type\":\"KIBANA_TILEMAP\"},\"id\":\"ap0ys\",\"label\":\"Custom_TMS\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"temporary\":false,\"style\":{\"type\":\"TILE\",\"properties\":{},\"previousStyle\":null},\"type\":\"TILE\"},{\"sourceDescriptor\":{\"type\":\"REGIONMAP_FILE\",\"name\":\"nameThatDoesNotExitForKibanaRegionmapSource\"},\"temporary\":false,\"id\":\"0sabv\",\"label\":\"Custom_vector_shapes\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#3cb44b\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}}},\"previousStyle\":null},\"type\":\"VECTOR\"},{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"id\":\"idThatDoesNotExitForEMSTile\"},\"temporary\":false,\"id\":\"plw9l\",\"label\":\"EMS_tiles\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"style\":{\"type\":\"TILE\",\"properties\":{},\"previousStyle\":null},\"type\":\"TILE\"},{\"sourceDescriptor\":{\"type\":\"EMS_FILE\",\"id\":\"idThatDoesNotExitForEMSFileSource\"},\"temporary\":false,\"id\":\"2gro0\",\"label\":\"EMS_vector_shapes\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#e6194b\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}}},\"previousStyle\":null},\"type\":\"VECTOR\"},{\"sourceDescriptor\":{\"type\":\"ES_GEO_GRID\",\"id\":\"f67fe707-95dd-46d6-89b8-82617b251b61\",\"indexPatternId\":\"idThatDoesNotExitForESGeoGridSource\",\"geoField\":\"geo.coordinates\",\"requestType\":\"grid\",\"resolution\":\"COARSE\"},\"temporary\":false,\"id\":\"pl5qd\",\"label\":\"\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"DYNAMIC\",\"options\":{\"field\":{\"label\":\"Count\",\"name\":\"doc_count\",\"origin\":\"source\"},\"color\":\"Blues\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"DYNAMIC\",\"options\":{\"field\":{\"label\":\"Count\",\"name\":\"doc_count\",\"origin\":\"source\"},\"minSize\":4,\"maxSize\":32}}},\"previousStyle\":null},\"type\":\"VECTOR\"},{\"sourceDescriptor\":{\"id\":\"a07072bb-3a92-4320-bd37-250ef6d04db7\",\"type\":\"ES_SEARCH\",\"indexPatternId\":\"idThatDoesNotExitForESSearchSource\",\"geoField\":\"geo.coordinates\",\"limit\":2048,\"filterByMapBounds\":true,\"tooltipProperties\":[]},\"temporary\":false,\"id\":\"9bw8h\",\"label\":\"\",\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#e6194b\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}}},\"previousStyle\":null},\"type\":\"VECTOR\"},{\"id\":\"n1t6f\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"sourceDescriptor\":{\"id\":\"62eca1fc-fe42-11e8-8eb2-f2801f1b9fd1\",\"type\":\"ES_SEARCH\",\"indexPatternId\":\"561253e0-f731-11e8-8487-11b9dd924f96\",\"geoField\":\"geometry\",\"limit\":2048,\"filterByMapBounds\":false,\"showTooltip\":true,\"tooltipProperties\":[]},\"visible\":true,\"temporary\":false,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"fillColor\":{\"type\":\"DYNAMIC\",\"options\":{\"field\":{\"label\":\"max(prop1) group by meta_for_geo_shapes*.shape_name\",\"name\":\"__kbnjoin__max_of_prop1_groupby_meta_for_geo_shapes*.shape_name\",\"origin\":\"join\"},\"color\":\"Blues\"}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":10}},\"alphaValue\":1},\"temporary\":true,\"previousStyle\":null},\"type\":\"VECTOR\",\"joins\":[{\"leftField\":\"name\",\"right\":{\"id\":\"855ccb86-fe42-11e8-8eb2-f2801f1b9fd1\",\"indexPatternId\":\"idThatDoesNotExitForESJoinSource\",\"indexPatternTitle\":\"meta_for_geo_shapes*\",\"term\":\"shape_name\",\"metrics\":[{\"type\":\"max\",\"field\":\"prop1\"}]}}]}]",
"uiStateJSON" : "{}",
"bounds" : {
"type" : "polygon",

View file

@ -12,9 +12,26 @@ export function GisPageProvider({ getService, getPageObjects }) {
const retry = getService('retry');
const inspector = getService('inspector');
const find = getService('find');
const queryBar = getService('queryBar');
class GisPage {
async setAbsoluteRange(start, end) {
await PageObjects.timePicker.setAbsoluteRange(start, end);
await this.waitForLayersToLoad();
}
async setAndSubmitQuery(query) {
await queryBar.setQuery(query);
await queryBar.submitQuery();
await this.waitForLayersToLoad();
}
async refreshQuery() {
await queryBar.submitQuery();
await this.waitForLayersToLoad();
}
async enterFullScreen() {
log.debug(`enterFullScreen`);
await testSubjects.click('mapsFullScreenMode');
@ -56,6 +73,8 @@ export function GisPageProvider({ getService, getPageObjects }) {
throw new Error(`Failed to open map ${name}`);
}
});
await this.waitForLayersToLoad();
}
async deleteSavedMaps(search) {
@ -137,7 +156,7 @@ export function GisPageProvider({ getService, getPageObjects }) {
await testSubjects.setValue('longitudeInput', lon.toString());
await testSubjects.setValue('zoomInput', zoom.toString());
await testSubjects.click('submitViewButton');
await PageObjects.header.waitUntilLoadingHasFinished();
await this.waitForLayersToLoad();
}
async getView() {
@ -254,7 +273,7 @@ export function GisPageProvider({ getService, getPageObjects }) {
log.debug('waiting to give time for refresh timer to fire');
await PageObjects.common.sleep(refreshInterval + (refreshInterval / 2));
await PageObjects.timePicker.pauseAutoRefresh();
await PageObjects.header.waitUntilLoadingHasFinished();
await this.waitForLayersToLoad();
}
}
return new GisPage();