Skip to content

Commit

Permalink
EsArchiver: support for injecting kibana version and use it for space…
Browse files Browse the repository at this point in the history
…s tests (elastic#94420)

* EsArchiver: support for injecting kibana version and use it for speeding up spaces tests

* Use kbn/utils to get current kibana version in tests

* Review feedback: improve test by splitting variable over chunks
# Conflicts:
#	x-pack/test/functional/es_archives/saved_objects_management/spaces_integration/mappings.json
#	x-pack/test/saved_object_api_integration/common/fixtures/es_archiver/saved_objects/spaces/mappings.json
#	x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/mappings.json
  • Loading branch information
rudolf committed Mar 21, 2021
1 parent 17cdb81 commit 940c4be
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 9 deletions.
36 changes: 33 additions & 3 deletions packages/kbn-es-archiver/src/lib/archives/parse.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@
import Stream, { PassThrough, Readable, Writable, Transform } from 'stream';
import { createGzip } from 'zlib';

import { createConcatStream, createListStream, createPromiseFromStreams } from '@kbn/utils';
import {
createConcatStream,
createListStream,
createPromiseFromStreams,
kibanaPackageJson,
} from '@kbn/utils';

import { createParseArchiveStreams } from './parse';

Expand Down Expand Up @@ -54,6 +59,17 @@ describe('esArchiver createParseArchiveStreams', () => {
expect(output).toEqual([{ a: 1 }, 1]);
});

it('replaces $KIBANA_PACKAGE_VERSION with the current kibana version', async () => {
const output = await createPromiseFromStreams([
createListStream([
Buffer.from('{"$KIBANA'),
Buffer.from('_PACKAGE_VERSION": "enabled"}'),
]),
...createParseArchiveStreams({ gzip: false }),
]);
return expect(output).toEqual({ [kibanaPackageJson.version]: 'enabled' });
});

it('provides each JSON object as soon as it is parsed', async () => {
let onReceived: (resolved: any) => void;
const receivedPromise = new Promise((resolve) => (onReceived = resolve));
Expand All @@ -74,11 +90,13 @@ describe('esArchiver createParseArchiveStreams', () => {
createConcatStream([]),
] as [Readable, ...Writable[]]);

input.write(Buffer.from('{"a": 1}\n\n{"a":'));
// before emitting a result, the buffer waits until it at least receives toReplace.length bytes
// so we need a long second object to ensure that the first gets emitted.
input.write(Buffer.from('{"a": 1}\n\n{"propertyNameLongerThanToReplace":'));
expect(await receivedPromise).toEqual({ a: 1 });
input.write(Buffer.from('2}'));
input.end();
expect(await finalPromise).toEqual([{ a: 1 }, { a: 2 }]);
expect(await finalPromise).toEqual([{ a: 1 }, { propertyNameLongerThanToReplace: 2 }]);
});
});

Expand Down Expand Up @@ -136,6 +154,18 @@ describe('esArchiver createParseArchiveStreams', () => {

expect(output).toEqual([{ a: 1 }, { a: 2 }]);
});

it('replaces $KIBANA_PACKAGE_VERSION with the current kibana version', async () => {
const output = await createPromiseFromStreams([
createListStream([
Buffer.from('{"$KIBANA_PACKAGE'),
Buffer.from('_VERSION": "enabled"}'),
]),
createGzip(),
...createParseArchiveStreams({ gzip: true }),
]);
return expect(output).toEqual({ [kibanaPackageJson.version]: 'enabled' });
});
});

it('parses blank files', async () => {
Expand Down
2 changes: 2 additions & 0 deletions packages/kbn-es-archiver/src/lib/archives/parse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
createSplitStream,
createReplaceStream,
createMapStream,
kibanaPackageJson,
} from '@kbn/utils';

import { RECORD_SEPARATOR } from './constants';
Expand All @@ -21,6 +22,7 @@ export function createParseArchiveStreams({ gzip = false } = {}) {
return [
gzip ? createGunzip() : new PassThrough(),
createReplaceStream('\r\n', '\n'),
createReplaceStream('$KIBANA_PACKAGE_VERSION', kibanaPackageJson.version),
createSplitStream(RECORD_SEPARATOR),
createFilterStream<string>((l) => !!l.match(/[^\s]/)),
createMapStream<string>((json) => JSON.parse(json.trim())),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"type": "index",
"value": {
"aliases": {
".kibana_7.13.0": {},
".kibana_$KIBANA_PACKAGE_VERSION": {},
".kibana": {}
},
"index": ".kibana_7.13.0_001",
"index": ".kibana_$KIBANA_PACKAGE_VERSION_001",
"mappings": {
"doc": {
"dynamic": "false",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"type": "index",
"value": {
"aliases": {
".kibana_7.13.0": {},
".kibana_$KIBANA_PACKAGE_VERSION": {},
".kibana": {}
},
"index": ".kibana_7.13.0_001",
"index": ".kibana_$KIBANA_PACKAGE_VERSION_001",
"mappings": {
"doc": {
"dynamic": "false",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"type": "index",
"value": {
"aliases": {
".kibana_7.13.0": {},
".kibana_$KIBANA_PACKAGE_VERSION": {},
".kibana": {}
},
"index": ".kibana_7.13.0_001",
"index": ".kibana_$KIBANA_PACKAGE_VERSION_001",
"mappings": {
"doc": {
"dynamic": "false",
Expand Down

0 comments on commit 940c4be

Please sign in to comment.