mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 03:01:21 -04:00
* Revert "Revert: [7.x] [FTR][CI] Use default distribution for all tests (#102019)"
This reverts commit c272bdbc25
.
* [FTR] Stabilize SSLP functional tests (#102553)
* Removes spaces check, since spaces should always be available
* Disables Monitoring, SecuritySolutions, and Reporting in SSPL tests
until #102552 is completed
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
bd9feb921d
commit
6977be0140
76 changed files with 2609 additions and 5028 deletions
|
@ -72,11 +72,7 @@ def agentProcess(Map params = [:]) {
|
||||||
]) {
|
]) {
|
||||||
task {
|
task {
|
||||||
if (config.needBuild) {
|
if (config.needBuild) {
|
||||||
if (!config.isXpack) {
|
kibanaPipeline.buildKibana()
|
||||||
kibanaPipeline.buildOss()
|
|
||||||
} else {
|
|
||||||
kibanaPipeline.buildXpack()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for(def i = 0; i < config.agentExecutions; i++) {
|
for(def i = 0; i < config.agentExecutions; i++) {
|
||||||
|
|
|
@ -16,7 +16,7 @@ kibanaPipeline(timeoutMinutes: 180) {
|
||||||
def job = 'xpack-securityCypress'
|
def job = 'xpack-securityCypress'
|
||||||
|
|
||||||
workers.ci(name: job, size: 'l', ramDisk: true) {
|
workers.ci(name: job, size: 'l', ramDisk: true) {
|
||||||
kibanaPipeline.bash('test/scripts/jenkins_xpack_build_kibana.sh', 'Build Default Distributable')
|
kibanaPipeline.bash('test/scripts/jenkins_build_kibana.sh', 'Build Distributable')
|
||||||
kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_chrome.sh')()
|
kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_chrome.sh')()
|
||||||
// Temporarily disabled to figure out test flake
|
// Temporarily disabled to figure out test flake
|
||||||
// kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_firefox.sh')()
|
// kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_firefox.sh')()
|
||||||
|
|
|
@ -37,12 +37,8 @@ kibanaPipeline(timeoutMinutes: 210) {
|
||||||
])
|
])
|
||||||
|
|
||||||
task {
|
task {
|
||||||
kibanaPipeline.buildOss(6)
|
kibanaPipeline.buildKibana(16)
|
||||||
tasks.ossCiGroups()
|
tasks.ossCiGroups()
|
||||||
}
|
|
||||||
|
|
||||||
task {
|
|
||||||
kibanaPipeline.buildXpack(10, true)
|
|
||||||
tasks.xpackCiGroups()
|
tasks.xpackCiGroups()
|
||||||
tasks.xpackCiGroupDocker()
|
tasks.xpackCiGroupDocker()
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,8 @@ export async function emptyKibanaIndexAction({
|
||||||
kbnClient: KbnClient;
|
kbnClient: KbnClient;
|
||||||
}) {
|
}) {
|
||||||
const stats = createStats('emptyKibanaIndex', log);
|
const stats = createStats('emptyKibanaIndex', log);
|
||||||
const kibanaPluginIds = await kbnClient.plugins.getEnabledIds();
|
|
||||||
|
|
||||||
await cleanKibanaIndices({ client, stats, log, kibanaPluginIds });
|
await cleanKibanaIndices({ client, stats, log });
|
||||||
await migrateKibanaIndex({ kbnClient });
|
await migrateKibanaIndex({ kbnClient });
|
||||||
stats.createdIndex('.kibana');
|
stats.createdIndex('.kibana');
|
||||||
return stats.toJSON();
|
return stats.toJSON();
|
||||||
|
|
|
@ -37,7 +37,6 @@ export async function unloadAction({
|
||||||
}) {
|
}) {
|
||||||
const name = relative(REPO_ROOT, inputDir);
|
const name = relative(REPO_ROOT, inputDir);
|
||||||
const stats = createStats(name, log);
|
const stats = createStats(name, log);
|
||||||
const kibanaPluginIds = await kbnClient.plugins.getEnabledIds();
|
|
||||||
|
|
||||||
const files = prioritizeMappings(await readDirectory(inputDir));
|
const files = prioritizeMappings(await readDirectory(inputDir));
|
||||||
for (const filename of files) {
|
for (const filename of files) {
|
||||||
|
@ -47,7 +46,7 @@ export async function unloadAction({
|
||||||
createReadStream(resolve(inputDir, filename)) as Readable,
|
createReadStream(resolve(inputDir, filename)) as Readable,
|
||||||
...createParseArchiveStreams({ gzip: isGzip(filename) }),
|
...createParseArchiveStreams({ gzip: isGzip(filename) }),
|
||||||
createFilterRecordsStream('index'),
|
createFilterRecordsStream('index'),
|
||||||
createDeleteIndexStream(client, stats, log, kibanaPluginIds),
|
createDeleteIndexStream(client, stats, log),
|
||||||
] as [Readable, ...Writable[]]);
|
] as [Readable, ...Writable[]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ describe('esArchiver: createDeleteIndexStream()', () => {
|
||||||
|
|
||||||
await createPromiseFromStreams([
|
await createPromiseFromStreams([
|
||||||
createListStream([createStubIndexRecord('index1')]),
|
createListStream([createStubIndexRecord('index1')]),
|
||||||
createDeleteIndexStream(client, stats, log, []),
|
createDeleteIndexStream(client, stats, log),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
sinon.assert.notCalled(stats.deletedIndex as sinon.SinonSpy);
|
sinon.assert.notCalled(stats.deletedIndex as sinon.SinonSpy);
|
||||||
|
@ -43,7 +43,7 @@ describe('esArchiver: createDeleteIndexStream()', () => {
|
||||||
|
|
||||||
await createPromiseFromStreams([
|
await createPromiseFromStreams([
|
||||||
createListStream([createStubIndexRecord('index1')]),
|
createListStream([createStubIndexRecord('index1')]),
|
||||||
createDeleteIndexStream(client, stats, log, []),
|
createDeleteIndexStream(client, stats, log),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
sinon.assert.calledOnce(stats.deletedIndex as sinon.SinonSpy);
|
sinon.assert.calledOnce(stats.deletedIndex as sinon.SinonSpy);
|
||||||
|
|
|
@ -14,12 +14,7 @@ import { Stats } from '../stats';
|
||||||
import { deleteIndex } from './delete_index';
|
import { deleteIndex } from './delete_index';
|
||||||
import { cleanKibanaIndices } from './kibana_index';
|
import { cleanKibanaIndices } from './kibana_index';
|
||||||
|
|
||||||
export function createDeleteIndexStream(
|
export function createDeleteIndexStream(client: KibanaClient, stats: Stats, log: ToolingLog) {
|
||||||
client: KibanaClient,
|
|
||||||
stats: Stats,
|
|
||||||
log: ToolingLog,
|
|
||||||
kibanaPluginIds: string[]
|
|
||||||
) {
|
|
||||||
return new Transform({
|
return new Transform({
|
||||||
readableObjectMode: true,
|
readableObjectMode: true,
|
||||||
writableObjectMode: true,
|
writableObjectMode: true,
|
||||||
|
@ -29,7 +24,7 @@ export function createDeleteIndexStream(
|
||||||
const { index } = record.value;
|
const { index } = record.value;
|
||||||
|
|
||||||
if (index.startsWith('.kibana')) {
|
if (index.startsWith('.kibana')) {
|
||||||
await cleanKibanaIndices({ client, stats, log, kibanaPluginIds });
|
await cleanKibanaIndices({ client, stats, log });
|
||||||
} else {
|
} else {
|
||||||
await deleteIndex({ client, stats, log, index });
|
await deleteIndex({ client, stats, log, index });
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,21 +97,11 @@ export async function cleanKibanaIndices({
|
||||||
client,
|
client,
|
||||||
stats,
|
stats,
|
||||||
log,
|
log,
|
||||||
kibanaPluginIds,
|
|
||||||
}: {
|
}: {
|
||||||
client: KibanaClient;
|
client: KibanaClient;
|
||||||
stats: Stats;
|
stats: Stats;
|
||||||
log: ToolingLog;
|
log: ToolingLog;
|
||||||
kibanaPluginIds: string[];
|
|
||||||
}) {
|
}) {
|
||||||
if (!kibanaPluginIds.includes('spaces')) {
|
|
||||||
return await deleteKibanaIndices({
|
|
||||||
client,
|
|
||||||
stats,
|
|
||||||
log,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
const resp = await client.deleteByQuery(
|
const resp = await client.deleteByQuery(
|
||||||
{
|
{
|
||||||
|
@ -168,6 +158,7 @@ export async function createDefaultSpace({
|
||||||
index,
|
index,
|
||||||
type: '_doc',
|
type: '_doc',
|
||||||
id: 'space:default',
|
id: 'space:default',
|
||||||
|
refresh: 'wait_for',
|
||||||
body: {
|
body: {
|
||||||
type: 'space',
|
type: 'space',
|
||||||
updated_at: new Date().toISOString(),
|
updated_at: new Date().toISOString(),
|
||||||
|
|
|
@ -8,13 +8,14 @@
|
||||||
|
|
||||||
import { ToolingLog } from '@kbn/dev-utils';
|
import { ToolingLog } from '@kbn/dev-utils';
|
||||||
|
|
||||||
import { KbnClientRequester, ReqOptions } from './kbn_client_requester';
|
|
||||||
import { KbnClientStatus } from './kbn_client_status';
|
|
||||||
import { KbnClientPlugins } from './kbn_client_plugins';
|
|
||||||
import { KbnClientVersion } from './kbn_client_version';
|
|
||||||
import { KbnClientSavedObjects } from './kbn_client_saved_objects';
|
|
||||||
import { KbnClientUiSettings, UiSettingValues } from './kbn_client_ui_settings';
|
|
||||||
import { KbnClientImportExport } from './kbn_client_import_export';
|
import { KbnClientImportExport } from './kbn_client_import_export';
|
||||||
|
import { KbnClientPlugins } from './kbn_client_plugins';
|
||||||
|
import { KbnClientRequester, ReqOptions } from './kbn_client_requester';
|
||||||
|
import { KbnClientSavedObjects } from './kbn_client_saved_objects';
|
||||||
|
import { KbnClientSpaces } from './kbn_client_spaces';
|
||||||
|
import { KbnClientStatus } from './kbn_client_status';
|
||||||
|
import { KbnClientUiSettings, UiSettingValues } from './kbn_client_ui_settings';
|
||||||
|
import { KbnClientVersion } from './kbn_client_version';
|
||||||
|
|
||||||
export interface KbnClientOptions {
|
export interface KbnClientOptions {
|
||||||
url: string;
|
url: string;
|
||||||
|
@ -29,6 +30,7 @@ export class KbnClient {
|
||||||
readonly plugins: KbnClientPlugins;
|
readonly plugins: KbnClientPlugins;
|
||||||
readonly version: KbnClientVersion;
|
readonly version: KbnClientVersion;
|
||||||
readonly savedObjects: KbnClientSavedObjects;
|
readonly savedObjects: KbnClientSavedObjects;
|
||||||
|
readonly spaces: KbnClientSpaces;
|
||||||
readonly uiSettings: KbnClientUiSettings;
|
readonly uiSettings: KbnClientUiSettings;
|
||||||
readonly importExport: KbnClientImportExport;
|
readonly importExport: KbnClientImportExport;
|
||||||
|
|
||||||
|
@ -59,6 +61,7 @@ export class KbnClient {
|
||||||
this.plugins = new KbnClientPlugins(this.status);
|
this.plugins = new KbnClientPlugins(this.status);
|
||||||
this.version = new KbnClientVersion(this.status);
|
this.version = new KbnClientVersion(this.status);
|
||||||
this.savedObjects = new KbnClientSavedObjects(this.log, this.requester);
|
this.savedObjects = new KbnClientSavedObjects(this.log, this.requester);
|
||||||
|
this.spaces = new KbnClientSpaces(this.requester);
|
||||||
this.uiSettings = new KbnClientUiSettings(this.log, this.requester, this.uiSettingDefaults);
|
this.uiSettings = new KbnClientUiSettings(this.log, this.requester, this.uiSettingDefaults);
|
||||||
this.importExport = new KbnClientImportExport(
|
this.importExport = new KbnClientImportExport(
|
||||||
this.log,
|
this.log,
|
||||||
|
|
|
@ -121,6 +121,8 @@ export class KbnClientRequester {
|
||||||
responseType: options.responseType,
|
responseType: options.responseType,
|
||||||
// work around https://github.com/axios/axios/issues/2791
|
// work around https://github.com/axios/axios/issues/2791
|
||||||
transformResponse: options.responseType === 'text' ? [(x) => x] : undefined,
|
transformResponse: options.responseType === 'text' ? [(x) => x] : undefined,
|
||||||
|
maxContentLength: 30000000,
|
||||||
|
maxBodyLength: 30000000,
|
||||||
paramsSerializer: (params) => Qs.stringify(params),
|
paramsSerializer: (params) => Qs.stringify(params),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
67
packages/kbn-test/src/kbn_client/kbn_client_spaces.ts
Normal file
67
packages/kbn-test/src/kbn_client/kbn_client_spaces.ts
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||||
|
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||||
|
* Side Public License, v 1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { KbnClientRequester, uriencode } from './kbn_client_requester';
|
||||||
|
|
||||||
|
interface UpdateBody {
|
||||||
|
name: string;
|
||||||
|
description?: string;
|
||||||
|
disabledFeatures?: string | string[];
|
||||||
|
initials?: string;
|
||||||
|
color?: string;
|
||||||
|
imageUrl?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CreateBody extends UpdateBody {
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class KbnClientSpaces {
|
||||||
|
constructor(private readonly requester: KbnClientRequester) {}
|
||||||
|
|
||||||
|
async create(body: CreateBody) {
|
||||||
|
await this.requester.request({
|
||||||
|
method: 'POST',
|
||||||
|
path: '/api/spaces/space',
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async update(id: string, body: UpdateBody) {
|
||||||
|
await this.requester.request({
|
||||||
|
method: 'PUT',
|
||||||
|
path: uriencode`/api/spaces/space/${id}`,
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async get(id: string) {
|
||||||
|
const { data } = await this.requester.request({
|
||||||
|
method: 'GET',
|
||||||
|
path: uriencode`/api/spaces/space/${id}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
async list() {
|
||||||
|
const { data } = await this.requester.request({
|
||||||
|
method: 'GET',
|
||||||
|
path: '/api/spaces/space',
|
||||||
|
});
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(id: string) {
|
||||||
|
await this.requester.request({
|
||||||
|
method: 'DELETE',
|
||||||
|
path: uriencode`/api/spaces/space/${id}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,6 +40,7 @@ export const IGNORE_FILE_GLOBS = [
|
||||||
'.ci/pipeline-library/**/*',
|
'.ci/pipeline-library/**/*',
|
||||||
'packages/kbn-test/jest-preset.js',
|
'packages/kbn-test/jest-preset.js',
|
||||||
'test/package/Vagrantfile',
|
'test/package/Vagrantfile',
|
||||||
|
'**/test/**/fixtures/**/*',
|
||||||
|
|
||||||
// filename must match language code which requires capital letters
|
// filename must match language code which requires capital letters
|
||||||
'**/translations/*.json',
|
'**/translations/*.json',
|
||||||
|
@ -60,8 +61,6 @@ export const IGNORE_FILE_GLOBS = [
|
||||||
'x-pack/plugins/apm/e2e/**/*',
|
'x-pack/plugins/apm/e2e/**/*',
|
||||||
|
|
||||||
'x-pack/plugins/maps/server/fonts/**/*',
|
'x-pack/plugins/maps/server/fonts/**/*',
|
||||||
// packages for the ingest manager's api integration tests could be valid semver which has dashes
|
|
||||||
'x-pack/test/fleet_api_integration/apis/fixtures/test_packages/**/*',
|
|
||||||
|
|
||||||
// Bazel default files
|
// Bazel default files
|
||||||
'**/WORKSPACE.bazel',
|
'**/WORKSPACE.bazel',
|
||||||
|
@ -97,7 +96,6 @@ export const IGNORE_DIRECTORY_GLOBS = [
|
||||||
...KEBAB_CASE_DIRECTORY_GLOBS,
|
...KEBAB_CASE_DIRECTORY_GLOBS,
|
||||||
'src/babel-*',
|
'src/babel-*',
|
||||||
'packages/*',
|
'packages/*',
|
||||||
'test/functional/fixtures/es_archiver/visualize_source-filters',
|
|
||||||
'packages/kbn-pm/src/utils/__fixtures__/*',
|
'packages/kbn-pm/src/utils/__fixtures__/*',
|
||||||
'x-pack/dev-tools',
|
'x-pack/dev-tools',
|
||||||
'packages/kbn-optimizer/src/__fixtures__/mock_repo/x-pack',
|
'packages/kbn-optimizer/src/__fixtures__/mock_repo/x-pack',
|
||||||
|
|
|
@ -63,6 +63,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||||
it('dashboard panel full screen', async () => {
|
it('dashboard panel full screen', async () => {
|
||||||
const header = await dashboardPanelActions.getPanelHeading('[Flights] Airline Carrier');
|
const header = await dashboardPanelActions.getPanelHeading('[Flights] Airline Carrier');
|
||||||
await dashboardPanelActions.toggleContextMenu(header);
|
await dashboardPanelActions.toggleContextMenu(header);
|
||||||
|
await dashboardPanelActions.clickContextMenuMoreItem();
|
||||||
|
|
||||||
await testSubjects.click('embeddablePanelAction-togglePanel');
|
await testSubjects.click('embeddablePanelAction-togglePanel');
|
||||||
await a11y.testAppSnapshot();
|
await a11y.testAppSnapshot();
|
||||||
});
|
});
|
||||||
|
|
|
@ -43,7 +43,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
elasticsearchIndicesCreated: { kibana_sample_data_flights: 13059 },
|
elasticsearchIndicesCreated: { kibana_sample_data_flights: 13059 },
|
||||||
kibanaSavedObjectsLoaded: 20,
|
kibanaSavedObjectsLoaded: 23,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -13,12 +13,20 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const es = getService('es');
|
const es = getService('es');
|
||||||
|
|
||||||
describe('telemetry API', () => {
|
describe('telemetry API', () => {
|
||||||
before(() => esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic'));
|
before(async () => {
|
||||||
after(() => esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic'));
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should increment the opt *in* counter in the .kibana/kql-telemetry document', async () => {
|
it('should increment the opt *in* counter in the .kibana/kql-telemetry document', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
|
|
|
@ -12,8 +12,8 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
const SPACE_ID = 'ftr-so-bulk-create';
|
||||||
|
|
||||||
const BULK_REQUESTS = [
|
const BULK_REQUESTS = [
|
||||||
{
|
{
|
||||||
|
@ -38,19 +38,18 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
KIBANA_VERSION = await getKibanaVersion(getService);
|
KIBANA_VERSION = await getKibanaVersion(getService);
|
||||||
|
await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_ID });
|
||||||
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
after(() => kibanaServer.spaces.delete(SPACE_ID));
|
||||||
before(() =>
|
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
after(() =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 with individual responses', async () =>
|
it('should return 200 with individual responses', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.post(`/api/saved_objects/_bulk_create`)
|
.post(`/s/${SPACE_ID}/api/saved_objects/_bulk_create`)
|
||||||
.send(BULK_REQUESTS)
|
.send(BULK_REQUESTS)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
@ -79,7 +78,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
},
|
},
|
||||||
coreMigrationVersion: KIBANA_VERSION,
|
coreMigrationVersion: KIBANA_VERSION,
|
||||||
references: [],
|
references: [],
|
||||||
namespaces: ['default'],
|
namespaces: [SPACE_ID],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
@ -87,7 +86,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should not return raw id when object id is unspecified', async () =>
|
it('should not return raw id when object id is unspecified', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.post(`/api/saved_objects/_bulk_create`)
|
.post(`/s/${SPACE_ID}/api/saved_objects/_bulk_create`)
|
||||||
.send(BULK_REQUESTS.map(({ id, ...rest }) => rest))
|
.send(BULK_REQUESTS.map(({ id, ...rest }) => rest))
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
@ -96,45 +95,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
);
|
);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 with errors', async () => {
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_bulk_create')
|
|
||||||
.send(BULK_REQUESTS)
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
saved_objects: [
|
|
||||||
{
|
|
||||||
id: BULK_REQUESTS[0].id,
|
|
||||||
type: BULK_REQUESTS[0].type,
|
|
||||||
error: {
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
statusCode: 500,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: BULK_REQUESTS[1].id,
|
|
||||||
type: BULK_REQUESTS[1].type,
|
|
||||||
error: {
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
statusCode: 500,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,7 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
const BULK_REQUESTS = [
|
const BULK_REQUESTS = [
|
||||||
{
|
{
|
||||||
|
@ -35,15 +34,16 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
KIBANA_VERSION = await getKibanaVersion(getService);
|
KIBANA_VERSION = await getKibanaVersion(getService);
|
||||||
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
after(async () => {
|
||||||
before(() =>
|
await kibanaServer.importExport.unload(
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
|
||||||
after(() =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200 with individual responses', async () =>
|
it('should return 200 with individual responses', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -51,12 +51,16 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
.send(BULK_REQUESTS)
|
.send(BULK_REQUESTS)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
const mockDate = '2015-01-01T00:00:00.000Z';
|
||||||
|
resp.body.saved_objects[0].updated_at = mockDate;
|
||||||
|
resp.body.saved_objects[2].updated_at = mockDate;
|
||||||
|
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
saved_objects: [
|
saved_objects: [
|
||||||
{
|
{
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
updated_at: '2017-09-21T18:51:23.794Z',
|
updated_at: '2015-01-01T00:00:00.000Z',
|
||||||
version: resp.body.saved_objects[0].version,
|
version: resp.body.saved_objects[0].version,
|
||||||
attributes: {
|
attributes: {
|
||||||
title: 'Count of requests',
|
title: 'Count of requests',
|
||||||
|
@ -91,7 +95,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
{
|
{
|
||||||
id: '7.0.0-alpha1',
|
id: '7.0.0-alpha1',
|
||||||
type: 'config',
|
type: 'config',
|
||||||
updated_at: '2017-09-21T18:49:16.302Z',
|
updated_at: '2015-01-01T00:00:00.000Z',
|
||||||
version: resp.body.saved_objects[2].version,
|
version: resp.body.saved_objects[2].version,
|
||||||
attributes: {
|
attributes: {
|
||||||
buildNum: 8467,
|
buildNum: 8467,
|
||||||
|
@ -107,53 +111,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
expect(resp.body.saved_objects[0].migrationVersion).to.be.ok();
|
expect(resp.body.saved_objects[0].migrationVersion).to.be.ok();
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 with individual responses', async () =>
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_bulk_get')
|
|
||||||
.send(BULK_REQUESTS)
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
saved_objects: [
|
|
||||||
{
|
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
|
||||||
type: 'visualization',
|
|
||||||
error: {
|
|
||||||
error: 'Not Found',
|
|
||||||
message:
|
|
||||||
'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] not found',
|
|
||||||
statusCode: 404,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'does not exist',
|
|
||||||
type: 'dashboard',
|
|
||||||
error: {
|
|
||||||
error: 'Not Found',
|
|
||||||
message: 'Saved object [dashboard/does not exist] not found',
|
|
||||||
statusCode: 404,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '7.0.0-alpha1',
|
|
||||||
type: 'config',
|
|
||||||
error: {
|
|
||||||
error: 'Not Found',
|
|
||||||
message: 'Saved object [config/7.0.0-alpha1] not found',
|
|
||||||
statusCode: 404,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,17 +12,20 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('bulkUpdate', () => {
|
describe('bulkUpdate', () => {
|
||||||
describe('with kibana index', () => {
|
before(async () => {
|
||||||
before(() =>
|
await kibanaServer.importExport.load(
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200', async () => {
|
it('should return 200', async () => {
|
||||||
const response = await supertest
|
const response = await supertest
|
||||||
.put(`/api/saved_objects/_bulk_update`)
|
.put(`/api/saved_objects/_bulk_update`)
|
||||||
|
@ -234,59 +237,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 with errors', async () => {
|
|
||||||
const response = await supertest
|
|
||||||
.put(`/api/saved_objects/_bulk_update`)
|
|
||||||
.send([
|
|
||||||
{
|
|
||||||
type: 'visualization',
|
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
|
||||||
attributes: {
|
|
||||||
title: 'An existing visualization',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'dashboard',
|
|
||||||
id: 'be3733a0-9efe-11e7-acb3-3dab96693fab',
|
|
||||||
attributes: {
|
|
||||||
title: 'An existing dashboard',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
])
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
const {
|
|
||||||
saved_objects: [firstObject, secondObject],
|
|
||||||
} = response.body;
|
|
||||||
|
|
||||||
expect(firstObject).to.eql({
|
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
|
||||||
type: 'visualization',
|
|
||||||
error: {
|
|
||||||
statusCode: 500,
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(secondObject).to.eql({
|
|
||||||
id: 'be3733a0-9efe-11e7-acb3-3dab96693fab',
|
|
||||||
type: 'dashboard',
|
|
||||||
error: {
|
|
||||||
statusCode: 500,
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,24 +12,24 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const es = getService('es');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esArchiver = getService('esArchiver');
|
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('create', () => {
|
describe('create', () => {
|
||||||
let KIBANA_VERSION: string;
|
let KIBANA_VERSION: string;
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
KIBANA_VERSION = await getKibanaVersion(getService);
|
KIBANA_VERSION = await getKibanaVersion(getService);
|
||||||
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
after(async () => {
|
||||||
before(() =>
|
await kibanaServer.importExport.unload(
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
|
||||||
after(() =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200', async () => {
|
it('should return 200', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post(`/api/saved_objects/visualization`)
|
.post(`/api/saved_objects/visualization`)
|
||||||
|
@ -82,33 +82,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 500 and not auto-create saved objects index', async () => {
|
|
||||||
await supertest
|
|
||||||
.post(`/api/saved_objects/visualization`)
|
|
||||||
.send({
|
|
||||||
attributes: {
|
|
||||||
title: 'My favorite vis',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.expect(500)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred.',
|
|
||||||
statusCode: 500,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
expect((await es.indices.exists({ index: '.kibana' })).body).to.be(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,19 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('delete', () => {
|
describe('delete', () => {
|
||||||
describe('with kibana index', () => {
|
before(async () => {
|
||||||
before(() =>
|
await kibanaServer.importExport.load(
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200 when deleting a doc', async () =>
|
it('should return 200 when deleting a doc', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -43,25 +45,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('returns generic 404 when kibana index is missing', async () =>
|
|
||||||
await supertest
|
|
||||||
.delete(`/api/saved_objects/dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab`)
|
|
||||||
.expect(404)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
statusCode: 404,
|
|
||||||
error: 'Not Found',
|
|
||||||
message: 'Saved object [dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab] not found',
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,28 +15,27 @@ function ndjsonToObject(input: string) {
|
||||||
}
|
}
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
const SPACE_ID = 'ftr-so-export';
|
||||||
|
|
||||||
describe('export', () => {
|
describe('export', () => {
|
||||||
let KIBANA_VERSION: string;
|
let KIBANA_VERSION: string;
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
KIBANA_VERSION = await getKibanaVersion(getService);
|
KIBANA_VERSION = await getKibanaVersion(getService);
|
||||||
|
await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_ID });
|
||||||
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
after(() => kibanaServer.spaces.delete(SPACE_ID));
|
||||||
describe('basic amount of saved objects', () => {
|
|
||||||
before(() =>
|
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
after(() =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
|
|
||||||
|
describe('basic amount of saved objects', () => {
|
||||||
it('should return objects in dependency order', async () => {
|
it('should return objects in dependency order', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: ['index-pattern', 'search', 'visualization', 'dashboard'],
|
type: ['index-pattern', 'search', 'visualization', 'dashboard'],
|
||||||
})
|
})
|
||||||
|
@ -58,7 +57,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should exclude the export details if asked', async () => {
|
it('should exclude the export details if asked', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: ['index-pattern', 'search', 'visualization', 'dashboard'],
|
type: ['index-pattern', 'search', 'visualization', 'dashboard'],
|
||||||
excludeExportDetails: true,
|
excludeExportDetails: true,
|
||||||
|
@ -78,7 +77,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should support including dependencies when exporting selected objects', async () => {
|
it('should support including dependencies when exporting selected objects', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
includeReferencesDeep: true,
|
includeReferencesDeep: true,
|
||||||
objects: [
|
objects: [
|
||||||
|
@ -106,7 +105,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should support including dependencies when exporting by type', async () => {
|
it('should support including dependencies when exporting by type', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
includeReferencesDeep: true,
|
includeReferencesDeep: true,
|
||||||
type: ['dashboard'],
|
type: ['dashboard'],
|
||||||
|
@ -129,7 +128,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should support including dependencies when exporting by type and search', async () => {
|
it('should support including dependencies when exporting by type and search', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
includeReferencesDeep: true,
|
includeReferencesDeep: true,
|
||||||
type: ['dashboard'],
|
type: ['dashboard'],
|
||||||
|
@ -153,7 +152,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it(`should throw error when object doesn't exist`, async () => {
|
it(`should throw error when object doesn't exist`, async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
objects: [
|
objects: [
|
||||||
{
|
{
|
||||||
|
@ -187,7 +186,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it(`should return 400 when exporting unsupported type`, async () => {
|
it(`should return 400 when exporting unsupported type`, async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: ['wigwags'],
|
type: ['wigwags'],
|
||||||
})
|
})
|
||||||
|
@ -203,7 +202,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it(`should return 400 when exporting objects with unsupported type`, async () => {
|
it(`should return 400 when exporting objects with unsupported type`, async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
objects: [
|
objects: [
|
||||||
{
|
{
|
||||||
|
@ -253,9 +252,12 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
await supertest.post('/api/saved_objects/_bulk_create').send(soWithCycliRefs).expect(200);
|
await supertest
|
||||||
|
.post(`/s/${SPACE_ID}/api/saved_objects/_bulk_create`)
|
||||||
|
.send(soWithCycliRefs)
|
||||||
|
.expect(200);
|
||||||
const resp = await supertest
|
const resp = await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
includeReferencesDeep: true,
|
includeReferencesDeep: true,
|
||||||
type: ['dashboard'],
|
type: ['dashboard'],
|
||||||
|
@ -269,16 +271,38 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('10,000 objects', () => {
|
describe('10,000 objects', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/10k')
|
const fileChunks = [];
|
||||||
);
|
for (let i = 0; i <= 9995; i++) {
|
||||||
after(() =>
|
fileChunks.push(
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/10k')
|
JSON.stringify({
|
||||||
|
type: 'visualization',
|
||||||
|
id: `${SPACE_ID}-${i}`,
|
||||||
|
attributes: {
|
||||||
|
title: `My visualization (${i})`,
|
||||||
|
uiStateJSON: '{}',
|
||||||
|
visState: '{}',
|
||||||
|
},
|
||||||
|
references: [
|
||||||
|
{
|
||||||
|
name: 'kibanaSavedObjectMeta.searchSourceJSON.index',
|
||||||
|
type: 'index-pattern',
|
||||||
|
id: '91200a00-9efd-11e7-acb3-3dab96693fab',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await supertest
|
||||||
|
.post(`/s/${SPACE_ID}/api/saved_objects/_import`)
|
||||||
|
.attach('file', Buffer.from(fileChunks.join('\n'), 'utf8'), 'export.ndjson')
|
||||||
|
.expect(200);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 400 when exporting without type or objects passed in', async () => {
|
it('should return 400 when exporting without type or objects passed in', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.expect(400)
|
.expect(400)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
|
@ -291,7 +315,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should return 200 when exporting by single type', async () => {
|
it('should return 200 when exporting by single type', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: 'dashboard',
|
type: 'dashboard',
|
||||||
excludeExportDetails: true,
|
excludeExportDetails: true,
|
||||||
|
@ -306,6 +330,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
// Sort values aren't deterministic so we need to exclude them
|
// Sort values aren't deterministic so we need to exclude them
|
||||||
const { sort, ...obj } = objects[0];
|
const { sort, ...obj } = objects[0];
|
||||||
|
|
||||||
expect(obj).to.eql({
|
expect(obj).to.eql({
|
||||||
attributes: {
|
attributes: {
|
||||||
description: '',
|
description: '',
|
||||||
|
@ -337,7 +362,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
type: 'dashboard',
|
type: 'dashboard',
|
||||||
updated_at: '2017-09-21T18:57:40.826Z',
|
updated_at: objects[0].updated_at,
|
||||||
version: objects[0].version,
|
version: objects[0].version,
|
||||||
});
|
});
|
||||||
expect(objects[0].migrationVersion).to.be.ok();
|
expect(objects[0].migrationVersion).to.be.ok();
|
||||||
|
@ -351,7 +376,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should return 200 when exporting by array type', async () => {
|
it('should return 200 when exporting by array type', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: ['dashboard'],
|
type: ['dashboard'],
|
||||||
excludeExportDetails: true,
|
excludeExportDetails: true,
|
||||||
|
@ -397,7 +422,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
type: 'dashboard',
|
type: 'dashboard',
|
||||||
updated_at: '2017-09-21T18:57:40.826Z',
|
updated_at: objects[0].updated_at,
|
||||||
version: objects[0].version,
|
version: objects[0].version,
|
||||||
});
|
});
|
||||||
expect(objects[0].migrationVersion).to.be.ok();
|
expect(objects[0].migrationVersion).to.be.ok();
|
||||||
|
@ -411,7 +436,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should return 200 when exporting by objects', async () => {
|
it('should return 200 when exporting by objects', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
objects: [
|
objects: [
|
||||||
{
|
{
|
||||||
|
@ -462,7 +487,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
type: 'dashboard',
|
type: 'dashboard',
|
||||||
updated_at: '2017-09-21T18:57:40.826Z',
|
updated_at: objects[0].updated_at,
|
||||||
version: objects[0].version,
|
version: objects[0].version,
|
||||||
});
|
});
|
||||||
expect(objects[0].migrationVersion).to.be.ok();
|
expect(objects[0].migrationVersion).to.be.ok();
|
||||||
|
@ -476,7 +501,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should return 400 when exporting by type and objects', async () => {
|
it('should return 400 when exporting by type and objects', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: 'dashboard',
|
type: 'dashboard',
|
||||||
objects: [
|
objects: [
|
||||||
|
@ -496,32 +521,10 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
describe('10,001 objects', () => {
|
|
||||||
let customVisId: string;
|
|
||||||
before(async () => {
|
|
||||||
await esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/10k');
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/visualization')
|
|
||||||
.send({
|
|
||||||
attributes: {
|
|
||||||
title: 'My favorite vis',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
customVisId = resp.body.id;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
after(async () => {
|
|
||||||
await supertest.delete(`/api/saved_objects/visualization/${customVisId}`).expect(200);
|
|
||||||
await esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/10k');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should allow exporting more than 10,000 objects if permitted by maxImportExportSize', async () => {
|
it('should allow exporting more than 10,000 objects if permitted by maxImportExportSize', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: ['dashboard', 'visualization', 'search', 'index-pattern'],
|
type: ['dashboard', 'visualization', 'search', 'index-pattern'],
|
||||||
excludeExportDetails: true,
|
excludeExportDetails: true,
|
||||||
|
@ -540,7 +543,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('should return 400 when exporting more than allowed by maxImportExportSize', async () => {
|
it('should return 400 when exporting more than allowed by maxImportExportSize', async () => {
|
||||||
let anotherCustomVisId: string;
|
let anotherCustomVisId: string;
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/visualization')
|
.post(`/s/${SPACE_ID}/api/saved_objects/visualization`)
|
||||||
.send({
|
.send({
|
||||||
attributes: {
|
attributes: {
|
||||||
title: 'My other favorite vis',
|
title: 'My other favorite vis',
|
||||||
|
@ -551,7 +554,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
anotherCustomVisId = resp.body.id;
|
anotherCustomVisId = resp.body.id;
|
||||||
});
|
});
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_export')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_export`)
|
||||||
.send({
|
.send({
|
||||||
type: ['dashboard', 'visualization', 'search', 'index-pattern'],
|
type: ['dashboard', 'visualization', 'search', 'index-pattern'],
|
||||||
excludeExportDetails: true,
|
excludeExportDetails: true,
|
||||||
|
@ -566,31 +569,9 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
await supertest
|
await supertest
|
||||||
// @ts-expect-error TS complains about using `anotherCustomVisId` before it is assigned
|
// @ts-expect-error TS complains about using `anotherCustomVisId` before it is assigned
|
||||||
.delete(`/api/saved_objects/visualization/${anotherCustomVisId}`)
|
.delete(`/s/${SPACE_ID}/api/saved_objects/visualization/${anotherCustomVisId}`)
|
||||||
.expect(200);
|
.expect(200);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return empty response', async () => {
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_export')
|
|
||||||
.send({
|
|
||||||
type: ['index-pattern', 'search', 'visualization', 'dashboard'],
|
|
||||||
excludeExportDetails: true,
|
|
||||||
})
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.text).to.eql('');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,21 +12,34 @@ import { SavedObject } from '../../../../src/core/server';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
const SPACE_ID = 'ftr-so-find';
|
||||||
|
|
||||||
describe('find', () => {
|
describe('find', () => {
|
||||||
describe('with kibana index', () => {
|
before(async () => {
|
||||||
before(() =>
|
await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_ID });
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
);
|
);
|
||||||
after(() =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.spaces.create({ id: `${SPACE_ID}-foo`, name: `${SPACE_ID}-foo` });
|
||||||
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic/foo-ns.json',
|
||||||
|
{
|
||||||
|
space: `${SPACE_ID}-foo`,
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
after(async () => {
|
||||||
|
await kibanaServer.spaces.delete(SPACE_ID);
|
||||||
|
await kibanaServer.spaces.delete(`${SPACE_ID}-foo`);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200 with individual responses', async () =>
|
it('should return 200 with individual responses', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=visualization&fields=title')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&fields=title`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body.saved_objects.map((so: { id: string }) => so.id)).to.eql([
|
expect(resp.body.saved_objects.map((so: { id: string }) => so.id)).to.eql([
|
||||||
|
@ -38,7 +51,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
describe('unknown type', () => {
|
describe('unknown type', () => {
|
||||||
it('should return 200 with empty response', async () =>
|
it('should return 200 with empty response', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=wigwags')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find?type=wigwags`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
|
@ -54,7 +67,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
describe.skip('page beyond total', () => {
|
describe.skip('page beyond total', () => {
|
||||||
it('should return 200 with empty response', async () =>
|
it('should return 200 with empty response', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=visualization&page=100&per_page=100')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&page=100&per_page=100`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
|
@ -69,7 +82,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
describe('unknown search field', () => {
|
describe('unknown search field', () => {
|
||||||
it('should return 200 with empty response', async () =>
|
it('should return 200 with empty response', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=url&search_fields=a')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find?type=url&search_fields=a`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
|
@ -84,7 +97,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
describe('unknown namespace', () => {
|
describe('unknown namespace', () => {
|
||||||
it('should return 200 with empty response', async () =>
|
it('should return 200 with empty response', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=visualization&namespaces=foo')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&namespaces=foo`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
|
@ -99,7 +112,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
describe('known namespace', () => {
|
describe('known namespace', () => {
|
||||||
it('should return 200 with individual responses', async () =>
|
it('should return 200 with individual responses', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=visualization&fields=title&namespaces=default')
|
.get(`/api/saved_objects/_find?type=visualization&fields=title&namespaces=${SPACE_ID}`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(
|
expect(
|
||||||
|
@ -107,7 +120,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
id: so.id,
|
id: so.id,
|
||||||
namespaces: so.namespaces,
|
namespaces: so.namespaces,
|
||||||
}))
|
}))
|
||||||
).to.eql([{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: ['default'] }]);
|
).to.eql([{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: [SPACE_ID] }]);
|
||||||
expect(resp.body.saved_objects[0].migrationVersion).to.be.ok();
|
expect(resp.body.saved_objects[0].migrationVersion).to.be.ok();
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
@ -115,17 +128,21 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
describe('wildcard namespace', () => {
|
describe('wildcard namespace', () => {
|
||||||
it('should return 200 with individual responses from the all namespaces', async () =>
|
it('should return 200 with individual responses from the all namespaces', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find?type=visualization&fields=title&namespaces=*')
|
.get(`/api/saved_objects/_find?type=visualization&fields=title&namespaces=*`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
const knownDocuments = resp.body.saved_objects.filter((so: { namespaces: string[] }) =>
|
||||||
|
so.namespaces.some((ns) => [SPACE_ID, `${SPACE_ID}-foo`].includes(ns))
|
||||||
|
);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
resp.body.saved_objects.map((so: { id: string; namespaces: string[] }) => ({
|
knownDocuments.map((so: { id: string; namespaces: string[] }) => ({
|
||||||
id: so.id,
|
id: so.id,
|
||||||
namespaces: so.namespaces,
|
namespaces: so.namespaces,
|
||||||
}))
|
}))
|
||||||
).to.eql([
|
).to.eql([
|
||||||
{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: ['default'] },
|
{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: [SPACE_ID] },
|
||||||
{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: ['foo-ns'] },
|
{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: [`${SPACE_ID}-foo`] },
|
||||||
]);
|
]);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
@ -134,7 +151,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('should return 200 with a valid response', async () =>
|
it('should return 200 with a valid response', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(
|
.get(
|
||||||
'/api/saved_objects/_find?type=visualization&filter=visualization.attributes.title:"Count of requests"'
|
`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&filter=visualization.attributes.title:"Count of requests"`
|
||||||
)
|
)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
@ -146,7 +163,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('wrong type should return 400 with Bad Request', async () =>
|
it('wrong type should return 400 with Bad Request', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(
|
.get(
|
||||||
'/api/saved_objects/_find?type=visualization&filter=dashboard.attributes.title:foo'
|
`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&filter=dashboard.attributes.title:foo`
|
||||||
)
|
)
|
||||||
.expect(400)
|
.expect(400)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
@ -160,7 +177,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('KQL syntax error should return 400 with Bad Request', async () =>
|
it('KQL syntax error should return 400 with Bad Request', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(
|
.get(
|
||||||
'/api/saved_objects/_find?type=dashboard&filter=dashboard.attributes.title:foo<invalid'
|
`/s/${SPACE_ID}/api/saved_objects/_find?type=dashboard&filter=dashboard.attributes.title:foo<invalid`
|
||||||
)
|
)
|
||||||
.expect(400)
|
.expect(400)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
@ -178,7 +195,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('should return 200 with valid response for a valid aggregation', async () =>
|
it('should return 200 with valid response for a valid aggregation', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(
|
.get(
|
||||||
`/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent(
|
`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
type_count: { max: { field: 'visualization.attributes.version' } },
|
type_count: { max: { field: 'visualization.attributes.version' } },
|
||||||
})
|
})
|
||||||
|
@ -202,7 +219,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('should return a 400 when referencing an invalid SO attribute', async () =>
|
it('should return a 400 when referencing an invalid SO attribute', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(
|
.get(
|
||||||
`/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent(
|
`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
type_count: { max: { field: 'dashboard.attributes.version' } },
|
type_count: { max: { field: 'dashboard.attributes.version' } },
|
||||||
})
|
})
|
||||||
|
@ -221,7 +238,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
it('should return a 400 when using a forbidden aggregation option', async () =>
|
it('should return a 400 when using a forbidden aggregation option', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(
|
.get(
|
||||||
`/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent(
|
`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
type_count: {
|
type_count: {
|
||||||
max: {
|
max: {
|
||||||
|
@ -244,16 +261,22 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('`has_reference` and `has_reference_operator` parameters', () => {
|
describe('`has_reference` and `has_reference_operator` parameters', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/references')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/references.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/references')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/references.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('search for a reference', async () => {
|
it('search for a reference', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
has_reference: JSON.stringify({ type: 'ref-type', id: 'ref-1' }),
|
has_reference: JSON.stringify({ type: 'ref-type', id: 'ref-1' }),
|
||||||
|
@ -270,7 +293,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('search for multiple references with OR operator', async () => {
|
it('search for multiple references with OR operator', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
has_reference: JSON.stringify([
|
has_reference: JSON.stringify([
|
||||||
|
@ -284,15 +307,15 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
const objects = resp.body.saved_objects;
|
const objects = resp.body.saved_objects;
|
||||||
expect(objects.map((obj: SavedObject) => obj.id)).to.eql([
|
expect(objects.map((obj: SavedObject) => obj.id)).to.eql([
|
||||||
'only-ref-1',
|
'only-ref-1',
|
||||||
'ref-1-and-ref-2',
|
|
||||||
'only-ref-2',
|
'only-ref-2',
|
||||||
|
'ref-1-and-ref-2',
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('search for multiple references with AND operator', async () => {
|
it('search for multiple references with AND operator', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
has_reference: JSON.stringify([
|
has_reference: JSON.stringify([
|
||||||
|
@ -308,19 +331,24 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
describe('searching for special characters', () => {
|
describe('searching for special characters', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/find_edgecases.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/find_edgecases.json',
|
||||||
|
{ space: SPACE_ID }
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('can search for objects with dashes', async () =>
|
it('can search for objects with dashes', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
search_fields: 'title',
|
search_fields: 'title',
|
||||||
|
@ -336,7 +364,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('can search with the prefix search character just after a special one', async () =>
|
it('can search with the prefix search character just after a special one', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
search_fields: 'title',
|
search_fields: 'title',
|
||||||
|
@ -352,7 +380,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('can search for objects with asterisk', async () =>
|
it('can search for objects with asterisk', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
search_fields: 'title',
|
search_fields: 'title',
|
||||||
|
@ -368,7 +396,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('can still search tokens by prefix', async () =>
|
it('can still search tokens by prefix', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/_find')
|
.get(`/s/${SPACE_ID}/api/saved_objects/_find`)
|
||||||
.query({
|
.query({
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
search_fields: 'title',
|
search_fields: 'title',
|
||||||
|
@ -379,120 +407,8 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
const savedObjects = resp.body.saved_objects;
|
const savedObjects = resp.body.saved_objects;
|
||||||
expect(
|
expect(
|
||||||
savedObjects.map((so: SavedObject<{ title: string }>) => so.attributes.title)
|
savedObjects.map((so: SavedObject<{ title: string }>) => so.attributes.title)
|
||||||
).to.eql(['my-visualization', 'some*visualization']);
|
).to.eql(['some*visualization', 'my-visualization']);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/_find?type=visualization')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 1,
|
|
||||||
per_page: 20,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('unknown type', () => {
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/_find?type=wigwags')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 1,
|
|
||||||
per_page: 20,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('missing type', () => {
|
|
||||||
it('should return 400', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/_find')
|
|
||||||
.expect(400)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
error: 'Bad Request',
|
|
||||||
message:
|
|
||||||
'[request query.type]: expected at least one defined value but got [undefined]',
|
|
||||||
statusCode: 400,
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('page beyond total', () => {
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/_find?type=visualization&page=100&per_page=100')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 100,
|
|
||||||
per_page: 100,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('unknown search field', () => {
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/_find?type=url&search_fields=a')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 1,
|
|
||||||
per_page: 20,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('with a filter', () => {
|
|
||||||
it('should return 200 with an empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get(
|
|
||||||
'/api/saved_objects/_find?type=visualization&filter=visualization.attributes.title:"Count of requests"'
|
|
||||||
)
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 1,
|
|
||||||
per_page: 20,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('wrong type should return 400 with Bad Request', async () =>
|
|
||||||
await supertest
|
|
||||||
.get(
|
|
||||||
'/api/saved_objects/_find?type=visualization&filter=dashboard.attributes.title:foo'
|
|
||||||
)
|
|
||||||
.expect(400)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
error: 'Bad Request',
|
|
||||||
message: 'This type dashboard is not allowed: Bad Request',
|
|
||||||
statusCode: 400,
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,23 +12,22 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('get', () => {
|
describe('get', () => {
|
||||||
let KIBANA_VERSION: string;
|
let KIBANA_VERSION: string;
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
KIBANA_VERSION = await getKibanaVersion(getService);
|
KIBANA_VERSION = await getKibanaVersion(getService);
|
||||||
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
after(async () => {
|
||||||
describe('with kibana index', () => {
|
await kibanaServer.importExport.unload(
|
||||||
before(() =>
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
after(() =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200', async () =>
|
it('should return 200', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -38,7 +37,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
updated_at: '2017-09-21T18:51:23.794Z',
|
updated_at: resp.body.updated_at,
|
||||||
version: resp.body.version,
|
version: resp.body.version,
|
||||||
migrationVersion: resp.body.migrationVersion,
|
migrationVersion: resp.body.migrationVersion,
|
||||||
coreMigrationVersion: KIBANA_VERSION,
|
coreMigrationVersion: KIBANA_VERSION,
|
||||||
|
@ -77,26 +76,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return basic 404 without mentioning index', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab')
|
|
||||||
.expect(404)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
error: 'Not Found',
|
|
||||||
message:
|
|
||||||
'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] not found',
|
|
||||||
statusCode: 404,
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ const createConflictError = (
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
|
|
||||||
describe('import', () => {
|
describe('import', () => {
|
||||||
// mock success results including metadata
|
// mock success results including metadata
|
||||||
|
@ -42,14 +42,17 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
meta: { title: 'Requests', icon: 'dashboardApp' },
|
meta: { title: 'Requests', icon: 'dashboardApp' },
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
|
||||||
describe('with basic data existing', () => {
|
describe('with basic data existing', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 415 when no file passed in', async () => {
|
it('should return 415 when no file passed in', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -241,5 +244,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,7 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('resolve', () => {
|
describe('resolve', () => {
|
||||||
let KIBANA_VERSION: string;
|
let KIBANA_VERSION: string;
|
||||||
|
@ -23,23 +22,29 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
describe('with kibana index', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200', async () =>
|
it('should return 200', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
.get(`/api/saved_objects/resolve/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`)
|
.get(`/api/saved_objects/resolve/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
|
resp.body.saved_object.updated_at = '2015-01-01T00:00:00.000Z';
|
||||||
|
|
||||||
expect(resp.body).to.eql({
|
expect(resp.body).to.eql({
|
||||||
saved_object: {
|
saved_object: {
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
||||||
type: 'visualization',
|
type: 'visualization',
|
||||||
updated_at: '2017-09-21T18:51:23.794Z',
|
updated_at: '2015-01-01T00:00:00.000Z',
|
||||||
version: resp.body.saved_object.version,
|
version: resp.body.saved_object.version,
|
||||||
migrationVersion: resp.body.saved_object.migrationVersion,
|
migrationVersion: resp.body.saved_object.migrationVersion,
|
||||||
coreMigrationVersion: KIBANA_VERSION,
|
coreMigrationVersion: KIBANA_VERSION,
|
||||||
|
@ -80,26 +85,5 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return basic 404 without mentioning index', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/saved_objects/resolve/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab')
|
|
||||||
.expect(404)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
error: 'Not Found',
|
|
||||||
message:
|
|
||||||
'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] not found',
|
|
||||||
statusCode: 404,
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,7 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('resolve_import_errors', () => {
|
describe('resolve_import_errors', () => {
|
||||||
// mock success results including metadata
|
// mock success results including metadata
|
||||||
|
@ -32,228 +31,21 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
id: 'be3733a0-9efe-11e7-acb3-3dab96693fab',
|
id: 'be3733a0-9efe-11e7-acb3-3dab96693fab',
|
||||||
meta: { title: 'Requests', icon: 'dashboardApp' },
|
meta: { title: 'Requests', icon: 'dashboardApp' },
|
||||||
};
|
};
|
||||||
|
const SPACE_ID = 'ftr-so-resolve_import_errors';
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
// Cleanup data that got created in import
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 and import nothing when empty parameters are passed in', async () => {
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
|
||||||
.field('retries', '[]')
|
|
||||||
.attach('file', join(__dirname, '../../fixtures/import.ndjson'))
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
success: true,
|
|
||||||
successCount: 0,
|
|
||||||
warnings: [],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return 200 with internal server errors', async () => {
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
|
||||||
.field(
|
|
||||||
'retries',
|
|
||||||
JSON.stringify([
|
|
||||||
{
|
|
||||||
type: 'index-pattern',
|
|
||||||
id: '91200a00-9efd-11e7-acb3-3dab96693fab',
|
|
||||||
overwrite: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'visualization',
|
|
||||||
id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab',
|
|
||||||
overwrite: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'dashboard',
|
|
||||||
id: 'be3733a0-9efe-11e7-acb3-3dab96693fab',
|
|
||||||
overwrite: true,
|
|
||||||
},
|
|
||||||
])
|
|
||||||
)
|
|
||||||
.attach('file', join(__dirname, '../../fixtures/import.ndjson'))
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
successCount: 0,
|
|
||||||
success: false,
|
|
||||||
errors: [
|
|
||||||
{
|
|
||||||
...indexPattern,
|
|
||||||
...{ title: indexPattern.meta.title },
|
|
||||||
overwrite: true,
|
|
||||||
error: {
|
|
||||||
statusCode: 500,
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
type: 'unknown',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
...visualization,
|
|
||||||
...{ title: visualization.meta.title },
|
|
||||||
overwrite: true,
|
|
||||||
error: {
|
|
||||||
statusCode: 500,
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
type: 'unknown',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
...dashboard,
|
|
||||||
...{ title: dashboard.meta.title },
|
|
||||||
overwrite: true,
|
|
||||||
error: {
|
|
||||||
statusCode: 500,
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred',
|
|
||||||
type: 'unknown',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
warnings: [],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return 400 when no file passed in', async () => {
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
|
||||||
.field('retries', '[]')
|
|
||||||
.expect(400)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
statusCode: 400,
|
|
||||||
error: 'Bad Request',
|
|
||||||
message: '[request body.file]: expected value of type [Stream] but got [undefined]',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return 200 when retrying unsupported types', async () => {
|
|
||||||
const fileBuffer = Buffer.from(
|
|
||||||
'{"id":"1","type":"wigwags","attributes":{"title":"my title"},"references":[]}',
|
|
||||||
'utf8'
|
|
||||||
);
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
|
||||||
.field('retries', JSON.stringify([{ type: 'wigwags', id: '1' }]))
|
|
||||||
.attach('file', fileBuffer, 'export.ndjson')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
success: false,
|
|
||||||
successCount: 0,
|
|
||||||
errors: [
|
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
type: 'wigwags',
|
|
||||||
title: 'my title',
|
|
||||||
meta: { title: 'my title' },
|
|
||||||
error: { type: 'unsupported_type' },
|
|
||||||
},
|
|
||||||
],
|
|
||||||
warnings: [],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return 400 when resolving conflicts with a file containing more than 10,001 objects', async () => {
|
|
||||||
const fileChunks = [];
|
|
||||||
for (let i = 0; i <= 10001; i++) {
|
|
||||||
fileChunks.push(`{"type":"visualization","id":"${i}","attributes":{},"references":[]}`);
|
|
||||||
}
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
|
||||||
.field('retries', '[]')
|
|
||||||
.attach('file', Buffer.from(fileChunks.join('\n'), 'utf8'), 'export.ndjson')
|
|
||||||
.expect(400)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
statusCode: 400,
|
|
||||||
error: 'Bad Request',
|
|
||||||
message: "Can't import more than 10001 objects",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return 200 with errors when missing references', async () => {
|
|
||||||
const objToInsert = {
|
|
||||||
id: '1',
|
|
||||||
type: 'visualization',
|
|
||||||
attributes: {
|
|
||||||
title: 'My favorite vis',
|
|
||||||
visState: '{}',
|
|
||||||
},
|
|
||||||
references: [
|
|
||||||
{
|
|
||||||
name: 'ref_0',
|
|
||||||
type: 'index-pattern',
|
|
||||||
id: '2',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
|
||||||
.field(
|
|
||||||
'retries',
|
|
||||||
JSON.stringify([
|
|
||||||
{
|
|
||||||
type: 'visualization',
|
|
||||||
id: '1',
|
|
||||||
},
|
|
||||||
])
|
|
||||||
)
|
|
||||||
.attach('file', Buffer.from(JSON.stringify(objToInsert), 'utf8'), 'export.ndjson')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
success: false,
|
|
||||||
successCount: 0,
|
|
||||||
errors: [
|
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
type: 'visualization',
|
|
||||||
title: 'My favorite vis',
|
|
||||||
meta: { title: 'My favorite vis', icon: 'visualizeApp' },
|
|
||||||
error: {
|
|
||||||
type: 'missing_references',
|
|
||||||
references: [
|
|
||||||
{
|
|
||||||
type: 'index-pattern',
|
|
||||||
id: '2',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
warnings: [],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
|
||||||
describe('with basic data existing', () => {
|
describe('with basic data existing', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_ID });
|
||||||
);
|
await kibanaServer.importExport.load(
|
||||||
after(() =>
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json',
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
{ space: SPACE_ID }
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
after(() => kibanaServer.spaces.delete(SPACE_ID));
|
||||||
|
|
||||||
it('should return 200 when skipping all the records', async () => {
|
it('should return 200 when skipping all the records', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`)
|
||||||
.field('retries', '[]')
|
.field('retries', '[]')
|
||||||
.attach('file', join(__dirname, '../../fixtures/import.ndjson'))
|
.attach('file', join(__dirname, '../../fixtures/import.ndjson'))
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
@ -264,7 +56,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should return 200 when manually overwriting each object', async () => {
|
it('should return 200 when manually overwriting each object', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`)
|
||||||
.field(
|
.field(
|
||||||
'retries',
|
'retries',
|
||||||
JSON.stringify([
|
JSON.stringify([
|
||||||
|
@ -303,7 +95,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
it('should return 200 with only one record when overwriting 1 and skipping 1', async () => {
|
it('should return 200 with only one record when overwriting 1 and skipping 1', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`)
|
||||||
.field(
|
.field(
|
||||||
'retries',
|
'retries',
|
||||||
JSON.stringify([
|
JSON.stringify([
|
||||||
|
@ -343,7 +135,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
await supertest
|
await supertest
|
||||||
.post('/api/saved_objects/_resolve_import_errors')
|
.post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`)
|
||||||
.field(
|
.field(
|
||||||
'retries',
|
'retries',
|
||||||
JSON.stringify([
|
JSON.stringify([
|
||||||
|
@ -377,7 +169,7 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
await supertest
|
await supertest
|
||||||
.get('/api/saved_objects/visualization/1')
|
.get(`/s/${SPACE_ID}/api/saved_objects/visualization/1`)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
expect(resp.body.references).to.eql([
|
expect(resp.body.references).to.eql([
|
||||||
|
@ -391,5 +183,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,19 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
|
|
||||||
describe('update', () => {
|
describe('update', () => {
|
||||||
describe('with kibana index', () => {
|
before(async () => {
|
||||||
before(() =>
|
await kibanaServer.importExport.load(
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
it('should return 200', async () => {
|
it('should return 200', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
.put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`)
|
.put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`)
|
||||||
|
@ -166,30 +168,4 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 500', async () =>
|
|
||||||
await supertest
|
|
||||||
.put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`)
|
|
||||||
.send({
|
|
||||||
attributes: {
|
|
||||||
title: 'My second favorite vis',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.expect(500)
|
|
||||||
.then((resp) => {
|
|
||||||
expect(resp.body).eql({
|
|
||||||
statusCode: 500,
|
|
||||||
error: 'Internal Server Error',
|
|
||||||
message: 'An internal server error occurred.',
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@ import { Response } from 'supertest';
|
||||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const esArchiver = getService('esArchiver');
|
||||||
const kibanaServer = getService('kibanaServer');
|
const kibanaServer = getService('kibanaServer');
|
||||||
|
@ -26,12 +25,16 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
describe('with kibana index', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200 with individual responses', async () =>
|
it('should return 200 with individual responses', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -90,12 +93,16 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('`hasReference` and `hasReferenceOperator` parameters', () => {
|
describe('`hasReference` and `hasReferenceOperator` parameters', () => {
|
||||||
before(() =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/references')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/references.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/references')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/references.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('search for a reference', async () => {
|
it('search for a reference', async () => {
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -127,8 +134,8 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
const objects = resp.body.saved_objects;
|
const objects = resp.body.saved_objects;
|
||||||
expect(objects.map((obj: any) => obj.id)).to.eql([
|
expect(objects.map((obj: any) => obj.id)).to.eql([
|
||||||
'only-ref-1',
|
'only-ref-1',
|
||||||
'ref-1-and-ref-2',
|
|
||||||
'only-ref-2',
|
'only-ref-2',
|
||||||
|
'ref-1-and-ref-2',
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -153,88 +160,6 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/kibana/management/saved_objects/_find?type=visualization')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp: Response) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 1,
|
|
||||||
per_page: 20,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('unknown type', () => {
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/kibana/management/saved_objects/_find?type=wigwags')
|
|
||||||
.expect(200)
|
|
||||||
.then((resp: Response) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 1,
|
|
||||||
per_page: 20,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('missing type', () => {
|
|
||||||
it('should return 400', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/kibana/management/saved_objects/_find')
|
|
||||||
.expect(400)
|
|
||||||
.then((resp: Response) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
error: 'Bad Request',
|
|
||||||
message:
|
|
||||||
'[request query.type]: expected at least one defined value but got [undefined]',
|
|
||||||
statusCode: 400,
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('page beyond total', () => {
|
|
||||||
it('should return 200 with empty response', async () =>
|
|
||||||
await supertest
|
|
||||||
.get(
|
|
||||||
'/api/kibana/management/saved_objects/_find?type=visualization&page=100&perPage=100'
|
|
||||||
)
|
|
||||||
.expect(200)
|
|
||||||
.then((resp: Response) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
page: 100,
|
|
||||||
per_page: 100,
|
|
||||||
total: 0,
|
|
||||||
saved_objects: [],
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('unknown search field', () => {
|
|
||||||
it('should return 400 when using searchFields', async () =>
|
|
||||||
await supertest
|
|
||||||
.get('/api/kibana/management/saved_objects/_find?type=url&searchFields=a')
|
|
||||||
.expect(400)
|
|
||||||
.then((resp: Response) => {
|
|
||||||
expect(resp.body).to.eql({
|
|
||||||
statusCode: 400,
|
|
||||||
error: 'Bad Request',
|
|
||||||
message: '[request query.searchFields]: definition for this key is missing',
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('meta attributes injected properly', () => {
|
describe('meta attributes injected properly', () => {
|
||||||
before(() =>
|
before(() =>
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/management/saved_objects/search')
|
esArchiver.load('test/api_integration/fixtures/es_archiver/management/saved_objects/search')
|
||||||
|
|
|
@ -11,21 +11,23 @@ import { Response } from 'supertest';
|
||||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const esDeleteAllIndices = getService('esDeleteAllIndices');
|
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
|
|
||||||
describe('get', () => {
|
describe('get', () => {
|
||||||
const existingObject = 'visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab';
|
const existingObject = 'visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab';
|
||||||
const nonexistentObject = 'wigwags/foo';
|
const nonexistentObject = 'wigwags/foo';
|
||||||
|
|
||||||
describe('with kibana index', () => {
|
before(async () => {
|
||||||
before(() =>
|
await kibanaServer.importExport.load(
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after(() =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should return 200 for object that exists and inject metadata', async () =>
|
it('should return 200 for object that exists and inject metadata', async () =>
|
||||||
await supertest
|
await supertest
|
||||||
|
@ -40,20 +42,6 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should return 404 for object that does not exist', async () =>
|
it('should return 404 for object that does not exist', async () =>
|
||||||
await supertest
|
await supertest.get(`/api/kibana/management/saved_objects/${nonexistentObject}`).expect(404));
|
||||||
.get(`/api/kibana/management/saved_objects/${nonexistentObject}`)
|
|
||||||
.expect(404));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('without kibana index', () => {
|
|
||||||
before(
|
|
||||||
async () =>
|
|
||||||
// just in case the kibana server has recreated it
|
|
||||||
await esDeleteAllIndices('.kibana*')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('should return 404 for object that no longer exists', async () =>
|
|
||||||
await supertest.get(`/api/kibana/management/saved_objects/${existingObject}`).expect(404));
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
export default function ({ getService }: FtrProviderContext) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
|
|
||||||
const relationSchema = schema.object({
|
const relationSchema = schema.object({
|
||||||
id: schema.string(),
|
id: schema.string(),
|
||||||
|
@ -44,13 +44,13 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
|
|
||||||
describe('relationships', () => {
|
describe('relationships', () => {
|
||||||
before(async () => {
|
before(async () => {
|
||||||
await esArchiver.load(
|
await kibanaServer.importExport.load(
|
||||||
'test/api_integration/fixtures/es_archiver/management/saved_objects/relationships'
|
'test/api_integration/fixtures/kbn_archiver/management/saved_objects/relationships.json'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
after(async () => {
|
after(async () => {
|
||||||
await esArchiver.unload(
|
await kibanaServer.importExport.unload(
|
||||||
'test/api_integration/fixtures/es_archiver/management/saved_objects/relationships'
|
'test/api_integration/fixtures/kbn_archiver/management/saved_objects/relationships.json'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -99,26 +99,6 @@ export default function ({ getService }: FtrProviderContext) {
|
||||||
expect(resp.body.message).to.contain('banana not found');
|
expect(resp.body.message).to.contain('banana not found');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return 400 when index type is provided in OSS', async () => {
|
|
||||||
const resp = await supertest
|
|
||||||
.post(`/internal/search/es`)
|
|
||||||
.send({
|
|
||||||
indexType: 'baad',
|
|
||||||
params: {
|
|
||||||
body: {
|
|
||||||
query: {
|
|
||||||
match_all: {},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.expect(400);
|
|
||||||
|
|
||||||
verifyErrorResponse(resp.body, 400);
|
|
||||||
|
|
||||||
expect(resp.body.message).to.contain('Unsupported index pattern');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return 400 with illegal ES argument', async () => {
|
it('should return 400 with illegal ES argument', async () => {
|
||||||
const resp = await supertest
|
const resp = await supertest
|
||||||
.post(`/internal/search/es`)
|
.post(`/internal/search/es`)
|
||||||
|
|
|
@ -9,12 +9,20 @@
|
||||||
import expect from '@kbn/expect';
|
import expect from '@kbn/expect';
|
||||||
|
|
||||||
export default function ({ getService }) {
|
export default function ({ getService }) {
|
||||||
const esArchiver = getService('esArchiver');
|
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
|
const kibanaServer = getService('kibanaServer');
|
||||||
|
|
||||||
describe('url shortener', () => {
|
describe('url shortener', () => {
|
||||||
before(() => esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic'));
|
before(async () => {
|
||||||
after(() => esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic'));
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('generates shortened urls', async () => {
|
it('generates shortened urls', async () => {
|
||||||
const resp = await supertest
|
const resp = await supertest
|
||||||
|
|
|
@ -44,15 +44,19 @@ const assertStatsAndMetrics = (body) => {
|
||||||
|
|
||||||
export default function ({ getService }) {
|
export default function ({ getService }) {
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
const kibanaServer = getService('kibanaServer');
|
||||||
|
|
||||||
describe('kibana stats api', () => {
|
describe('kibana stats api', () => {
|
||||||
before('make sure there are some saved objects', () =>
|
before(async () => {
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
await kibanaServer.importExport.load(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
after('cleanup saved objects changes', () =>
|
});
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
after(async () => {
|
||||||
|
await kibanaServer.importExport.unload(
|
||||||
|
'test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json'
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
describe('basic', () => {
|
describe('basic', () => {
|
||||||
it('should return the stats without cluster_uuid with no query string params', () => {
|
it('should return the stats without cluster_uuid with no query string params', () => {
|
||||||
|
|
|
@ -8,21 +8,22 @@
|
||||||
|
|
||||||
export default function ({ getService }) {
|
export default function ({ getService }) {
|
||||||
const esArchiver = getService('esArchiver');
|
const esArchiver = getService('esArchiver');
|
||||||
|
const kibanaServer = getService('kibanaServer');
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
|
|
||||||
describe('Suggestions API', function () {
|
describe('Suggestions API', function () {
|
||||||
before(async () => {
|
before(async () => {
|
||||||
await esArchiver.load('test/api_integration/fixtures/es_archiver/index_patterns/basic_index');
|
await esArchiver.load('test/api_integration/fixtures/es_archiver/index_patterns/basic_index');
|
||||||
await esArchiver.load(
|
await kibanaServer.importExport.load(
|
||||||
'test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana'
|
'test/api_integration/fixtures/kbn_archiver/index_patterns/basic_kibana.json'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
after(async () => {
|
after(async () => {
|
||||||
await esArchiver.unload(
|
await esArchiver.unload(
|
||||||
'test/api_integration/fixtures/es_archiver/index_patterns/basic_index'
|
'test/api_integration/fixtures/es_archiver/index_patterns/basic_index'
|
||||||
);
|
);
|
||||||
await esArchiver.unload(
|
await kibanaServer.importExport.unload(
|
||||||
'test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana'
|
'test/api_integration/fixtures/kbn_archiver/index_patterns/basic_kibana.json'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
export default function ({ loadTestFile }) {
|
export default function ({ loadTestFile }) {
|
||||||
describe('Telemetry', () => {
|
describe('Telemetry', () => {
|
||||||
loadTestFile(require.resolve('./telemetry_local'));
|
|
||||||
loadTestFile(require.resolve('./opt_in'));
|
loadTestFile(require.resolve('./opt_in'));
|
||||||
loadTestFile(require.resolve('./telemetry_optin_notice_seen'));
|
loadTestFile(require.resolve('./telemetry_optin_notice_seen'));
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,339 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
||||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
||||||
* Side Public License, v 1.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import expect from '@kbn/expect';
|
|
||||||
import supertestAsPromised from 'supertest-as-promised';
|
|
||||||
import { omit } from 'lodash';
|
|
||||||
import { basicUiCounters } from './__fixtures__/ui_counters';
|
|
||||||
import { basicUsageCounters } from './__fixtures__/usage_counters';
|
|
||||||
import type { FtrProviderContext } from '../../ftr_provider_context';
|
|
||||||
import type { SavedObject } from '../../../../src/core/server';
|
|
||||||
import ossRootTelemetrySchema from '../../../../src/plugins/telemetry/schema/oss_root.json';
|
|
||||||
import ossPluginsTelemetrySchema from '../../../../src/plugins/telemetry/schema/oss_plugins.json';
|
|
||||||
import { assertTelemetryPayload, flatKeys } from './utils';
|
|
||||||
|
|
||||||
async function retrieveTelemetry(
|
|
||||||
supertest: supertestAsPromised.SuperTest<supertestAsPromised.Test>
|
|
||||||
) {
|
|
||||||
const { body } = await supertest
|
|
||||||
.post('/api/telemetry/v2/clusters/_stats')
|
|
||||||
.set('kbn-xsrf', 'xxx')
|
|
||||||
.send({ unencrypted: true })
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
expect(body.length).to.be(1);
|
|
||||||
return body[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function ({ getService }: FtrProviderContext) {
|
|
||||||
const supertest = getService('supertest');
|
|
||||||
const es = getService('es');
|
|
||||||
const esArchiver = getService('esArchiver');
|
|
||||||
|
|
||||||
describe('/api/telemetry/v2/clusters/_stats', () => {
|
|
||||||
before('make sure there are some saved objects', () =>
|
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
after('cleanup saved objects changes', () =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/basic')
|
|
||||||
);
|
|
||||||
|
|
||||||
before('create some telemetry-data tracked indices', async () => {
|
|
||||||
await es.indices.create({ index: 'filebeat-telemetry_tests_logs' });
|
|
||||||
});
|
|
||||||
|
|
||||||
after('cleanup telemetry-data tracked indices', async () => {
|
|
||||||
await es.indices.delete({ index: 'filebeat-telemetry_tests_logs' });
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('validate data types', () => {
|
|
||||||
let stats: Record<string, any>;
|
|
||||||
|
|
||||||
before('pull local stats', async () => {
|
|
||||||
stats = await retrieveTelemetry(supertest);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should pass the schema validation', () => {
|
|
||||||
try {
|
|
||||||
assertTelemetryPayload(
|
|
||||||
{ root: ossRootTelemetrySchema, plugins: ossPluginsTelemetrySchema },
|
|
||||||
stats
|
|
||||||
);
|
|
||||||
} catch (err) {
|
|
||||||
err.message = `The telemetry schemas in 'src/plugins/telemetry/schema/' are out-of-date, please update it as required: ${err.message}`;
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should pass ad-hoc enforced validations', () => {
|
|
||||||
expect(stats.collection).to.be('local');
|
|
||||||
expect(stats.collectionSource).to.be('local');
|
|
||||||
expect(stats.license).to.be(undefined); // OSS cannot get the license
|
|
||||||
expect(stats.stack_stats.kibana.count).to.be.a('number');
|
|
||||||
expect(stats.stack_stats.kibana.indices).to.be.a('number');
|
|
||||||
expect(stats.stack_stats.kibana.os.platforms[0].platform).to.be.a('string');
|
|
||||||
expect(stats.stack_stats.kibana.os.platforms[0].count).to.be(1);
|
|
||||||
expect(stats.stack_stats.kibana.os.platformReleases[0].platformRelease).to.be.a('string');
|
|
||||||
expect(stats.stack_stats.kibana.os.platformReleases[0].count).to.be(1);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.telemetry.opt_in_status).to.be(false);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.telemetry.usage_fetcher).to.be.a('string');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.stack_management).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.ui_metric).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.ui_counters).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.application_usage).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.kql.defaultQueryLanguage).to.be.a('string');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.localization).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.csp.strict).to.be(false);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.csp.warnLegacyBrowsers).to.be(true);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.csp.rulesChangedFromDefault).to.be(false);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.kibana_config_usage).to.be.an('object');
|
|
||||||
// non-default kibana configs. Configs set at 'test/api_integration/config.js'.
|
|
||||||
expect(omit(stats.stack_stats.kibana.plugins.kibana_config_usage, 'server.port')).to.eql({
|
|
||||||
'elasticsearch.username': '[redacted]',
|
|
||||||
'elasticsearch.password': '[redacted]',
|
|
||||||
'elasticsearch.hosts': '[redacted]',
|
|
||||||
'elasticsearch.healthCheck.delay': 3600000,
|
|
||||||
'plugins.paths': '[redacted]',
|
|
||||||
'logging.json': false,
|
|
||||||
'server.xsrf.disableProtection': true,
|
|
||||||
'server.compression.referrerWhitelist': '[redacted]',
|
|
||||||
'server.maxPayload': 1679958,
|
|
||||||
'status.allowAnonymous': true,
|
|
||||||
'home.disableWelcomeScreen': true,
|
|
||||||
'data.search.aggs.shardDelay.enabled': true,
|
|
||||||
'security.showInsecureClusterWarning': false,
|
|
||||||
'telemetry.banner': false,
|
|
||||||
'telemetry.url': '[redacted]',
|
|
||||||
'telemetry.optInStatusUrl': '[redacted]',
|
|
||||||
'telemetry.optIn': false,
|
|
||||||
'newsfeed.service.urlRoot': '[redacted]',
|
|
||||||
'newsfeed.service.pathTemplate': '[redacted]',
|
|
||||||
'savedObjects.maxImportPayloadBytes': 10485760,
|
|
||||||
'savedObjects.maxImportExportSize': 10001,
|
|
||||||
'usageCollection.usageCounters.bufferDuration': 0,
|
|
||||||
});
|
|
||||||
expect(stats.stack_stats.kibana.plugins.kibana_config_usage['server.port']).to.be.a(
|
|
||||||
'number'
|
|
||||||
);
|
|
||||||
|
|
||||||
// Testing stack_stats.data
|
|
||||||
expect(stats.stack_stats.data).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.data).to.be.an('array');
|
|
||||||
expect(stats.stack_stats.data[0]).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.data[0].pattern_name).to.be('filebeat');
|
|
||||||
expect(stats.stack_stats.data[0].shipper).to.be('filebeat');
|
|
||||||
expect(stats.stack_stats.data[0].index_count).to.be(1);
|
|
||||||
expect(stats.stack_stats.data[0].doc_count).to.be(0);
|
|
||||||
expect(stats.stack_stats.data[0].ecs_index_count).to.be(0);
|
|
||||||
expect(stats.stack_stats.data[0].size_in_bytes).to.be.a('number');
|
|
||||||
|
|
||||||
expect(stats.stack_stats.kibana.plugins.saved_objects_counts).to.be.an('object');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.saved_objects_counts.by_type).to.be.an('array');
|
|
||||||
expect(stats.stack_stats.kibana.plugins.saved_objects_counts.by_type).to.eql([
|
|
||||||
{ type: 'config', count: 2 },
|
|
||||||
{ type: 'dashboard', count: 2 },
|
|
||||||
{ type: 'index-pattern', count: 2 },
|
|
||||||
{ type: 'visualization', count: 2 },
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should validate mandatory fields exist', () => {
|
|
||||||
const actual = flatKeys(stats);
|
|
||||||
expect(actual).to.be.an('array');
|
|
||||||
const expected = [
|
|
||||||
'cluster_name',
|
|
||||||
'cluster_stats.cluster_uuid',
|
|
||||||
'cluster_stats.indices.analysis',
|
|
||||||
'cluster_stats.indices.completion',
|
|
||||||
'cluster_stats.indices.count',
|
|
||||||
'cluster_stats.indices.docs',
|
|
||||||
'cluster_stats.indices.fielddata',
|
|
||||||
'cluster_stats.indices.mappings',
|
|
||||||
'cluster_stats.indices.query_cache',
|
|
||||||
'cluster_stats.indices.segments',
|
|
||||||
'cluster_stats.indices.shards',
|
|
||||||
'cluster_stats.indices.store',
|
|
||||||
'cluster_stats.nodes.count',
|
|
||||||
'cluster_stats.nodes.discovery_types',
|
|
||||||
'cluster_stats.nodes.fs',
|
|
||||||
'cluster_stats.nodes.ingest',
|
|
||||||
'cluster_stats.nodes.jvm',
|
|
||||||
'cluster_stats.nodes.network_types',
|
|
||||||
'cluster_stats.nodes.os',
|
|
||||||
'cluster_stats.nodes.packaging_types',
|
|
||||||
'cluster_stats.nodes.plugins',
|
|
||||||
'cluster_stats.nodes.process',
|
|
||||||
'cluster_stats.nodes.versions',
|
|
||||||
'cluster_stats.nodes.usage',
|
|
||||||
'cluster_stats.status',
|
|
||||||
'cluster_stats.timestamp',
|
|
||||||
'cluster_uuid',
|
|
||||||
'collection',
|
|
||||||
'collectionSource',
|
|
||||||
'stack_stats.kibana.count',
|
|
||||||
'stack_stats.kibana.indices',
|
|
||||||
'stack_stats.kibana.os',
|
|
||||||
'stack_stats.kibana.plugins',
|
|
||||||
'stack_stats.kibana.versions',
|
|
||||||
'timestamp',
|
|
||||||
'version',
|
|
||||||
];
|
|
||||||
|
|
||||||
expect(expected.every((m) => actual.includes(m))).to.be.ok();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('UI Counters telemetry', () => {
|
|
||||||
before('Add UI Counters saved objects', () =>
|
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/ui_counters')
|
|
||||||
);
|
|
||||||
after('cleanup saved objects changes', () =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/ui_counters')
|
|
||||||
);
|
|
||||||
it('returns ui counters aggregated by day', async () => {
|
|
||||||
const stats = await retrieveTelemetry(supertest);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.ui_counters).to.eql(basicUiCounters);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Usage Counters telemetry', () => {
|
|
||||||
before('Add UI Counters saved objects', () =>
|
|
||||||
esArchiver.load('test/api_integration/fixtures/es_archiver/saved_objects/usage_counters')
|
|
||||||
);
|
|
||||||
after('cleanup saved objects changes', () =>
|
|
||||||
esArchiver.unload('test/api_integration/fixtures/es_archiver/saved_objects/usage_counters')
|
|
||||||
);
|
|
||||||
|
|
||||||
it('returns usage counters aggregated by day', async () => {
|
|
||||||
const stats = await retrieveTelemetry(supertest);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.usage_counters).to.eql(basicUsageCounters);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('application usage limits', () => {
|
|
||||||
function createSavedObject(viewId?: string) {
|
|
||||||
return supertest
|
|
||||||
.post('/api/saved_objects/application_usage_daily')
|
|
||||||
.send({
|
|
||||||
attributes: {
|
|
||||||
appId: 'test-app',
|
|
||||||
viewId,
|
|
||||||
minutesOnScreen: 10.33,
|
|
||||||
numberOfClicks: 10,
|
|
||||||
timestamp: new Date().toISOString(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) => resp.body.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('basic behaviour', () => {
|
|
||||||
let savedObjectIds: string[] = [];
|
|
||||||
before('create application usage entries', async () => {
|
|
||||||
await esArchiver.emptyKibanaIndex();
|
|
||||||
savedObjectIds = await Promise.all([
|
|
||||||
createSavedObject(),
|
|
||||||
createSavedObject('appView1'),
|
|
||||||
createSavedObject(),
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
after('cleanup', async () => {
|
|
||||||
await Promise.all(
|
|
||||||
savedObjectIds.map((savedObjectId) => {
|
|
||||||
return supertest
|
|
||||||
.delete(`/api/saved_objects/application_usage_daily/${savedObjectId}`)
|
|
||||||
.expect(200);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return application_usage data', async () => {
|
|
||||||
const stats = await retrieveTelemetry(supertest);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.application_usage).to.eql({
|
|
||||||
'test-app': {
|
|
||||||
appId: 'test-app',
|
|
||||||
viewId: 'main',
|
|
||||||
clicks_total: 20,
|
|
||||||
clicks_7_days: 20,
|
|
||||||
clicks_30_days: 20,
|
|
||||||
clicks_90_days: 20,
|
|
||||||
minutes_on_screen_total: 20.66,
|
|
||||||
minutes_on_screen_7_days: 20.66,
|
|
||||||
minutes_on_screen_30_days: 20.66,
|
|
||||||
minutes_on_screen_90_days: 20.66,
|
|
||||||
views: [
|
|
||||||
{
|
|
||||||
appId: 'test-app',
|
|
||||||
viewId: 'appView1',
|
|
||||||
clicks_total: 10,
|
|
||||||
clicks_7_days: 10,
|
|
||||||
clicks_30_days: 10,
|
|
||||||
clicks_90_days: 10,
|
|
||||||
minutes_on_screen_total: 10.33,
|
|
||||||
minutes_on_screen_7_days: 10.33,
|
|
||||||
minutes_on_screen_30_days: 10.33,
|
|
||||||
minutes_on_screen_90_days: 10.33,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('10k + 1', () => {
|
|
||||||
const savedObjectIds = [];
|
|
||||||
before('create 10k + 1 entries for application usage', async () => {
|
|
||||||
await supertest
|
|
||||||
.post('/api/saved_objects/_bulk_create')
|
|
||||||
.send(
|
|
||||||
new Array(10001).fill(0).map(() => ({
|
|
||||||
type: 'application_usage_daily',
|
|
||||||
attributes: {
|
|
||||||
appId: 'test-app',
|
|
||||||
minutesOnScreen: 1,
|
|
||||||
numberOfClicks: 1,
|
|
||||||
timestamp: new Date().toISOString(),
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
)
|
|
||||||
.expect(200)
|
|
||||||
.then((resp) =>
|
|
||||||
resp.body.saved_objects.forEach(({ id }: SavedObject) => savedObjectIds.push(id))
|
|
||||||
);
|
|
||||||
});
|
|
||||||
after('clean them all', async () => {
|
|
||||||
// The SavedObjects API does not allow bulk deleting, and deleting one by one takes ages and the tests timeout
|
|
||||||
await es.deleteByQuery({
|
|
||||||
index: '.kibana',
|
|
||||||
body: { query: { term: { type: 'application_usage_daily' } } },
|
|
||||||
conflicts: 'proceed',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should only use the first 10k docs for the application_usage data (they'll be rolled up in a later process)", async () => {
|
|
||||||
const stats = await retrieveTelemetry(supertest);
|
|
||||||
expect(stats.stack_stats.kibana.plugins.application_usage).to.eql({
|
|
||||||
'test-app': {
|
|
||||||
appId: 'test-app',
|
|
||||||
viewId: 'main',
|
|
||||||
clicks_total: 10000,
|
|
||||||
clicks_7_days: 10000,
|
|
||||||
clicks_30_days: 10000,
|
|
||||||
clicks_90_days: 10000,
|
|
||||||
minutes_on_screen_total: 10000,
|
|
||||||
minutes_on_screen_7_days: 10000,
|
|
||||||
minutes_on_screen_30_days: 10000,
|
|
||||||
minutes_on_screen_90_days: 10000,
|
|
||||||
views: [],
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -31,6 +31,7 @@ export default async function ({ readConfigFile }) {
|
||||||
'--server.xsrf.disableProtection=true',
|
'--server.xsrf.disableProtection=true',
|
||||||
'--server.compression.referrerWhitelist=["some-host.com"]',
|
'--server.compression.referrerWhitelist=["some-host.com"]',
|
||||||
`--savedObjects.maxImportExportSize=10001`,
|
`--savedObjects.maxImportExportSize=10001`,
|
||||||
|
'--savedObjects.maxImportPayloadBytes=30000000',
|
||||||
// for testing set buffer duration to 0 to immediately flush counters into saved objects.
|
// for testing set buffer duration to 0 to immediately flush counters into saved objects.
|
||||||
'--usageCollection.usageCounters.bufferDuration=0',
|
'--usageCollection.usageCounters.bufferDuration=0',
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "index-pattern:91200a00-9efd-11e7-acb3-3dab96693fab",
|
|
||||||
"source": {
|
|
||||||
"type": "index-pattern",
|
|
||||||
"updated_at": "2017-09-21T18:49:16.270Z",
|
|
||||||
"index-pattern": {
|
|
||||||
"title": "basic_index",
|
|
||||||
"fields": "[{\"name\":\"bar\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"baz\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"baz.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"foo\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"nestedField.child\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"nested\":{\"path\":\"nestedField\"}}}]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,253 +0,0 @@
|
||||||
{
|
|
||||||
"type": "index",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"settings": {
|
|
||||||
"index": {
|
|
||||||
"number_of_shards": "1",
|
|
||||||
"number_of_replicas": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"dynamic": "strict",
|
|
||||||
"properties": {
|
|
||||||
"config": {
|
|
||||||
"dynamic": "true",
|
|
||||||
"properties": {
|
|
||||||
"buildNum": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"defaultIndex": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 256
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashboard": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optionsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"panelsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"refreshInterval": {
|
|
||||||
"properties": {
|
|
||||||
"display": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"pause": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"section": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeFrom": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timeRestore": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"timeTo": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index-pattern": {
|
|
||||||
"properties": {
|
|
||||||
"fieldFormatMap": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"intervalName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"notExpandable": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"sourceFilters": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"timeFieldName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"properties": {
|
|
||||||
"columns": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sort": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"properties": {
|
|
||||||
"uuid": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion-sheet": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion_chart_height": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_columns": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_other_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_rows": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_sheet": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"namespace": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"updated_at": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"properties": {
|
|
||||||
"accessCount": {
|
|
||||||
"type": "long"
|
|
||||||
},
|
|
||||||
"accessDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"createDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 2048
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualization": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"savedSearchId": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"visState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,190 +0,0 @@
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "timelion-sheet:190f3e90-2ec3-11e8-ba48-69fc4e41e1f6",
|
|
||||||
"source": {
|
|
||||||
"type": "timelion-sheet",
|
|
||||||
"updated_at": "2018-03-23T17:53:30.872Z",
|
|
||||||
"timelion-sheet": {
|
|
||||||
"title": "New TimeLion Sheet",
|
|
||||||
"hits": 0,
|
|
||||||
"description": "",
|
|
||||||
"timelion_sheet": [
|
|
||||||
".es(*)"
|
|
||||||
],
|
|
||||||
"timelion_interval": "auto",
|
|
||||||
"timelion_chart_height": 275,
|
|
||||||
"timelion_columns": 2,
|
|
||||||
"timelion_rows": 2,
|
|
||||||
"version": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "index-pattern:8963ca30-3224-11e8-a572-ffca06da1357",
|
|
||||||
"source": {
|
|
||||||
"type": "index-pattern",
|
|
||||||
"updated_at": "2018-03-28T01:08:34.290Z",
|
|
||||||
"index-pattern": {
|
|
||||||
"title": "saved_objects*",
|
|
||||||
"fields": "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "config:7.0.0-alpha1",
|
|
||||||
"source": {
|
|
||||||
"type": "config",
|
|
||||||
"updated_at": "2018-03-28T01:08:39.248Z",
|
|
||||||
"config": {
|
|
||||||
"buildNum": 8467,
|
|
||||||
"telemetry:optIn": false,
|
|
||||||
"defaultIndex": "8963ca30-3224-11e8-a572-ffca06da1357"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "search:960372e0-3224-11e8-a572-ffca06da1357",
|
|
||||||
"source": {
|
|
||||||
"type": "search",
|
|
||||||
"updated_at": "2018-03-28T01:08:55.182Z",
|
|
||||||
"search": {
|
|
||||||
"title": "OneRecord",
|
|
||||||
"description": "",
|
|
||||||
"hits": 0,
|
|
||||||
"columns": [
|
|
||||||
"_source"
|
|
||||||
],
|
|
||||||
"sort": [
|
|
||||||
"_score",
|
|
||||||
"desc"
|
|
||||||
],
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"index\":\"8963ca30-3224-11e8-a572-ffca06da1357\",\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"id:3\",\"language\":\"lucene\"},\"filter\":[]}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:a42c0580-3224-11e8-a572-ffca06da1357",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2018-03-28T01:09:18.936Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "VisualizationFromSavedSearch",
|
|
||||||
"visState": "{\"title\":\"VisualizationFromSavedSearch\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}",
|
|
||||||
"uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}",
|
|
||||||
"description": "",
|
|
||||||
"savedSearchId": "960372e0-3224-11e8-a572-ffca06da1357",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:add810b0-3224-11e8-a572-ffca06da1357",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2018-03-28T01:09:35.163Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Visualization",
|
|
||||||
"visState": "{\"title\":\"Visualization\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}",
|
|
||||||
"uiStateJSON": "{}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"index\":\"8963ca30-3224-11e8-a572-ffca06da1357\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "dashboard:b70c7ae0-3224-11e8-a572-ffca06da1357",
|
|
||||||
"source": {
|
|
||||||
"type": "dashboard",
|
|
||||||
"updated_at": "2018-03-28T01:09:50.606Z",
|
|
||||||
"dashboard": {
|
|
||||||
"title": "Dashboard",
|
|
||||||
"hits": 0,
|
|
||||||
"description": "",
|
|
||||||
"panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"7.0.0-alpha1\",\"panelIndex\":\"1\",\"type\":\"visualization\",\"id\":\"add810b0-3224-11e8-a572-ffca06da1357\",\"embeddableConfig\":{}},{\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"version\":\"7.0.0-alpha1\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"id\":\"a42c0580-3224-11e8-a572-ffca06da1357\",\"embeddableConfig\":{}}]",
|
|
||||||
"optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}",
|
|
||||||
"version": 1,
|
|
||||||
"timeRestore": false,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "dashboard:invalid-refs",
|
|
||||||
"source": {
|
|
||||||
"type": "dashboard",
|
|
||||||
"updated_at": "2018-03-28T01:09:50.606Z",
|
|
||||||
"dashboard": {
|
|
||||||
"title": "Dashboard",
|
|
||||||
"hits": 0,
|
|
||||||
"description": "",
|
|
||||||
"panelsJSON": "[]",
|
|
||||||
"optionsJSON": "{}",
|
|
||||||
"version": 1,
|
|
||||||
"timeRestore": false,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"type":"visualization",
|
|
||||||
"id": "add810b0-3224-11e8-a572-ffca06da1357",
|
|
||||||
"name": "valid-ref"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type":"visualization",
|
|
||||||
"id": "invalid-vis",
|
|
||||||
"name": "missing-ref"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,297 +0,0 @@
|
||||||
{
|
|
||||||
"type": "index",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"settings": {
|
|
||||||
"index": {
|
|
||||||
"number_of_shards": "1",
|
|
||||||
"auto_expand_replicas": "0-1",
|
|
||||||
"number_of_replicas": "0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"dynamic": "strict",
|
|
||||||
"properties": {
|
|
||||||
"references": {
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "nested"
|
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"dynamic": "true",
|
|
||||||
"properties": {
|
|
||||||
"buildNum": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"defaultIndex": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 256
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"telemetry:optIn": {
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashboard": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optionsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"panelsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"refreshInterval": {
|
|
||||||
"properties": {
|
|
||||||
"display": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"pause": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"section": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeFrom": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timeRestore": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"timeTo": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"graph-workspace": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"numLinks": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"numVertices": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"wsState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index-pattern": {
|
|
||||||
"properties": {
|
|
||||||
"fieldFormatMap": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"intervalName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"notExpandable": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"sourceFilters": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"timeFieldName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"properties": {
|
|
||||||
"columns": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sort": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"properties": {
|
|
||||||
"uuid": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion-sheet": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion_chart_height": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_columns": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_other_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_rows": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_sheet": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"updated_at": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"properties": {
|
|
||||||
"accessCount": {
|
|
||||||
"type": "long"
|
|
||||||
},
|
|
||||||
"accessDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"createDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 2048
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualization": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"savedSearchId": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"visState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,253 +0,0 @@
|
||||||
{
|
|
||||||
"type": "index",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"settings": {
|
|
||||||
"index": {
|
|
||||||
"number_of_shards": "1",
|
|
||||||
"number_of_replicas": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"dynamic": "strict",
|
|
||||||
"properties": {
|
|
||||||
"config": {
|
|
||||||
"dynamic": "true",
|
|
||||||
"properties": {
|
|
||||||
"buildNum": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"defaultIndex": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 256
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashboard": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optionsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"panelsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"refreshInterval": {
|
|
||||||
"properties": {
|
|
||||||
"display": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"pause": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"section": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeFrom": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timeRestore": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"timeTo": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index-pattern": {
|
|
||||||
"properties": {
|
|
||||||
"fieldFormatMap": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"intervalName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"notExpandable": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"sourceFilters": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"timeFieldName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"properties": {
|
|
||||||
"columns": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sort": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"properties": {
|
|
||||||
"uuid": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion-sheet": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion_chart_height": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_columns": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_other_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_rows": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_sheet": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"namespace": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"updated_at": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"properties": {
|
|
||||||
"accessCount": {
|
|
||||||
"type": "long"
|
|
||||||
},
|
|
||||||
"accessDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"createDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 2048
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualization": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"savedSearchId": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"visState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,267 +0,0 @@
|
||||||
{
|
|
||||||
"type": "index",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"settings": {
|
|
||||||
"index": {
|
|
||||||
"number_of_shards": "1",
|
|
||||||
"number_of_replicas": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"dynamic": "strict",
|
|
||||||
"properties": {
|
|
||||||
"config": {
|
|
||||||
"dynamic": "true",
|
|
||||||
"properties": {
|
|
||||||
"buildNum": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"defaultIndex": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 256
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashboard": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optionsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"panelsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"refreshInterval": {
|
|
||||||
"properties": {
|
|
||||||
"display": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"pause": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"section": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeFrom": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timeRestore": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"timeTo": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index-pattern": {
|
|
||||||
"properties": {
|
|
||||||
"fieldFormatMap": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"intervalName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"notExpandable": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"sourceFilters": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"timeFieldName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"properties": {
|
|
||||||
"columns": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sort": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"properties": {
|
|
||||||
"uuid": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion-sheet": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion_chart_height": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_columns": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_other_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_rows": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_sheet": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"namespace": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"references": {
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "nested"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"updated_at": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"properties": {
|
|
||||||
"accessCount": {
|
|
||||||
"type": "long"
|
|
||||||
},
|
|
||||||
"accessDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"createDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 2048
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualization": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"savedSearchId": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"visState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,93 +0,0 @@
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:title-with-dash",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "my-visualization",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:title-with-asterisk",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "some*visualization",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:noise-1",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Just some noise in the dataset",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:noise-2",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Just some noise in the dataset",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,267 +0,0 @@
|
||||||
{
|
|
||||||
"type": "index",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"settings": {
|
|
||||||
"index": {
|
|
||||||
"number_of_shards": "1",
|
|
||||||
"number_of_replicas": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"dynamic": "strict",
|
|
||||||
"properties": {
|
|
||||||
"config": {
|
|
||||||
"dynamic": "true",
|
|
||||||
"properties": {
|
|
||||||
"buildNum": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"defaultIndex": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 256
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashboard": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optionsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"panelsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"refreshInterval": {
|
|
||||||
"properties": {
|
|
||||||
"display": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"pause": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"section": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeFrom": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timeRestore": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"timeTo": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index-pattern": {
|
|
||||||
"properties": {
|
|
||||||
"fieldFormatMap": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"intervalName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"notExpandable": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"sourceFilters": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"timeFieldName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"properties": {
|
|
||||||
"columns": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sort": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"properties": {
|
|
||||||
"uuid": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion-sheet": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion_chart_height": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_columns": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_other_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_rows": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_sheet": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"namespace": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"references": {
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "nested"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"updated_at": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"properties": {
|
|
||||||
"accessCount": {
|
|
||||||
"type": "long"
|
|
||||||
},
|
|
||||||
"accessDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"createDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 2048
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualization": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"savedSearchId": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"visState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,120 +0,0 @@
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:only-ref-1",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Vis with ref to ref-1",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"type": "ref-type",
|
|
||||||
"id": "ref-1",
|
|
||||||
"name": "ref-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:ref-1-and-ref-2",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Vis with ref to ref-1 and ref-2",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"type": "ref-type",
|
|
||||||
"id": "ref-1",
|
|
||||||
"name": "ref-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "ref-type",
|
|
||||||
"id": "ref-2",
|
|
||||||
"name": "ref-2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:only-ref-2",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Vis with ref to ref-2",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"type": "ref-type",
|
|
||||||
"id": "ref-2",
|
|
||||||
"name": "ref-2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "doc",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"id": "visualization:only-ref-3",
|
|
||||||
"source": {
|
|
||||||
"type": "visualization",
|
|
||||||
"updated_at": "2017-09-21T18:51:23.794Z",
|
|
||||||
"visualization": {
|
|
||||||
"title": "Vis with ref to ref-3",
|
|
||||||
"visState": "{}",
|
|
||||||
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
|
||||||
"description": "",
|
|
||||||
"version": 1,
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"type": "ref-type",
|
|
||||||
"id": "ref-3",
|
|
||||||
"name": "ref-3"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,267 +0,0 @@
|
||||||
{
|
|
||||||
"type": "index",
|
|
||||||
"value": {
|
|
||||||
"index": ".kibana",
|
|
||||||
"settings": {
|
|
||||||
"index": {
|
|
||||||
"number_of_shards": "1",
|
|
||||||
"number_of_replicas": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mappings": {
|
|
||||||
"dynamic": "strict",
|
|
||||||
"properties": {
|
|
||||||
"config": {
|
|
||||||
"dynamic": "true",
|
|
||||||
"properties": {
|
|
||||||
"buildNum": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"defaultIndex": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 256
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashboard": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optionsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"panelsJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"refreshInterval": {
|
|
||||||
"properties": {
|
|
||||||
"display": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"pause": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"section": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeFrom": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timeRestore": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"timeTo": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index-pattern": {
|
|
||||||
"properties": {
|
|
||||||
"fieldFormatMap": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"intervalName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"notExpandable": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"sourceFilters": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"timeFieldName": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"properties": {
|
|
||||||
"columns": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sort": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"properties": {
|
|
||||||
"uuid": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion-sheet": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"hits": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timelion_chart_height": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_columns": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_other_interval": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"timelion_rows": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"timelion_sheet": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"namespace": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"references": {
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "nested"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"updated_at": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"properties": {
|
|
||||||
"accessCount": {
|
|
||||||
"type": "long"
|
|
||||||
},
|
|
||||||
"accessDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"createDate": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"url": {
|
|
||||||
"type": "text",
|
|
||||||
"fields": {
|
|
||||||
"keyword": {
|
|
||||||
"type": "keyword",
|
|
||||||
"ignore_above": 2048
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualization": {
|
|
||||||
"properties": {
|
|
||||||
"description": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"kibanaSavedObjectMeta": {
|
|
||||||
"properties": {
|
|
||||||
"searchSourceJSON": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"savedSearchId": {
|
|
||||||
"type": "keyword"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"uiStateJSON": {
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"version": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"visState": {
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"fields": "[{\"name\":\"bar\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"baz\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"baz.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"foo\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"nestedField.child\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"nested\":{\"path\":\"nestedField\"}}}]",
|
||||||
|
"title": "basic_index"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "7.14.0",
|
||||||
|
"id": "91200a00-9efd-11e7-acb3-3dab96693fab",
|
||||||
|
"migrationVersion": {
|
||||||
|
"index-pattern": "7.11.0"
|
||||||
|
},
|
||||||
|
"references": [],
|
||||||
|
"type": "index-pattern",
|
||||||
|
"updated_at": "2017-09-21T18:49:16.270Z",
|
||||||
|
"version": "WzEsMl0="
|
||||||
|
}
|
|
@ -0,0 +1,200 @@
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"hits": 0,
|
||||||
|
"timelion_chart_height": 275,
|
||||||
|
"timelion_columns": 2,
|
||||||
|
"timelion_interval": "auto",
|
||||||
|
"timelion_rows": 2,
|
||||||
|
"timelion_sheet": [
|
||||||
|
".es(*)"
|
||||||
|
],
|
||||||
|
"title": "New TimeLion Sheet",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "190f3e90-2ec3-11e8-ba48-69fc4e41e1f6",
|
||||||
|
"references": [],
|
||||||
|
"type": "timelion-sheet",
|
||||||
|
"updated_at": "2018-03-23T17:53:30.872Z",
|
||||||
|
"version": "WzgsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"fields": "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]",
|
||||||
|
"title": "saved_objects*"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "8963ca30-3224-11e8-a572-ffca06da1357",
|
||||||
|
"migrationVersion": {
|
||||||
|
"index-pattern": "7.11.0"
|
||||||
|
},
|
||||||
|
"references": [],
|
||||||
|
"type": "index-pattern",
|
||||||
|
"updated_at": "2018-03-28T01:08:34.290Z",
|
||||||
|
"version": "WzksMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"columns": [
|
||||||
|
"_source"
|
||||||
|
],
|
||||||
|
"description": "",
|
||||||
|
"hits": 0,
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"id:3\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"
|
||||||
|
},
|
||||||
|
"sort": [
|
||||||
|
[
|
||||||
|
"_score",
|
||||||
|
"desc"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"title": "OneRecord",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "960372e0-3224-11e8-a572-ffca06da1357",
|
||||||
|
"migrationVersion": {
|
||||||
|
"search": "7.9.3"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "8963ca30-3224-11e8-a572-ffca06da1357",
|
||||||
|
"name": "kibanaSavedObjectMeta.searchSourceJSON.index",
|
||||||
|
"type": "index-pattern"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "search",
|
||||||
|
"updated_at": "2018-03-28T01:08:55.182Z",
|
||||||
|
"version": "WzExLDJd"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"savedSearchRefName": "search_0",
|
||||||
|
"title": "VisualizationFromSavedSearch",
|
||||||
|
"uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{\"title\":\"VisualizationFromSavedSearch\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "a42c0580-3224-11e8-a572-ffca06da1357",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "960372e0-3224-11e8-a572-ffca06da1357",
|
||||||
|
"name": "search_0",
|
||||||
|
"type": "search"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2018-03-28T01:09:18.936Z",
|
||||||
|
"version": "WzEyLDJd"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"
|
||||||
|
},
|
||||||
|
"title": "Visualization",
|
||||||
|
"uiStateJSON": "{}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{\"title\":\"Visualization\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "add810b0-3224-11e8-a572-ffca06da1357",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "8963ca30-3224-11e8-a572-ffca06da1357",
|
||||||
|
"name": "kibanaSavedObjectMeta.searchSourceJSON.index",
|
||||||
|
"type": "index-pattern"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2018-03-28T01:09:35.163Z",
|
||||||
|
"version": "WzEzLDJd"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"hits": 0,
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}"
|
||||||
|
},
|
||||||
|
"optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}",
|
||||||
|
"panelsJSON": "[{\"version\":\"7.0.0-alpha1\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.0.0-alpha1\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"}]",
|
||||||
|
"timeRestore": false,
|
||||||
|
"title": "Dashboard",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "b70c7ae0-3224-11e8-a572-ffca06da1357",
|
||||||
|
"migrationVersion": {
|
||||||
|
"dashboard": "7.11.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "add810b0-3224-11e8-a572-ffca06da1357",
|
||||||
|
"name": "panel_0",
|
||||||
|
"type": "visualization"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a42c0580-3224-11e8-a572-ffca06da1357",
|
||||||
|
"name": "panel_1",
|
||||||
|
"type": "visualization"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "dashboard",
|
||||||
|
"updated_at": "2018-03-28T01:09:50.606Z",
|
||||||
|
"version": "WzE0LDJd"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"hits": 0,
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}"
|
||||||
|
},
|
||||||
|
"optionsJSON": "{}",
|
||||||
|
"panelsJSON": "[]",
|
||||||
|
"timeRestore": false,
|
||||||
|
"title": "Dashboard",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "invalid-refs",
|
||||||
|
"migrationVersion": {
|
||||||
|
"dashboard": "7.11.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "add810b0-3224-11e8-a572-ffca06da1357",
|
||||||
|
"name": "valid-ref",
|
||||||
|
"type": "visualization"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "invalid-vis",
|
||||||
|
"name": "missing-ref",
|
||||||
|
"type": "visualization"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "dashboard",
|
||||||
|
"updated_at": "2018-03-28T01:09:50.606Z",
|
||||||
|
"version": "WzE1LDJd"
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,87 @@
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "Just some noise in the dataset",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "noise-1",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzYsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "Just some noise in the dataset",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "noise-2",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzcsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "some*visualization",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "title-with-asterisk",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzUsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "my-visualization",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "title-with-dash",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzQsMl0="
|
||||||
|
}
|
|
@ -0,0 +1,116 @@
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "Vis with ref to ref-1",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "only-ref-1",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "ref-1",
|
||||||
|
"name": "ref-1",
|
||||||
|
"type": "ref-type"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzQsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "Vis with ref to ref-2",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "only-ref-2",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "ref-2",
|
||||||
|
"name": "ref-2",
|
||||||
|
"type": "ref-type"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzYsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "Vis with ref to ref-3",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "only-ref-3",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "ref-3",
|
||||||
|
"name": "ref-3",
|
||||||
|
"type": "ref-type"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzcsMl0="
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"attributes": {
|
||||||
|
"description": "",
|
||||||
|
"kibanaSavedObjectMeta": {
|
||||||
|
"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
|
||||||
|
},
|
||||||
|
"title": "Vis with ref to ref-1 and ref-2",
|
||||||
|
"uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}",
|
||||||
|
"version": 1,
|
||||||
|
"visState": "{}"
|
||||||
|
},
|
||||||
|
"coreMigrationVersion": "8.0.0",
|
||||||
|
"id": "ref-1-and-ref-2",
|
||||||
|
"migrationVersion": {
|
||||||
|
"visualization": "7.13.0"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"id": "ref-1",
|
||||||
|
"name": "ref-1",
|
||||||
|
"type": "ref-type"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ref-2",
|
||||||
|
"name": "ref-2",
|
||||||
|
"type": "ref-type"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "visualization",
|
||||||
|
"updated_at": "2017-09-21T18:51:23.794Z",
|
||||||
|
"version": "WzUsMl0="
|
||||||
|
}
|
|
@ -29,14 +29,6 @@ export class DeploymentService extends FtrService {
|
||||||
return getUrl.baseUrl(this.config.get('servers.elasticsearch'));
|
return getUrl.baseUrl(this.config.get('servers.elasticsearch'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper to detect an OSS licensed Kibana
|
|
||||||
* Useful for functional testing in cloud environment
|
|
||||||
*/
|
|
||||||
async isOss() {
|
|
||||||
return this.config.get('kbnTestServer.serverArgs').indexOf('--oss') > -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
async isCloud(): Promise<boolean> {
|
async isCloud(): Promise<boolean> {
|
||||||
const baseUrl = this.getHostPort();
|
const baseUrl = this.getHostPort();
|
||||||
const username = this.config.get('servers.kibana.username');
|
const username = this.config.get('servers.kibana.username');
|
||||||
|
|
|
@ -22,7 +22,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) {
|
||||||
await retry.try(async () => {
|
await retry.try(async () => {
|
||||||
const text = await testSubjects.getVisibleText('expressionResult');
|
const text = await testSubjects.getVisibleText('expressionResult');
|
||||||
expect(text).to.be(
|
expect(text).to.be(
|
||||||
'{\n "type": "error",\n "error": {\n "message": "Function markdown could not be found.",\n "name": "fn not found"\n }\n}'
|
'{\n "type": "render",\n "as": "markdown",\n "value": {\n "content": "## expressions explorer",\n "font": {\n "type": "style",\n "spec": {\n "fontFamily": "\'Open Sans\', Helvetica, Arial, sans-serif",\n "fontWeight": "normal",\n "fontStyle": "normal",\n "textDecoration": "none",\n "textAlign": "left",\n "fontSize": "14px",\n "lineHeight": "1"\n },\n "css": "font-family:\'Open Sans\', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;font-size:14px;line-height:1"\n },\n "openLinksInNewTab": false\n }\n}'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -30,7 +30,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) {
|
||||||
it('renders expression', async () => {
|
it('renders expression', async () => {
|
||||||
await retry.try(async () => {
|
await retry.try(async () => {
|
||||||
const text = await testSubjects.getVisibleText('expressionRender');
|
const text = await testSubjects.getVisibleText('expressionRender');
|
||||||
expect(text).to.be('Function markdown could not be found.');
|
expect(text).to.be('expressions explorer rendering');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import expect from '@kbn/expect';
|
||||||
export default function ({ getService, getPageObjects }) {
|
export default function ({ getService, getPageObjects }) {
|
||||||
const browser = getService('browser');
|
const browser = getService('browser');
|
||||||
const globalNav = getService('globalNav');
|
const globalNav = getService('globalNav');
|
||||||
|
const testSubjects = getService('testSubjects');
|
||||||
const PageObjects = getPageObjects(['common', 'header', 'home']);
|
const PageObjects = getPageObjects(['common', 'header', 'home']);
|
||||||
|
|
||||||
describe('Kibana takes you home', function describeIndexTests() {
|
describe('Kibana takes you home', function describeIndexTests() {
|
||||||
|
@ -25,7 +26,8 @@ export default function ({ getService, getPageObjects }) {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('clicking on console on homepage should take you to console app', async () => {
|
it('clicking on console on homepage should take you to console app', async () => {
|
||||||
await PageObjects.home.clickSynopsis('console');
|
await PageObjects.common.navigateToUrl('home');
|
||||||
|
await testSubjects.click('homeDevTools');
|
||||||
const url = await browser.getCurrentUrl();
|
const url = await browser.getCurrentUrl();
|
||||||
expect(url.includes('/app/dev_tools#/console')).to.be(true);
|
expect(url.includes('/app/dev_tools#/console')).to.be(true);
|
||||||
});
|
});
|
||||||
|
|
|
@ -11,7 +11,6 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||||
const globalNav = getService('globalNav');
|
const globalNav = getService('globalNav');
|
||||||
const deployment = getService('deployment');
|
|
||||||
const PageObjects = getPageObjects(['newsfeed']);
|
const PageObjects = getPageObjects(['newsfeed']);
|
||||||
|
|
||||||
describe('Newsfeed', () => {
|
describe('Newsfeed', () => {
|
||||||
|
@ -38,16 +37,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||||
it('shows all news from newsfeed', async () => {
|
it('shows all news from newsfeed', async () => {
|
||||||
const objects = await PageObjects.newsfeed.getNewsfeedList();
|
const objects = await PageObjects.newsfeed.getNewsfeedList();
|
||||||
|
|
||||||
if (await deployment.isOss()) {
|
|
||||||
expect(objects).to.eql([
|
|
||||||
'21 June 2019\nYou are functionally testing the newsfeed widget with fixtures!\nSee test/common/fixtures/plugins/newsfeed/newsfeed_simulation\nGeneric feed-viewer could go here',
|
|
||||||
'21 June 2019\nStaging too!\nHello world\nGeneric feed-viewer could go here',
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
// can't shim the API in cloud so going to check that at least something is rendered
|
// can't shim the API in cloud so going to check that at least something is rendered
|
||||||
// to test that the API was called and returned something that could be rendered
|
// to test that the API was called and returned something that could be rendered
|
||||||
expect(objects.length).to.be.above(0);
|
expect(objects.length).to.be.above(0);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('clicking on newsfeed icon should close opened newsfeed', async () => {
|
it('clicking on newsfeed icon should close opened newsfeed', async () => {
|
||||||
|
|
|
@ -27,7 +27,6 @@ import expect from '@kbn/expect';
|
||||||
export default function ({ getService, getPageObjects }) {
|
export default function ({ getService, getPageObjects }) {
|
||||||
const esArchiver = getService('esArchiver');
|
const esArchiver = getService('esArchiver');
|
||||||
const kibanaServer = getService('kibanaServer');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const deployment = getService('deployment');
|
|
||||||
const log = getService('log');
|
const log = getService('log');
|
||||||
const browser = getService('browser');
|
const browser = getService('browser');
|
||||||
const retry = getService('retry');
|
const retry = getService('retry');
|
||||||
|
@ -187,16 +186,14 @@ export default function ({ getService, getPageObjects }) {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should visualize scripted field in vertical bar chart', async function () {
|
it('should visualize scripted field in vertical bar chart', async function () {
|
||||||
const isOss = await deployment.isOss();
|
|
||||||
if (!isOss) {
|
|
||||||
await filterBar.removeAllFilters();
|
await filterBar.removeAllFilters();
|
||||||
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName);
|
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName);
|
||||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||||
// verify Lens opens a visualization
|
// verify Lens opens a visualization
|
||||||
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
||||||
'Average of ram_Pain1'
|
'@timestamp',
|
||||||
|
'Median of ram_Pain1'
|
||||||
);
|
);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -277,15 +274,12 @@ export default function ({ getService, getPageObjects }) {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should visualize scripted field in vertical bar chart', async function () {
|
it('should visualize scripted field in vertical bar chart', async function () {
|
||||||
const isOss = await deployment.isOss();
|
|
||||||
if (!isOss) {
|
|
||||||
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2);
|
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2);
|
||||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||||
// verify Lens opens a visualization
|
// verify Lens opens a visualization
|
||||||
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
||||||
'Top values of painString'
|
'Top values of painString'
|
||||||
);
|
);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -367,15 +361,12 @@ export default function ({ getService, getPageObjects }) {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should visualize scripted field in vertical bar chart', async function () {
|
it('should visualize scripted field in vertical bar chart', async function () {
|
||||||
const isOss = await deployment.isOss();
|
|
||||||
if (!isOss) {
|
|
||||||
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2);
|
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2);
|
||||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||||
// verify Lens opens a visualization
|
// verify Lens opens a visualization
|
||||||
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
||||||
'Top values of painBool'
|
'Top values of painBool'
|
||||||
);
|
);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -460,15 +451,10 @@ export default function ({ getService, getPageObjects }) {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should visualize scripted field in vertical bar chart', async function () {
|
it('should visualize scripted field in vertical bar chart', async function () {
|
||||||
const isOss = await deployment.isOss();
|
|
||||||
if (!isOss) {
|
|
||||||
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2);
|
await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2);
|
||||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||||
// verify Lens opens a visualization
|
// verify Lens opens a visualization
|
||||||
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain(
|
expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain('painDate');
|
||||||
'painDate'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -35,6 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||||
await PageObjects.visualize.clickAggBasedVisualizations();
|
await PageObjects.visualize.clickAggBasedVisualizations();
|
||||||
const expectedChartTypes = [
|
const expectedChartTypes = [
|
||||||
'Area',
|
'Area',
|
||||||
|
'Coordinate Map',
|
||||||
'Data table',
|
'Data table',
|
||||||
'Gauge',
|
'Gauge',
|
||||||
'Goal',
|
'Goal',
|
||||||
|
@ -43,6 +44,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||||
'Line',
|
'Line',
|
||||||
'Metric',
|
'Metric',
|
||||||
'Pie',
|
'Pie',
|
||||||
|
'Region Map',
|
||||||
'Tag cloud',
|
'Tag cloud',
|
||||||
'Timelion',
|
'Timelion',
|
||||||
'Vertical bar',
|
'Vertical bar',
|
||||||
|
|
|
@ -126,26 +126,26 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||||
|
|
||||||
it('Fit data bounds should zoom to level 3', async function () {
|
it('Fit data bounds should zoom to level 3', async function () {
|
||||||
const expectedPrecision2DataTable = [
|
const expectedPrecision2DataTable = [
|
||||||
['-', 'dr4', '127', { lat: 40, lon: -76 }],
|
['-', 'dn', '1,429', { lat: 36, lon: -85 }],
|
||||||
['-', 'dr7', '92', { lat: 41, lon: -74 }],
|
['-', 'dp', '1,418', { lat: 41, lon: -85 }],
|
||||||
['-', '9q5', '91', { lat: 34, lon: -119 }],
|
['-', '9y', '1,215', { lat: 36, lon: -96 }],
|
||||||
['-', '9qc', '89', { lat: 38, lon: -122 }],
|
['-', '9z', '1,099', { lat: 42, lon: -96 }],
|
||||||
['-', 'drk', '87', { lat: 41, lon: -73 }],
|
['-', 'dr', '1,076', { lat: 42, lon: -74 }],
|
||||||
['-', 'dps', '82', { lat: 42, lon: -84 }],
|
['-', 'dj', '982', { lat: 31, lon: -85 }],
|
||||||
['-', 'dph', '82', { lat: 40, lon: -84 }],
|
['-', '9v', '938', { lat: 31, lon: -96 }],
|
||||||
['-', 'dp3', '79', { lat: 41, lon: -88 }],
|
['-', '9q', '722', { lat: 36, lon: -120 }],
|
||||||
['-', 'dpe', '78', { lat: 42, lon: -86 }],
|
['-', '9w', '475', { lat: 36, lon: -107 }],
|
||||||
['-', 'dp8', '77', { lat: 43, lon: -90 }],
|
['-', 'cb', '457', { lat: 46, lon: -96 }],
|
||||||
['-', 'dp6', '74', { lat: 41, lon: -87 }],
|
['-', 'c2', '453', { lat: 47, lon: -120 }],
|
||||||
['-', 'djv', '74', { lat: 33, lon: -83 }],
|
['-', '9x', '420', { lat: 41, lon: -107 }],
|
||||||
['-', '9qh', '74', { lat: 34, lon: -118 }],
|
['-', 'dq', '399', { lat: 37, lon: -78 }],
|
||||||
['-', 'dpq', '73', { lat: 41, lon: -81 }],
|
['-', '9r', '396', { lat: 41, lon: -120 }],
|
||||||
['-', 'dpp', '73', { lat: 40, lon: -80 }],
|
['-', '9t', '274', { lat: 32, lon: -107 }],
|
||||||
['-', '9y7', '73', { lat: 35, lon: -97 }],
|
['-', 'c8', '271', { lat: 47, lon: -107 }],
|
||||||
['-', '9vg', '73', { lat: 32, lon: -97 }],
|
['-', 'dh', '214', { lat: 26, lon: -82 }],
|
||||||
['-', 'drs', '71', { lat: 42, lon: -73 }],
|
['-', 'b6', '207', { lat: 60, lon: -162 }],
|
||||||
['-', '9ys', '71', { lat: 37, lon: -95 }],
|
['-', 'bd', '206', { lat: 59, lon: -153 }],
|
||||||
['-', '9yn', '71', { lat: 34, lon: -93 }],
|
['-', 'b7', '167', { lat: 64, lon: -163 }],
|
||||||
];
|
];
|
||||||
|
|
||||||
await PageObjects.tileMap.clickMapFitDataBounds();
|
await PageObjects.tileMap.clickMapFitDataBounds();
|
||||||
|
|
|
@ -13,8 +13,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
||||||
const log = getService('log');
|
const log = getService('log');
|
||||||
const esArchiver = getService('esArchiver');
|
const esArchiver = getService('esArchiver');
|
||||||
const kibanaServer = getService('kibanaServer');
|
const kibanaServer = getService('kibanaServer');
|
||||||
const deployment = getService('deployment');
|
|
||||||
let isOss = true;
|
|
||||||
|
|
||||||
describe('visualize app', () => {
|
describe('visualize app', () => {
|
||||||
before(async () => {
|
before(async () => {
|
||||||
|
@ -24,7 +22,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
||||||
|
|
||||||
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
|
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
|
||||||
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/long_window_logstash');
|
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/long_window_logstash');
|
||||||
isOss = await deployment.isOss();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Remove when vislib is removed
|
// TODO: Remove when vislib is removed
|
||||||
|
@ -63,11 +60,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
||||||
loadTestFile(require.resolve('./_data_table'));
|
loadTestFile(require.resolve('./_data_table'));
|
||||||
loadTestFile(require.resolve('./_data_table_nontimeindex'));
|
loadTestFile(require.resolve('./_data_table_nontimeindex'));
|
||||||
loadTestFile(require.resolve('./_data_table_notimeindex_filters'));
|
loadTestFile(require.resolve('./_data_table_notimeindex_filters'));
|
||||||
|
|
||||||
// this check is not needed when the CI doesn't run anymore for the OSS
|
|
||||||
if (!isOss) {
|
|
||||||
loadTestFile(require.resolve('./_chart_types'));
|
loadTestFile(require.resolve('./_chart_types'));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('visualize ciGroup10', function () {
|
describe('visualize ciGroup10', function () {
|
||||||
|
@ -95,11 +88,8 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
||||||
loadTestFile(require.resolve('./_linked_saved_searches'));
|
loadTestFile(require.resolve('./_linked_saved_searches'));
|
||||||
loadTestFile(require.resolve('./_visualize_listing'));
|
loadTestFile(require.resolve('./_visualize_listing'));
|
||||||
loadTestFile(require.resolve('./_add_to_dashboard.ts'));
|
loadTestFile(require.resolve('./_add_to_dashboard.ts'));
|
||||||
|
|
||||||
if (isOss) {
|
|
||||||
loadTestFile(require.resolve('./_tile_map'));
|
loadTestFile(require.resolve('./_tile_map'));
|
||||||
loadTestFile(require.resolve('./_region_map'));
|
loadTestFile(require.resolve('./_region_map'));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('visualize ciGroup12', function () {
|
describe('visualize ciGroup12', function () {
|
||||||
|
|
|
@ -14,6 +14,7 @@ export default async function ({ readConfigFile }) {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
testFiles: [
|
testFiles: [
|
||||||
|
require.resolve('./apps/status_page'),
|
||||||
require.resolve('./apps/bundles'),
|
require.resolve('./apps/bundles'),
|
||||||
require.resolve('./apps/console'),
|
require.resolve('./apps/console'),
|
||||||
require.resolve('./apps/context'),
|
require.resolve('./apps/context'),
|
||||||
|
@ -23,7 +24,6 @@ export default async function ({ readConfigFile }) {
|
||||||
require.resolve('./apps/home'),
|
require.resolve('./apps/home'),
|
||||||
require.resolve('./apps/management'),
|
require.resolve('./apps/management'),
|
||||||
require.resolve('./apps/saved_objects_management'),
|
require.resolve('./apps/saved_objects_management'),
|
||||||
require.resolve('./apps/status_page'),
|
|
||||||
require.resolve('./apps/timelion'),
|
require.resolve('./apps/timelion'),
|
||||||
require.resolve('./apps/visualize'),
|
require.resolve('./apps/visualize'),
|
||||||
],
|
],
|
||||||
|
@ -36,13 +36,20 @@ export default async function ({ readConfigFile }) {
|
||||||
...commonConfig.get('esTestCluster'),
|
...commonConfig.get('esTestCluster'),
|
||||||
serverArgs: ['xpack.security.enabled=false'],
|
serverArgs: ['xpack.security.enabled=false'],
|
||||||
},
|
},
|
||||||
|
|
||||||
kbnTestServer: {
|
kbnTestServer: {
|
||||||
...commonConfig.get('kbnTestServer'),
|
...commonConfig.get('kbnTestServer'),
|
||||||
serverArgs: [
|
serverArgs: [
|
||||||
...commonConfig.get('kbnTestServer.serverArgs'),
|
...commonConfig.get('kbnTestServer.serverArgs'),
|
||||||
'--oss',
|
|
||||||
'--telemetry.optIn=false',
|
'--telemetry.optIn=false',
|
||||||
'--savedObjects.maxImportPayloadBytes=10485760',
|
'--savedObjects.maxImportPayloadBytes=10485760',
|
||||||
|
'--xpack.maps.showMapVisualizationTypes=true',
|
||||||
|
|
||||||
|
// to be re-enabled once kibana/issues/102552 is completed
|
||||||
|
'--xpack.security.enabled=false',
|
||||||
|
'--monitoring.enabled=false',
|
||||||
|
'--xpack.reporting.enabled=false',
|
||||||
|
'--enterpriseSearch.enabled=false',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -12,11 +12,8 @@ export class HomePageObject extends FtrService {
|
||||||
private readonly testSubjects = this.ctx.getService('testSubjects');
|
private readonly testSubjects = this.ctx.getService('testSubjects');
|
||||||
private readonly retry = this.ctx.getService('retry');
|
private readonly retry = this.ctx.getService('retry');
|
||||||
private readonly find = this.ctx.getService('find');
|
private readonly find = this.ctx.getService('find');
|
||||||
private readonly deployment = this.ctx.getService('deployment');
|
|
||||||
private readonly common = this.ctx.getPageObject('common');
|
private readonly common = this.ctx.getPageObject('common');
|
||||||
|
|
||||||
private isOss = true;
|
|
||||||
|
|
||||||
async clickSynopsis(title: string) {
|
async clickSynopsis(title: string) {
|
||||||
await this.testSubjects.click(`homeSynopsisLink${title}`);
|
await this.testSubjects.click(`homeSynopsisLink${title}`);
|
||||||
}
|
}
|
||||||
|
@ -72,11 +69,8 @@ export class HomePageObject extends FtrService {
|
||||||
|
|
||||||
async launchSampleDashboard(id: string) {
|
async launchSampleDashboard(id: string) {
|
||||||
await this.launchSampleDataSet(id);
|
await this.launchSampleDataSet(id);
|
||||||
this.isOss = await this.deployment.isOss();
|
|
||||||
if (!this.isOss) {
|
|
||||||
await this.find.clickByLinkText('Dashboard');
|
await this.find.clickByLinkText('Dashboard');
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
async launchSampleDataSet(id: string) {
|
async launchSampleDataSet(id: string) {
|
||||||
await this.addSampleDataSet(id);
|
await this.addSampleDataSet(id);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd "$KIBANA_DIR"
|
||||||
source src/dev/ci_setup/setup_env.sh
|
source src/dev/ci_setup/setup_env.sh
|
||||||
|
|
||||||
if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then
|
if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then
|
||||||
|
@ -12,13 +13,47 @@ export KBN_NP_PLUGINS_BUILT=true
|
||||||
echo " -> Ensuring all functional tests are in a ciGroup"
|
echo " -> Ensuring all functional tests are in a ciGroup"
|
||||||
node scripts/ensure_all_tests_in_ci_group;
|
node scripts/ensure_all_tests_in_ci_group;
|
||||||
|
|
||||||
echo " -> building and extracting OSS Kibana distributable for use in functional tests"
|
echo " -> Ensuring all x-pack functional tests are in a ciGroup"
|
||||||
node scripts/build --debug --oss
|
node x-pack/scripts/functional_tests --assert-none-excluded \
|
||||||
|
--include-tag ciGroup1 \
|
||||||
|
--include-tag ciGroup2 \
|
||||||
|
--include-tag ciGroup3 \
|
||||||
|
--include-tag ciGroup4 \
|
||||||
|
--include-tag ciGroup5 \
|
||||||
|
--include-tag ciGroup6 \
|
||||||
|
--include-tag ciGroup7 \
|
||||||
|
--include-tag ciGroup8 \
|
||||||
|
--include-tag ciGroup9 \
|
||||||
|
--include-tag ciGroup10 \
|
||||||
|
--include-tag ciGroup11 \
|
||||||
|
--include-tag ciGroup12 \
|
||||||
|
--include-tag ciGroup13 \
|
||||||
|
--include-tag ciGroupDocker
|
||||||
|
|
||||||
|
echo " -> building and extracting default Kibana distributable for use in functional tests"
|
||||||
|
node scripts/build --debug --no-oss
|
||||||
|
|
||||||
echo " -> shipping metrics from build to ci-stats"
|
echo " -> shipping metrics from build to ci-stats"
|
||||||
node scripts/ship_ci_stats \
|
node scripts/ship_ci_stats \
|
||||||
--metrics target/optimizer_bundle_metrics.json \
|
--metrics target/optimizer_bundle_metrics.json \
|
||||||
--metrics node_modules/@kbn/ui-shared-deps/shared_built_assets/metrics.json
|
--metrics node_modules/@kbn/ui-shared-deps/shared_built_assets/metrics.json
|
||||||
|
|
||||||
mkdir -p "$WORKSPACE/kibana-build-oss"
|
linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')"
|
||||||
cp -pR build/oss/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build-oss/
|
installDir="$KIBANA_DIR/install/kibana"
|
||||||
|
mkdir -p "$installDir"
|
||||||
|
tar -xzf "$linuxBuild" -C "$installDir" --strip=1
|
||||||
|
cp "$linuxBuild" "$WORKSPACE/kibana-default.tar.gz"
|
||||||
|
|
||||||
|
mkdir -p "$WORKSPACE/kibana-build"
|
||||||
|
cp -pR install/kibana/. $WORKSPACE/kibana-build/
|
||||||
|
|
||||||
|
echo " -> Archive built plugins"
|
||||||
|
shopt -s globstar
|
||||||
|
tar -zcf \
|
||||||
|
"$WORKSPACE/kibana-default-plugins.tar.gz" \
|
||||||
|
x-pack/plugins/**/target/public \
|
||||||
|
x-pack/test/**/target/public \
|
||||||
|
examples/**/target/public \
|
||||||
|
x-pack/examples/**/target/public \
|
||||||
|
test/**/target/public
|
||||||
|
shopt -u globstar
|
||||||
|
|
|
@ -26,8 +26,8 @@ installDir="$KIBANA_DIR/install/kibana"
|
||||||
mkdir -p "$installDir"
|
mkdir -p "$installDir"
|
||||||
tar -xzf "$linuxBuild" -C "$installDir" --strip=1
|
tar -xzf "$linuxBuild" -C "$installDir" --strip=1
|
||||||
|
|
||||||
mkdir -p "$WORKSPACE/kibana-build-xpack"
|
mkdir -p "$WORKSPACE/kibana-build"
|
||||||
cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/
|
cp -pR install/kibana/. $WORKSPACE/kibana-build/
|
||||||
|
|
||||||
echo " -> test setup"
|
echo " -> test setup"
|
||||||
source test/scripts/jenkins_test_setup_xpack.sh
|
source test/scripts/jenkins_test_setup_xpack.sh
|
||||||
|
|
|
@ -4,9 +4,18 @@ source src/dev/ci_setup/setup_env.sh
|
||||||
|
|
||||||
echo " -> building kibana platform plugins"
|
echo " -> building kibana platform plugins"
|
||||||
node scripts/build_kibana_platform_plugins \
|
node scripts/build_kibana_platform_plugins \
|
||||||
--oss \
|
|
||||||
--scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \
|
--scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \
|
||||||
--scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \
|
--scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \
|
||||||
--scan-dir "$KIBANA_DIR/examples" \
|
--scan-dir "$KIBANA_DIR/examples" \
|
||||||
--workers 6 \
|
--scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \
|
||||||
--verbose
|
--scan-dir "$KIBANA_DIR/test/common/fixtures/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/plugin_functional/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/functional_with_es_ssl/fixtures/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/alerting_api_integration/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/plugin_api_integration/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/plugin_api_perf/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/licensing_plugin/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/usage_collection/plugins" \
|
||||||
|
--scan-dir "$XPACK_DIR/test/security_functional/fixtures/common" \
|
||||||
|
--scan-dir "$XPACK_DIR/examples" \
|
||||||
|
--workers 12
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
source test/scripts/jenkins_test_setup.sh
|
source test/scripts/jenkins_test_setup.sh
|
||||||
|
|
||||||
if [[ -z "$CODE_COVERAGE" ]]; then
|
if [[ -z "$CODE_COVERAGE" ]]; then
|
||||||
destDir="$WORKSPACE/kibana-build-oss-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}"
|
destDir="$WORKSPACE/kibana-build-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}"
|
||||||
|
|
||||||
if [[ ! -d $destDir ]]; then
|
if [[ ! -d $destDir ]]; then
|
||||||
mkdir -p $destDir
|
mkdir -p $destDir
|
||||||
cp -pR "$WORKSPACE/kibana-build-oss/." $destDir/
|
cp -pR "$WORKSPACE/kibana-build/." $destDir/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export KIBANA_INSTALL_DIR="$destDir"
|
export KIBANA_INSTALL_DIR="$destDir"
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
source test/scripts/jenkins_test_setup.sh
|
source test/scripts/jenkins_test_setup.sh
|
||||||
|
|
||||||
if [[ -z "$CODE_COVERAGE" ]]; then
|
if [[ -z "$CODE_COVERAGE" ]]; then
|
||||||
destDir="$WORKSPACE/kibana-build-xpack-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}"
|
destDir="$WORKSPACE/kibana-build-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}"
|
||||||
|
|
||||||
if [[ ! -d $destDir ]]; then
|
if [[ ! -d $destDir ]]; then
|
||||||
mkdir -p $destDir
|
mkdir -p $destDir
|
||||||
cp -pR "$WORKSPACE/kibana-build-xpack/." $destDir/
|
cp -pR "$WORKSPACE/kibana-build/." $destDir/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export KIBANA_INSTALL_DIR="$(realpath $destDir)"
|
export KIBANA_INSTALL_DIR="$(realpath $destDir)"
|
||||||
|
|
|
@ -17,8 +17,8 @@ installDir="$KIBANA_DIR/install/kibana"
|
||||||
mkdir -p "$installDir"
|
mkdir -p "$installDir"
|
||||||
tar -xzf "$linuxBuild" -C "$installDir" --strip=1
|
tar -xzf "$linuxBuild" -C "$installDir" --strip=1
|
||||||
|
|
||||||
mkdir -p "$WORKSPACE/kibana-build-xpack"
|
mkdir -p "$WORKSPACE/kibana-build"
|
||||||
cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/
|
cp -pR install/kibana/. $WORKSPACE/kibana-build/
|
||||||
|
|
||||||
cd "$KIBANA_DIR"
|
cd "$KIBANA_DIR"
|
||||||
source "test/scripts/jenkins_xpack_saved_objects_field_metrics.sh"
|
source "test/scripts/jenkins_xpack_saved_objects_field_metrics.sh"
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cd "$KIBANA_DIR"
|
|
||||||
source src/dev/ci_setup/setup_env.sh
|
|
||||||
|
|
||||||
if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then
|
|
||||||
./test/scripts/jenkins_xpack_build_plugins.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# doesn't persist, also set in kibanaPipeline.groovy
|
|
||||||
export KBN_NP_PLUGINS_BUILT=true
|
|
||||||
|
|
||||||
echo " -> Ensuring all functional tests are in a ciGroup"
|
|
||||||
cd "$XPACK_DIR"
|
|
||||||
node scripts/functional_tests --assert-none-excluded \
|
|
||||||
--include-tag ciGroup1 \
|
|
||||||
--include-tag ciGroup2 \
|
|
||||||
--include-tag ciGroup3 \
|
|
||||||
--include-tag ciGroup4 \
|
|
||||||
--include-tag ciGroup5 \
|
|
||||||
--include-tag ciGroup6 \
|
|
||||||
--include-tag ciGroup7 \
|
|
||||||
--include-tag ciGroup8 \
|
|
||||||
--include-tag ciGroup9 \
|
|
||||||
--include-tag ciGroup10 \
|
|
||||||
--include-tag ciGroup11 \
|
|
||||||
--include-tag ciGroup12 \
|
|
||||||
--include-tag ciGroup13 \
|
|
||||||
--include-tag ciGroupDocker
|
|
||||||
|
|
||||||
echo " -> building and extracting default Kibana distributable for use in functional tests"
|
|
||||||
cd "$KIBANA_DIR"
|
|
||||||
node scripts/build --debug --no-oss
|
|
||||||
|
|
||||||
echo " -> shipping metrics from build to ci-stats"
|
|
||||||
node scripts/ship_ci_stats \
|
|
||||||
--metrics target/optimizer_bundle_metrics.json \
|
|
||||||
--metrics node_modules/@kbn/ui-shared-deps/shared_built_assets/metrics.json
|
|
||||||
|
|
||||||
linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')"
|
|
||||||
installDir="$KIBANA_DIR/install/kibana"
|
|
||||||
mkdir -p "$installDir"
|
|
||||||
tar -xzf "$linuxBuild" -C "$installDir" --strip=1
|
|
||||||
|
|
||||||
mkdir -p "$WORKSPACE/kibana-build-xpack"
|
|
||||||
cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/
|
|
||||||
cp "$linuxBuild" "$WORKSPACE/kibana-default.tar.gz"
|
|
||||||
|
|
||||||
mkdir -p "$WORKSPACE/kibana-build-xpack"
|
|
||||||
cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/
|
|
||||||
|
|
||||||
echo " -> Archive built plugins"
|
|
||||||
shopt -s globstar
|
|
||||||
tar -zcf \
|
|
||||||
"$WORKSPACE/kibana-default-plugins.tar.gz" \
|
|
||||||
x-pack/plugins/**/target/public \
|
|
||||||
x-pack/test/**/target/public \
|
|
||||||
examples/**/target/public \
|
|
||||||
x-pack/examples/**/target/public \
|
|
||||||
test/**/target/public
|
|
||||||
shopt -u globstar
|
|
|
@ -17,7 +17,7 @@ export default function ({ getService }) {
|
||||||
|
|
||||||
await supertest.get('/').expect('location', url).expect(302);
|
await supertest.get('/').expect('location', url).expect(302);
|
||||||
|
|
||||||
await supertest.get('/').redirects(1).expect('location', '/app/home').expect(302);
|
await supertest.get('/').redirects(1).expect('location', '/spaces/enter').expect(302);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,26 +286,17 @@ def doSetup() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def buildOss(maxWorkers = '') {
|
|
||||||
notifyOnError {
|
|
||||||
withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) {
|
|
||||||
runbld("./test/scripts/jenkins_build_kibana.sh", "Build OSS/Default Kibana")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def getBuildArtifactBucket() {
|
def getBuildArtifactBucket() {
|
||||||
def dir = env.ghprbPullId ? "pr-${env.ghprbPullId}" : buildState.get('checkoutInfo').branch.replace("/", "__")
|
def dir = env.ghprbPullId ? "pr-${env.ghprbPullId}" : buildState.get('checkoutInfo').branch.replace("/", "__")
|
||||||
return "gs://ci-artifacts.kibana.dev/default-build/${dir}/${buildState.get('checkoutInfo').commit}"
|
return "gs://ci-artifacts.kibana.dev/default-build/${dir}/${buildState.get('checkoutInfo').commit}"
|
||||||
}
|
}
|
||||||
|
|
||||||
def buildXpack(maxWorkers = '', uploadArtifacts = false) {
|
def buildKibana(maxWorkers = '') {
|
||||||
notifyOnError {
|
notifyOnError {
|
||||||
withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) {
|
withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) {
|
||||||
runbld("./test/scripts/jenkins_xpack_build_kibana.sh", "Build X-Pack Kibana")
|
runbld("./test/scripts/jenkins_build_kibana.sh", "Build Kibana")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uploadArtifacts) {
|
|
||||||
withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') {
|
withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') {
|
||||||
bash("""
|
bash("""
|
||||||
cd "${env.WORKSPACE}"
|
cd "${env.WORKSPACE}"
|
||||||
|
@ -315,7 +306,6 @@ def buildXpack(maxWorkers = '', uploadArtifacts = false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
def downloadDefaultBuildArtifacts() {
|
def downloadDefaultBuildArtifacts() {
|
||||||
withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') {
|
withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') {
|
||||||
|
@ -426,14 +416,10 @@ def withDocker(Closure closure) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
def buildOssPlugins() {
|
def buildPlugins() {
|
||||||
runbld('./test/scripts/jenkins_build_plugins.sh', 'Build OSS Plugins')
|
runbld('./test/scripts/jenkins_build_plugins.sh', 'Build OSS Plugins')
|
||||||
}
|
}
|
||||||
|
|
||||||
def buildXpackPlugins() {
|
|
||||||
runbld('./test/scripts/jenkins_xpack_build_plugins.sh', 'Build X-Pack Plugins')
|
|
||||||
}
|
|
||||||
|
|
||||||
def withTasks(Map params = [:], Closure closure) {
|
def withTasks(Map params = [:], Closure closure) {
|
||||||
catchErrors {
|
catchErrors {
|
||||||
def config = [setupWork: {}, worker: [:], parallel: 24] + params
|
def config = [setupWork: {}, worker: [:], parallel: 24] + params
|
||||||
|
@ -449,8 +435,7 @@ def withTasks(Map params = [:], Closure closure) {
|
||||||
},
|
},
|
||||||
|
|
||||||
// There are integration tests etc that require the plugins to be built first, so let's go ahead and build them before set up the parallel workspaces
|
// There are integration tests etc that require the plugins to be built first, so let's go ahead and build them before set up the parallel workspaces
|
||||||
ossPlugins: { buildOssPlugins() },
|
plugins: { buildPlugins() },
|
||||||
xpackPlugins: { buildXpackPlugins() },
|
|
||||||
])
|
])
|
||||||
|
|
||||||
config.setupWork()
|
config.setupWork()
|
||||||
|
@ -470,8 +455,11 @@ def allCiTasks() {
|
||||||
tasks.check()
|
tasks.check()
|
||||||
tasks.lint()
|
tasks.lint()
|
||||||
tasks.test()
|
tasks.test()
|
||||||
|
task {
|
||||||
|
buildKibana(16)
|
||||||
tasks.functionalOss()
|
tasks.functionalOss()
|
||||||
tasks.functionalXpack()
|
tasks.functionalXpack()
|
||||||
|
}
|
||||||
tasks.storybooksCi()
|
tasks.storybooksCi()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -54,8 +54,8 @@ def xpackCiGroupDocker() {
|
||||||
kibanaPipeline.downloadDefaultBuildArtifacts()
|
kibanaPipeline.downloadDefaultBuildArtifacts()
|
||||||
kibanaPipeline.bash("""
|
kibanaPipeline.bash("""
|
||||||
cd '${env.WORKSPACE}'
|
cd '${env.WORKSPACE}'
|
||||||
mkdir -p kibana-build-xpack
|
mkdir -p kibana-build
|
||||||
tar -xzf kibana-default.tar.gz -C kibana-build-xpack --strip=1
|
tar -xzf kibana-default.tar.gz -C kibana-build --strip=1
|
||||||
tar -xzf kibana-default-plugins.tar.gz -C kibana
|
tar -xzf kibana-default-plugins.tar.gz -C kibana
|
||||||
""", "Extract Default Build artifacts")
|
""", "Extract Default Build artifacts")
|
||||||
kibanaPipeline.xpackCiGroupProcess('Docker', true)()
|
kibanaPipeline.xpackCiGroupProcess('Docker', true)()
|
||||||
|
@ -74,8 +74,6 @@ def functionalOss(Map params = [:]) {
|
||||||
]
|
]
|
||||||
|
|
||||||
task {
|
task {
|
||||||
kibanaPipeline.buildOss(6)
|
|
||||||
|
|
||||||
if (config.ciGroups) {
|
if (config.ciGroups) {
|
||||||
ossCiGroups()
|
ossCiGroups()
|
||||||
}
|
}
|
||||||
|
@ -114,8 +112,6 @@ def functionalXpack(Map params = [:]) {
|
||||||
]
|
]
|
||||||
|
|
||||||
task {
|
task {
|
||||||
kibanaPipeline.buildXpack(10, true)
|
|
||||||
|
|
||||||
if (config.ciGroups) {
|
if (config.ciGroups) {
|
||||||
xpackCiGroups()
|
xpackCiGroups()
|
||||||
xpackCiGroupDocker()
|
xpackCiGroupDocker()
|
||||||
|
|
|
@ -10,12 +10,8 @@ import expect from '@kbn/expect';
|
||||||
export default function ({ getService }) {
|
export default function ({ getService }) {
|
||||||
const supertestNoAuth = getService('supertestWithoutAuth');
|
const supertestNoAuth = getService('supertestWithoutAuth');
|
||||||
const supertest = getService('supertest');
|
const supertest = getService('supertest');
|
||||||
const esArchiver = getService('esArchiver');
|
|
||||||
|
|
||||||
describe('telemetry API', () => {
|
describe('telemetry API', () => {
|
||||||
before(() => esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'));
|
|
||||||
after(() => esArchiver.unload('x-pack/test/functional/es_archives/empty_kibana'));
|
|
||||||
|
|
||||||
describe('no auth', () => {
|
describe('no auth', () => {
|
||||||
it('should return 401', async () => {
|
it('should return 401', async () => {
|
||||||
return supertestNoAuth
|
return supertestNoAuth
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue